be2net: Fix traffic stall INTx mode
authorPadmanabh Ratnakar <padmanabh.ratnakar@emulex.com>
Wed, 25 Apr 2012 01:46:39 +0000 (01:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 26 Apr 2012 09:03:31 +0000 (05:03 -0400)
EQ is getting armed wrongly in INTx mode as INTx interrupt is taking
some time to deassert. This can cause another interrupt while NAPI is
scheduled and scheduling a NAPI in interrupt does not take effect.
This causes interrupt to be missed and traffic stalls. Fixing this by
preventing wrong arming of EQ.

Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_main.c

index a9a11d426f08744fe9ee5cd0fc97ea5ad9d02823..9d42fab6d4460430810893b9ac9da2b5570d8f44 100644 (file)
@@ -1571,7 +1571,9 @@ static int event_handle(struct be_eq_obj *eqo)
        if (!num)
                rearm = true;
 
-       be_eq_notify(eqo->adapter, eqo->q.id, rearm, true, num);
+       if (num || msix_enabled(eqo->adapter))
+               be_eq_notify(eqo->adapter, eqo->q.id, rearm, true, num);
+
        if (num)
                napi_schedule(&eqo->napi);
 
This page took 0.028651 seconds and 5 git commands to generate.