Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit afe1de66 authored by Doug Ledford's avatar Doug Ledford Committed by Roland Dreier
Browse files

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: default avatarDoug Ledford <dledford@redhat.com>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent 70e71ca0
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -190,12 +190,6 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
		spin_unlock_irq(&priv->lock);
		priv->tx_wr.wr.ud.remote_qkey = priv->qkey;
		set_qkey = 1;

		if (!ipoib_cm_admin_enabled(dev)) {
			rtnl_lock();
			dev_set_mtu(dev, min(priv->mcast_mtu, priv->admin_mtu));
			rtnl_unlock();
		}
	}

	if (!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
@@ -371,6 +365,8 @@ void ipoib_mcast_carrier_on_task(struct work_struct *work)
	}

	rtnl_lock();
	if (!ipoib_cm_admin_enabled(priv->dev))
		dev_set_mtu(priv->dev, min(priv->mcast_mtu, priv->admin_mtu));
	netif_carrier_on(priv->dev);
	rtnl_unlock();
}