[ofa-general] RE: [PATCH] core/cm: improve request message interpretation of subnet local fields

Sean Hefty sean.hefty at intel.com
Mon Sep 17 10:10:57 PDT 2007


(I don't think this made it to the mailng list, so re-posting.)

 

I don't disagree with the concept here, but can you explain the problem that
you're seeing?  Is it that the path is assumed to be routed based on the
hop_limit (set in ib_init_ah_from_path)?  Are any changes needed for active side
processing?

 

Btw, I'd prefer something more like:

 

if (cm_req_get_primary_subnet_local. )

            primary_path->hop_limit = 1;

else

            primary_path->hop_limit = req_msg->primary_hop_limit;

 

(or '? :' equivalent), versus setting hop_limit, then overriding it in the
common case.  And I'm fine if we don't keep the comment.

 

- Sean

 

  _____  

From: Jim Hall [mailto:jhalljr at systemfabricworks.com] 
Sent: Monday, September 17, 2007 7:38 AM
To: general at openfabrics
Cc: Hefty, Sean
Subject: [PATCH] core/cm: improve request message interpertation of subnet local
fields

 

  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 < <mailto:jhalljr at systemfabricworks.com>
jhalljr at systemfabricworks.com>
---
 drivers/infiniband/core/cm.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

 

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index d446998..3d8740c 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -1109,6 +1109,14 @@ static void cm_format_paths_from_req(struct cm_req_msg
*req_msg,
                cm_req_get_primary_local_ack_timeout(req_msg);
        primary_path->packet_life_time -= (primary_path->packet_life_time > 0);

 

+       if (cm_req_get_primary_subnet_local(req_msg) == 1) {
+
+               /* At this point we know that both sides are on the same
+                * subnet, any hop limits above 1 don't make much sense
+                */
+               primary_path->hop_limit = 1;
+       }
+
        if (req_msg->alt_local_lid) {
                memset(alt_path, 0, sizeof *alt_path);
                alt_path->dgid = req_msg->alt_local_gid;
@@ -1129,6 +1137,14 @@ static void cm_format_paths_from_req(struct cm_req_msg
*req_msg,
                alt_path->packet_life_time =
                        cm_req_get_alt_local_ack_timeout(req_msg);
                alt_path->packet_life_time -= (alt_path->packet_life_time > 0);
+
+               if (cm_req_get_alt_subnet_local(req_msg) == 1) {
+
+                       /* At this point we know that both sides are on the same
+                        * subnet, any hop limits above 1 don't make much sense
+                        */
+                       alt_path->hop_limit = 1;
+               }
        }
 }


 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20070917/8535c50d/attachment.html>


More information about the general mailing list