aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
diff options
context:
space:
mode:
authorShirley Ma <xma@us.ibm.com>2007-03-08 14:59:30 -0800
committerRoland Dreier <rolandd@cisco.com>2007-03-08 14:59:30 -0800
commit55c9adde13dfc6b738e0f70c071a0622e52f35ed (patch)
tree32da4f2f1eb7b80589077e00860e84b2836b023b /drivers/infiniband/ulp/ipoib/ipoib_multicast.c
parent3492856e33da734501f2bdd8656cbfdf61f60330 (diff)
downloadkernel_samsung_smdk4412-55c9adde13dfc6b738e0f70c071a0622e52f35ed.zip
kernel_samsung_smdk4412-55c9adde13dfc6b738e0f70c071a0622e52f35ed.tar.gz
kernel_samsung_smdk4412-55c9adde13dfc6b738e0f70c071a0622e52f35ed.tar.bz2
IPoIB: Turn on interface's carrier after broadcast group is joined
Do netif_carrier_on() right after the IPv4 broadcast multicast group is joined, rather than waiting for all of the initial set of multicast group joins to finish. This allows at least IPv4 traffic to limp along on broken fabrics where not all multicast groups can be joined. Signed-off-by: Shirley Ma <xma@us.ibm.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_multicast.c')
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_multicast.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index bb2e3d5..56c87a8 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -407,6 +407,10 @@ static int ipoib_mcast_join_complete(int status,
queue_delayed_work(ipoib_workqueue,
&priv->mcast_task, 0);
mutex_unlock(&mcast_mutex);
+
+ if (mcast == priv->broadcast)
+ netif_carrier_on(dev);
+
return 0;
}
@@ -594,7 +598,6 @@ void ipoib_mcast_join_task(struct work_struct *work)
ipoib_dbg_mcast(priv, "successfully joined all multicast groups\n");
clear_bit(IPOIB_MCAST_RUN, &priv->flags);
- netif_carrier_on(dev);
}
int ipoib_mcast_start_thread(struct net_device *dev)