[ipoib] Always set the "full membership" bit in the IPv4 broadcast GID
authorMichael Brown <mcb30@etherboot.org>
Fri, 13 Nov 2009 19:10:13 +0000 (19:10 +0000)
committerMichael Brown <mcb30@etherboot.org>
Mon, 16 Nov 2009 22:14:58 +0000 (22:14 +0000)
The SM always creates the IPoIB multicast groups with full membership
partition keys.

src/drivers/net/ipoib.c
src/include/gpxe/infiniband.h

index 06e6a2c..b833891 100644 (file)
@@ -708,7 +708,8 @@ void ipoib_link_state_changed ( struct ib_device *ibdev ) {
                 sizeof ( mac->gid.u.half[0] ) );
 
        /* Update broadcast GID based on potentially-new partition key */
-       ipoib->broadcast.gid.u.words[2] = htons ( ibdev->pkey );
+       ipoib->broadcast.gid.u.words[2] =
+               htons ( ibdev->pkey | IB_PKEY_FULL );
 
        /* Set net device link state to reflect Infiniband link state */
        rc = ib_link_rc ( ibdev );
index a12e403..70b930d 100644 (file)
@@ -33,6 +33,9 @@ FILE_LICENCE ( GPL2_OR_LATER );
 /** Default Infiniband partition key */
 #define IB_PKEY_DEFAULT 0xffff
 
+/** Infiniband partition key full membership flag */
+#define IB_PKEY_FULL 0x8000
+
 /**
  * Maximum payload size
  *