From: Padmanabh Ratnakar Date: Wed, 25 Apr 2012 01:46:39 +0000 (+0000) Subject: be2net: Fix traffic stall INTx mode X-Git-Tag: for-linus-20120531~84^2~287 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=af311fe31015e2b27bd65e22fc103230fb3a78b7;p=linux-block.git be2net: Fix traffic stall INTx mode 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 Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index a9a11d426f08..9d42fab6d446 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -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);