<html><body>
<p>Hello, Roalnd,<br>
<br>
According to IPoIB RFC4391 section 5, once IPoIB broacast group has been joined, the interface should be ready for data transfer. Below patch is going to enable IPoIB carrier only if broadcast join successfully. Any other multicast join failure shouldn't prevent IPoIB interface from ready transferring data.<br>
<br>
This patch is built against 2.6.21-rc1 kernel. Please review it.<br>
<br>
Signed-off-by: Shirley Ma <xma@us.ibm.com><br>
<br>
diff -urpN ipoib/ipoib_multicast.c ipoib-link/ipoib_multicast.c<br>
--- ipoib/ipoib_multicast.c     2007-02-27 07:21:50.000000000 -0800<br>
+++ ipoib-link/ipoib_multicast.c        2007-02-27 07:52:10.000000000 -0800<br>
@@ -407,6 +407,11 @@ static int ipoib_mcast_join_complete(int<br>
                        queue_delayed_work(ipoib_workqueue,<br>
                                           &priv->mcast_task, 0);<br>
                mutex_unlock(&mcast_mutex);<br>
+               /*<br>
+                * broadcast join finished, enable carrier<br>
+                */<br>
+               if (unlikely(mcast == priv->broadcast))<br>
+                       netif_carrier_on(dev);<br>
                return 0;<br>
        }<br>
 <br>
@@ -596,7 +601,6 @@ void ipoib_mcast_join_task(struct work_s<br>
        ipoib_dbg_mcast(priv, "successfully joined all multicast groups\n");<br>
 <br>
        clear_bit(IPOIB_MCAST_RUN, &priv->flags);<br>
-       netif_carrier_on(dev);<br>
 }<br>
 <br>
 int ipoib_mcast_start_thread(struct net_device *dev)<br>
<br>
<i>(See attached file: ipoib-link.patch)</i><br>
<br>
Thanks<br>
Shirley Ma</body></html>