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

Commit fe25c561 authored by Yossi Etigin's avatar Yossi Etigin Committed by Roland Dreier
Browse files

IPoIB: Don't enable NAPI when it's already enabled



If a P_Key is not present when an interface is created, ipoib_open()
will return after doing napi_enable().  ipoib_open() will be called
again from ipoib_pkey_poll() when the P_Key appears, after NAPI has
already been enabled, and try to enable it again. This triggers a
BUG_ON() in napi_enable().

Fix this by moving the call to napi_enable() to after the test for
P_Key presence.

Signed-off-by: default avatarYossi Etigin <yosefe@voltaire.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 332edc2f
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -106,12 +106,13 @@ int ipoib_open(struct net_device *dev)


	ipoib_dbg(priv, "bringing up interface\n");
	ipoib_dbg(priv, "bringing up interface\n");


	napi_enable(&priv->napi);
	set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags);
	set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags);


	if (ipoib_pkey_dev_delay_open(dev))
	if (ipoib_pkey_dev_delay_open(dev))
		return 0;
		return 0;


	napi_enable(&priv->napi);

	if (ipoib_ib_dev_open(dev)) {
	if (ipoib_ib_dev_open(dev)) {
		napi_disable(&priv->napi);
		napi_disable(&priv->napi);
		return -EINVAL;
		return -EINVAL;