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" <[EMAIL PROTECTED]>
To: "Jim Hall" <[EMAIL PROTECTED]>
Cc: "Sean Hefty" <[EMAIL PROTECTED]>; <[email protected]>
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
<[EMAIL PROTECTED]
Acked-by: Sean Hefty <[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED]>>
---
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;
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general