<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v =
"urn:schemas-microsoft-com:vml" xmlns:o =
"urn:schemas-microsoft-com:office:office" xmlns:w =
"urn:schemas-microsoft-com:office:word"><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16525" name=GENERATOR><!--[if !mso]>
<STYLE>v\:* {
BEHAVIOR: url(#default#VML)
}
o\:* {
BEHAVIOR: url(#default#VML)
}
w\:* {
BEHAVIOR: url(#default#VML)
}
.shape {
BEHAVIOR: url(#default#VML)
}
</STYLE>
<![endif]-->
<STYLE>
<!--
/* Font Definitions */
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman";}
a:link, span.MsoHyperlink
{color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{color:blue;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:Arial;
color:navy;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
{page:Section1;}
-->
</STYLE>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></HEAD>
<BODY lang=EN-US vLink=blue link=blue bgColor=white>
<DIV><FONT face=Arial size=2>Hi Sean,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>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. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>The active side seems to work ok for local only
subnets so nothing needs to be changed there. </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Here is an updated patch:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT size=2><FONT face="Courier New">Signed-off-by: Jim L Hall
<</FONT><A href="mailto:jhalljr@systemfabricworks.com"><FONT
face="Courier New">jhalljr@systemfabricworks.com</FONT></A><FONT
face="Courier New">><BR>---</FONT></FONT></DIV><FONT size=2>
<DIV><FONT face="Courier New"> drivers/infiniband/core/cm.c |
10 ++++++++--<BR> 1 files changed, 8 insertions(+), 2
deletions(-)</FONT></DIV>
<DIV><FONT face="Courier New"></FONT> </DIV>
<DIV><FONT face="Courier New">diff --git a/drivers/infiniband/core/cm.c
b/drivers/infiniband/core/cm.c<BR>index d446998..25a77ec 100644<BR>---
a/drivers/infiniband/core/cm.c<BR>+++ b/drivers/infiniband/core/cm.c<BR>@@
-1095,7 +1095,10 @@ static void cm_format_paths_from_req(struct cm_req_msg
*req_msg,<BR> primary_path->dlid =
req_msg->primary_local_lid;<BR>
primary_path->slid =
req_msg->primary_remote_lid;<BR>
primary_path->flow_label =
cm_req_get_primary_flow_label(req_msg);<BR>-
primary_path->hop_limit =
req_msg->primary_hop_limit;<BR>+ if
(cm_req_get_primary_subnet_local(req_msg) ==
1)<BR>+
primary_path->hop_limit = 1;<BR>+
else<BR>+
primary_path->hop_limit =
req_msg->primary_hop_limit;<BR>
primary_path->traffic_class =
req_msg->primary_traffic_class;<BR>
primary_path->reversible = 1;<BR>
primary_path->pkey = req_msg->pkey;<BR>@@ -1116,7 +1119,10 @@ static void
cm_format_paths_from_req(struct cm_req_msg
*req_msg,<BR>
alt_path->dlid =
req_msg->alt_local_lid;<BR>
alt_path->slid =
req_msg->alt_remote_lid;<BR>
alt_path->flow_label =
cm_req_get_alt_flow_label(req_msg);<BR>-
alt_path->hop_limit =
req_msg->alt_hop_limit;<BR>+
if (cm_req_get_alt_subnet_local(req_msg) ==
1)<BR>+
alt_path->hop_limit =
1;<BR>+
else<BR>+
alt_path->hop_limit =
req_msg->alt_hop_limit;<BR>
alt_path->traffic_class =
req_msg->alt_traffic_class;<BR>
alt_path->reversible =
1;<BR>
alt_path->pkey = req_msg->pkey;<BR></FONT></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Thanks,</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>- Jim H.</FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=sean.hefty@intel.com href="mailto:sean.hefty@intel.com">Sean
Hefty</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=jhalljr@systemfabricworks.com
href="mailto:jhalljr@systemfabricworks.com">'Jim Hall'</A> ; <A
title=general@lists.openfabrics.org
href="mailto:general@lists.openfabrics.org">general@lists.openfabrics.org</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Monday, September 17, 2007 12:10
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> RE: [PATCH] core/cm: improve
request message interpretation of subnet local fields</DIV>
<DIV><BR></DIV>
<DIV class=Section1>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">(I don’t think this
made it to the mailng list, so re-posting.)<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">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?<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Btw, I’d prefer
something more like:<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">if
(cm_req_get_primary_subnet_local… )<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">
primary_path->hop_limit = 1;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">else<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">
primary_path->hop_limit =
req_msg->primary_hop_limit;<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">(or ‘? :’
equivalent), versus setting hop_limit, then overriding it in the common
case. And I’m fine if we don’t keep the
comment.<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">-
Sean<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<DIV
style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: blue 1.5pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: medium none">
<DIV>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT
face="Times New Roman" size=3><SPAN style="FONT-SIZE: 12pt">
<HR tabIndex=-1 align=center width="100%" SIZE=2>
</SPAN></FONT></DIV>
<P class=MsoNormal><B><FONT face=Tahoma size=2><SPAN
style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT
face=Tahoma size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"> Jim
Hall [mailto:jhalljr@systemfabricworks.com] <BR><B><SPAN
style="FONT-WEIGHT: bold">Sent:</SPAN></B> Monday, September 17, 2007 7:38
AM<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B>
general@openfabrics<BR><B><SPAN style="FONT-WEIGHT: bold">Cc:</SPAN></B>
Hefty, Sean<BR><B><SPAN style="FONT-WEIGHT: bold">Subject:</SPAN></B> [PATCH]
core/cm: improve request message interpertation of subnet local
fields</SPAN></FONT><o:p></o:p></P></DIV>
<P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN
style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P>
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> When parsing a CMA
connect request message, if the subnet local is 1
</SPAN></FONT><o:p></o:p></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">(both nodes on same
subnet), then explicitly set the hop limit in
the corresponding</SPAN></FONT><o:p></o:p></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">path record to 1. This
avoids a Global/Local mis-configuration problem with Solaris
</SPAN></FONT><o:p></o:p></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">infinband CMA
sessions. </SPAN></FONT> <o:p></o:p></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN
style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Signed-off-by: Jim L
Hall <</SPAN></FONT><FONT size=2><SPAN style="FONT-SIZE: 10pt"><A
href="mailto:jhalljr@systemfabricworks.com"><FONT face="Courier New"><SPAN
style="FONT-FAMILY: 'Courier New'">jhalljr@systemfabricworks.com</SPAN></FONT></A></SPAN></FONT><FONT
face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">><BR>---<BR> drivers/infiniband/core/cm.c
| 16 ++++++++++++++++<BR> 1 files changed, 16 insertions(+),
0 deletions(-)</SPAN></FONT><o:p></o:p></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN
style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">diff --git
a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c<BR>index
d446998..3d8740c 100644<BR>--- a/drivers/infiniband/core/cm.c<BR>+++
b/drivers/infiniband/core/cm.c<BR>@@ -1109,6 +1109,14 @@ static void
cm_format_paths_from_req(struct cm_req_msg
*req_msg,<BR>
cm_req_get_primary_local_ack_timeout(req_msg);<BR>
primary_path->packet_life_time -= (primary_path->packet_life_time >
0);</SPAN></FONT><o:p></o:p></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Times New Roman" size=3><SPAN
style="FONT-SIZE: 12pt"> <o:p></o:p></SPAN></FONT></P></DIV>
<DIV>
<P class=MsoNormal><FONT face="Courier New" size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">+
if (cm_req_get_primary_subnet_local(req_msg) == 1)
{<BR>+<BR>+
/* At this point we know that both sides are on the
same<BR>+
* subnet, any hop limits above 1 don't make much
sense<BR>+
*/<BR>+
primary_path->hop_limit = 1;<BR>+
}<BR>+<BR> if
(req_msg->alt_local_lid)
{<BR>
memset(alt_path, 0, sizeof
*alt_path);<BR>
alt_path->dgid = req_msg->alt_local_gid;<BR>@@ -1129,6 +1137,14 @@
static void cm_format_paths_from_req(struct cm_req_msg
*req_msg,<BR>
alt_path->packet_life_time
=<BR>
cm_req_get_alt_local_ack_timeout(req_msg);<BR>
alt_path->packet_life_time -= (alt_path->packet_life_time >
0);<BR>+<BR>+
if (cm_req_get_alt_subnet_local(req_msg) == 1)
{<BR>+<BR>+
/* At this point we know that both sides are on the
same<BR>+
* subnet, any hop limits above 1 don't make much
sense<BR>+
*/<BR>+
alt_path->hop_limit =
1;<BR>+
}<BR>
}<BR> }</SPAN></FONT><o:p></o:p></P></DIV>
<DIV>
<P class=MsoNormal><FONT face=Arial size=2><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><BR></SPAN></FONT> <o:p></o:p></P></DIV></DIV></DIV></BLOCKQUOTE></BODY></HTML>