[ofa-general] Re: [PATCH] core/cm: improve request message interpretation of subnet local fields
Jim Hall
jhalljr at systemfabricworks.com
Mon Sep 17 11:07:38 PDT 2007
The issue is between the active CM (in this case Solaris) and passive OFED.
The SM doesn't look to be involved.
----- Original Message -----
From: "Sean Hefty" <mshefty at ichips.intel.com>
To: "Jim Hall" <jhalljr at systemfabricworks.com>
Cc: "Sean Hefty" <sean.hefty at intel.com>; <general at lists.openfabrics.org>
Sent: Monday, September 17, 2007 1:01 PM
Subject: Re: [ofa-general] Re: [PATCH] core/cm: improve request message
interpretation of subnet local fields
>> The problem arises when the active Solaris client is sending a connection
>> request to a passive OFED server instance. Solaris will set the hop_limit
>> field to 0xFF and will not expect or enable GRH routing. The subsequent
>> exchange of RC messages are therefore silently dropped since one side
>> expects GRH traffic and the other doesn't.
>
> Is this an issue with the SM setting the hop_limit to 0xff or the active
> CM? Currently the ib_cm sets the local_subnet value to 1 on the active
> side. I have a patch that sets it based on the hop_limit in the path
> record. I'm trying to determine if a more complicated solution will be
> needed for ib router support. (Those changes can be separate if needed.)
>
>> The active side seems to work ok for local only subnets so nothing needs
>> to be changed there.
>> Here is an updated patch:
>> When parsing a CMA connect request message, if the subnet local is 1
>> (both nodes on same subnet), then explicitly set the hop limit in
>> the corresponding path record to 1.
>> This avoids a Global/Local mis-configuration problem with Solaris
>> infinband CMA sessions. Signed-off-by: Jim L Hall
>> <jhalljr at systemfabricworks.com
>
> Acked-by: Sean Hefty <sean.hefty at intel.com>
>
>> <mailto:jhalljr at systemfabricworks.com>>
>> ---
>> drivers/infiniband/core/cm.c | 10 ++++++++--
>> 1 files changed, 8 insertions(+), 2 deletions(-)
>> diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
>> index d446998..25a77ec 100644
>> --- a/drivers/infiniband/core/cm.c
>> +++ b/drivers/infiniband/core/cm.c
>> @@ -1095,7 +1095,10 @@ static void cm_format_paths_from_req(struct
>> cm_req_msg *req_msg,
>> primary_path->dlid = req_msg->primary_local_lid;
>> primary_path->slid = req_msg->primary_remote_lid;
>> primary_path->flow_label =
>> cm_req_get_primary_flow_label(req_msg);
>> - primary_path->hop_limit = req_msg->primary_hop_limit;
>> + if (cm_req_get_primary_subnet_local(req_msg) == 1)
>> + primary_path->hop_limit = 1;
>> + else
>> + primary_path->hop_limit = req_msg->primary_hop_limit;
>> primary_path->traffic_class = req_msg->primary_traffic_class;
>> primary_path->reversible = 1;
>> primary_path->pkey = req_msg->pkey;
>> @@ -1116,7 +1119,10 @@ static void cm_format_paths_from_req(struct
>> cm_req_msg *req_msg,
>> alt_path->dlid = req_msg->alt_local_lid;
>> alt_path->slid = req_msg->alt_remote_lid;
>> alt_path->flow_label =
>> cm_req_get_alt_flow_label(req_msg);
>> - alt_path->hop_limit = req_msg->alt_hop_limit;
>> + if (cm_req_get_alt_subnet_local(req_msg) == 1)
>> + alt_path->hop_limit = 1;
>> + else
>> + alt_path->hop_limit = req_msg->alt_hop_limit;
>> alt_path->traffic_class = req_msg->alt_traffic_class;
>> alt_path->reversible = 1;
>> alt_path->pkey = req_msg->pkey;
>>
>
More information about the general
mailing list