<!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>