[Openib-windows] Interoperability of the current stack and the Linux 1.8.X stack

Tzachi Dar tzachid at mellanox.co.il
Mon Jul 10 06:42:58 PDT 2006


Hi Fab,
 
One of our customers has saw an issue that prevented the new code from
joining to clusters were old Linux installations exists.
 
The problem is related to joining to existing broadcast groups on IPOIB.
 
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.
 
 
As for the second issue (parameters for joining a group
mcast_req.member_rec.mtu = 0; mcast_req.member_rec.rate = 0; ). 
This is the way that Linux gen 2 is using, so I suggest that we will
always use it like this.
 
Thanks
Tzachi
 
Index: ipoib_driver.c
===================================================================
--- ipoib_driver.c (revision 1524)
+++ ipoib_driver.c (working copy)
@@ -321,7 +321,7 @@
 {
  NTSTATUS      status;
  /* Remember the terminating entry in the table below. */
- RTL_QUERY_REGISTRY_TABLE  table[3];
+ RTL_QUERY_REGISTRY_TABLE  table[4];
  UNICODE_STRING     param_path;
 
  IPOIB_ENTER( IPOIB_DBG_INIT );
@@ -360,6 +360,13 @@
  table[1].DefaultData = &g_ipoib_dbg_flags;
  table[1].DefaultLength = sizeof(ULONG);
 
+ table[2].Flags = RTL_QUERY_REGISTRY_DIRECT;
+ table[2].Name = L"bypass_check_bcast_rate";
+ table[2].EntryContext = &g_ipoib.bypass_check_bcast_rate;
+ table[2].DefaultType = REG_DWORD;
+ table[2].DefaultData = &g_ipoib.bypass_check_bcast_rate;
+ table[2].DefaultLength = sizeof(ULONG);
+
  /* Have at it! */
  status = RtlQueryRegistryValues( RTL_REGISTRY_ABSOLUTE, 
   param_path.Buffer, table, NULL, NULL );
Index: ipoib_driver.h
===================================================================
--- ipoib_driver.h (revision 1524)
+++ ipoib_driver.h (working copy)
@@ -73,6 +73,7 @@
  NDIS_HANDLE  h_ndis_wrapper;
  NDIS_HANDLE  h_ibat_dev;
  volatile LONG ibat_ref;
+ uint32_t  bypass_check_bcast_rate;
 
 } ipoib_globals_t;
 /*
Index: ipoib_port.c
===================================================================
--- ipoib_port.c (revision 1524)
+++ ipoib_port.c (working copy)
@@ -4813,7 +4813,8 @@
  IPOIB_ENTER( IPOIB_DBG_MCAST );
 
  /* Check that the rate is realizable for our port. */
- if( p_port->ib_mgr.rate < (p_member_rec->rate & 0x3F) )
+ if( p_port->ib_mgr.rate < (p_member_rec->rate & 0x3F) &&
+  (g_ipoib.bypass_check_bcast_rate == 0))
  {
   /*
    * The MC group rate is higher than our port's rate.  Log an error
@@ -4825,7 +4826,7 @@
    EVENT_IPOIB_BCAST_RATE, 2,
    (uint32_t)(p_member_rec->rate & 0x3F),
    (uint32_t)p_port->ib_mgr.rate );
-  return IB_ERROR;
+   return IB_ERROR;
  }
 
  /* Join the broadcast group. */
@@ -5226,6 +5227,8 @@
  mcast_req.member_rec = p_port->ib_mgr.bcast_rec;
  /* Clear fields that aren't specified in the join */
  mcast_req.member_rec.mlid = 0;
+ mcast_req.member_rec.mtu = 0;
+ mcast_req.member_rec.rate = 0; 
 
  if( mac.addr[0] == 1 && mac.addr[1] == 0 && mac.addr[2] == 0x5E )
  {
Index: netipoib.inf
===================================================================
--- netipoib.inf (revision 1524)
+++ netipoib.inf (working copy)
@@ -152,6 +152,7 @@
 [Ipoib.ParamsReg]
 HKR,"Parameters","DebugLevel",%REG_DWORD_NO_CLOBBER%,0x00000002
 HKR,"Parameters","DebugFlags",%REG_DWORD_NO_CLOBBER%,0x00000fff
+HKR,"Parameters","bypass_check_bcast_rate",%REG_DWORD_NO_CLOBBER%,0x000
00000
 
 [IpoibEventLog]
 AddReg = IpoibAddEventLogReg

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20060710/1fe07ee3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: opensm18.patch
Type: application/octet-stream
Size: 2810 bytes
Desc: opensm18.patch
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20060710/1fe07ee3/attachment.obj>


More information about the ofw mailing list