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

Commit c6a7ec7a authored by Roland Dreier's avatar Roland Dreier
Browse files

Revert "IPoIB: Make the carrier_on_task race aware"



This reverts commit 67d7209e.

The series of IPoIB bug fixes that went into 3.19-rc1 introduce
regressions, and after trying to sort things out, we decided to revert
to 3.18's IPoIB driver and get things right for 3.20.

Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
parent e7a623d2
Loading
Loading
Loading
Loading
+6 −15
Original line number Diff line number Diff line
@@ -353,27 +353,18 @@ void ipoib_mcast_carrier_on_task(struct work_struct *work)
						   carrier_on_task);
	struct ib_port_attr attr;

	if (ib_query_port(priv->ca, priv->port, &attr) ||
	    attr.state != IB_PORT_ACTIVE) {
		ipoib_dbg(priv, "Keeping carrier off until IB port is active\n");
		return;
	}

	/*
	 * Take rtnl_lock to avoid racing with ipoib_stop() and
	 * turning the carrier back on while a device is being
	 * removed.  However, ipoib_stop() will attempt to flush
	 * the workqueue while holding the rtnl lock, so loop
	 * on trylock until either we get the lock or we see
	 * FLAG_ADMIN_UP go away as that signals that we are bailing
	 * and can safely ignore the carrier on work
	 * removed.
	 */
	while (!rtnl_trylock()) {
		if (!test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
	if (ib_query_port(priv->ca, priv->port, &attr) ||
	    attr.state != IB_PORT_ACTIVE) {
		ipoib_dbg(priv, "Keeping carrier off until IB port is active\n");
		return;
		else
			msleep(20);
	}

	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);