<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2873" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=415183513-10072006>Hi 
Fab,</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=415183513-10072006>One of our customers 
has saw an issue that prevented the new code from joining to clusters were old 
Linux installations exists.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=415183513-10072006>The problem is 
related to joining to existing broadcast groups on IPOIB.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=415183513-10072006>As the problem is in 
the old code, I have prepared a fix that is dependent on a registry key and will 
not be run by default.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=415183513-10072006>As for the second 
issue (parameters for joining a group  mcast_req.member_rec.mtu = 
0; mcast_req.member_rec.rate = 0; ). </SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=415183513-10072006>This is the way that 
Linux gen 2 is using, so I suggest that we will always use it like 
this.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006>Thanks</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006>Tzachi</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=415183513-10072006></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=415183513-10072006>Index: 
ipoib_driver.c<BR>===================================================================<BR>--- 
ipoib_driver.c (revision 1524)<BR>+++ ipoib_driver.c (working 
copy)<BR>@@ -321,7 +321,7 
@@<BR> {<BR>  NTSTATUS      status;<BR>  /* 
Remember the terminating entry in the table below. 
*/<BR>- RTL_QUERY_REGISTRY_TABLE  table[3];<BR>+ RTL_QUERY_REGISTRY_TABLE  table[4];<BR>  UNICODE_STRING     param_path;<BR> <BR>  IPOIB_ENTER( 
IPOIB_DBG_INIT );<BR>@@ -360,6 +360,13 @@<BR>  table[1].DefaultData = 
&g_ipoib_dbg_flags;<BR>  table[1].DefaultLength = 
sizeof(ULONG);<BR> <BR>+ table[2].Flags = 
RTL_QUERY_REGISTRY_DIRECT;<BR>+ table[2].Name = 
L"bypass_check_bcast_rate";<BR>+ table[2].EntryContext = 
&g_ipoib.bypass_check_bcast_rate;<BR>+ table[2].DefaultType = 
REG_DWORD;<BR>+ table[2].DefaultData = 
&g_ipoib.bypass_check_bcast_rate;<BR>+ table[2].DefaultLength = 
sizeof(ULONG);<BR>+<BR>  /* Have at it! */<BR>  status = 
RtlQueryRegistryValues( RTL_REGISTRY_ABSOLUTE, 
<BR>   param_path.Buffer, table, NULL, NULL );<BR>Index: 
ipoib_driver.h<BR>===================================================================<BR>--- 
ipoib_driver.h (revision 1524)<BR>+++ ipoib_driver.h (working 
copy)<BR>@@ -73,6 +73,7 
@@<BR>  NDIS_HANDLE  h_ndis_wrapper;<BR>  NDIS_HANDLE  h_ibat_dev;<BR>  volatile 
LONG ibat_ref;<BR>+ uint32_t  bypass_check_bcast_rate;<BR> <BR> } ipoib_globals_t;<BR> /*<BR>Index: 
ipoib_port.c<BR>===================================================================<BR>--- 
ipoib_port.c (revision 1524)<BR>+++ ipoib_port.c (working copy)<BR>@@ 
-4813,7 +4813,8 @@<BR>  IPOIB_ENTER( IPOIB_DBG_MCAST 
);<BR> <BR>  /* Check that the rate is realizable for our port. 
*/<BR>- if( p_port->ib_mgr.rate < (p_member_rec->rate & 0x3F) 
)<BR>+ if( p_port->ib_mgr.rate < (p_member_rec->rate & 0x3F) 
&&<BR>+  (g_ipoib.bypass_check_bcast_rate == 
0))<BR>  {<BR>   /*<BR>    * The MC 
group rate is higher than our port's rate.  Log an error<BR>@@ -4825,7 
+4826,7 @@<BR>    EVENT_IPOIB_BCAST_RATE, 
2,<BR>    (uint32_t)(p_member_rec->rate & 
0x3F),<BR>    (uint32_t)p_port->ib_mgr.rate 
);<BR>-  return IB_ERROR;<BR>+   return 
IB_ERROR;<BR>  }<BR> <BR>  /* Join the broadcast group. 
*/<BR>@@ -5226,6 +5227,8 @@<BR>  mcast_req.member_rec = 
p_port->ib_mgr.bcast_rec;<BR>  /* Clear fields that aren't 
specified in the join */<BR>  mcast_req.member_rec.mlid = 
0;<BR>+ mcast_req.member_rec.mtu = 0;<BR>+ mcast_req.member_rec.rate = 
0; <BR> <BR>  if( mac.addr[0] == 1 && mac.addr[1] == 
0 && mac.addr[2] == 0x5E )<BR>  {<BR>Index: 
netipoib.inf<BR>===================================================================<BR>--- 
netipoib.inf (revision 1524)<BR>+++ netipoib.inf (working copy)<BR>@@ 
-152,6 +152,7 
@@<BR> [Ipoib.ParamsReg]<BR> HKR,"Parameters","DebugLevel",%REG_DWORD_NO_CLOBBER%,0x00000002<BR> HKR,"Parameters","DebugFlags",%REG_DWORD_NO_CLOBBER%,0x00000fff<BR>+HKR,"Parameters","bypass_check_bcast_rate",%REG_DWORD_NO_CLOBBER%,0x00000000<BR> <BR> [IpoibEventLog]<BR> AddReg 
= IpoibAddEventLogReg<BR></SPAN></FONT></DIV></BODY></HTML>