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: Yossi Etigin <yosefe@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>

authored by Yossi Etigin and committed by Roland Dreier fe25c561 332edc2f

+2 -1
+2 -1
drivers/infiniband/ulp/ipoib/ipoib_main.c
··· 106 106 107 107 ipoib_dbg(priv, "bringing up interface\n"); 108 108 109 - napi_enable(&priv->napi); 110 109 set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags); 111 110 112 111 if (ipoib_pkey_dev_delay_open(dev)) 113 112 return 0; 113 + 114 + napi_enable(&priv->napi); 114 115 115 116 if (ipoib_ib_dev_open(dev)) { 116 117 napi_disable(&priv->napi);