From: Yinghai Lu Date: Fri, 6 Feb 2009 09:30:36 +0000 (-0800) Subject: forcedeth: disable irq at first before schedule rx X-Git-Tag: v2.6.30-rc1~662^2~808 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=0335ef5d59f40931e1b8f0a8be6a09dbc623081b;p=~emulex%2Finfiniband.git forcedeth: disable irq at first before schedule rx Impact: clean up schedule it later after disable it. Signed-off-by: Yinghai Lu Signed-off-by: David S. Miller --- diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 2d5f7d42e92..a7c15715cd8 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c @@ -3708,13 +3708,13 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data) u32 events; events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQ_RX_ALL; - writel(NVREG_IRQ_RX_ALL, base + NvRegMSIXIrqStatus); if (events) { - napi_schedule(&np->napi); /* disable receive interrupts on the nic */ writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask); pci_push(base); + writel(NVREG_IRQ_RX_ALL, base + NvRegMSIXIrqStatus); + napi_schedule(&np->napi); } return IRQ_HANDLED; }