Re: [PATCH 04/11] IB/cm: Expose DGID in SIDR request events

Haggai Eran
2015-06-16T06:51:43Z

On 16/06/2015 00:32, Hefty, Sean wrote:
>> drivers/infiniband/core/cm.c | 7 +++++++
>> include/rdma/ib_cm.h | 2 ++
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
>> index c5f5f89e274a..46f99ec4080a 100644
>> --- a/drivers/infiniband/core/cm.c
>> +++ b/drivers/infiniband/core/cm.c
>> @@ -2983,6 +2983,13 @@ static void cm_format_sidr_req_event(struct cm_work
>> *work,
>> param->pkey = __be16_to_cpu(sidr_req_msg->pkey);
>> param->listen_id = listen_id;
>> param->service_id = sidr_req_msg->service_id;
>> + if (work->mad_recv_wc->wc->wc_flags & IB_WC_GRH) {
>> + param->grh = 1;
>> + memcpy(&param->dgid, &work->mad_recv_wc->recv_buf.grh->dgid,
>> + sizeof(param->dgid));
>> + } else {
>> + param->grh = 0;
>
> What is the use case here? Are you trying to sort by device? How does the GID of the GMP relate to the listen?

The idea is to allow SIDR request to be sorted by the GID, when we will
have alias GIDs for IPoIB.

Unlike the CM requests, SIDR requests do not contain the remote GID, so
I thought we could use the GID from the GRH and turn on GRH on such systems.