[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