diff options
author | Doug Ledford <dledford@redhat.com> | 2014-12-10 11:46:58 -0500 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-12-15 21:11:14 -0500 |
commit | afe1de664ef3cb756e70938d99417dcbc6b1379a (patch) | |
tree | 0c365d70b5cdc5d612ae66bc25a84c190eb02062 | |
parent | 70e71ca0af244f48a5dcf56dc435243792e3a495 (diff) |
IPoIB: Consolidate rtnl_lock tasks in workqueue
Setting the MTU can safely be moved to the carrier_on_task, which keeps
us from needing to take the rtnl lock in the join_finish section.
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index ffb83b5f7e80..eee66d13e5b9 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -190,12 +190,6 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast, | |||
190 | spin_unlock_irq(&priv->lock); | 190 | spin_unlock_irq(&priv->lock); |
191 | priv->tx_wr.wr.ud.remote_qkey = priv->qkey; | 191 | priv->tx_wr.wr.ud.remote_qkey = priv->qkey; |
192 | set_qkey = 1; | 192 | set_qkey = 1; |
193 | |||
194 | if (!ipoib_cm_admin_enabled(dev)) { | ||
195 | rtnl_lock(); | ||
196 | dev_set_mtu(dev, min(priv->mcast_mtu, priv->admin_mtu)); | ||
197 | rtnl_unlock(); | ||
198 | } | ||
199 | } | 193 | } |
200 | 194 | ||
201 | if (!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) { | 195 | if (!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) { |
@@ -371,6 +365,8 @@ void ipoib_mcast_carrier_on_task(struct work_struct *work) | |||
371 | } | 365 | } |
372 | 366 | ||
373 | rtnl_lock(); | 367 | rtnl_lock(); |
368 | if (!ipoib_cm_admin_enabled(priv->dev)) | ||
369 | dev_set_mtu(priv->dev, min(priv->mcast_mtu, priv->admin_mtu)); | ||
374 | netif_carrier_on(priv->dev); | 370 | netif_carrier_on(priv->dev); |
375 | rtnl_unlock(); | 371 | rtnl_unlock(); |
376 | } | 372 | } |