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 | } |
