forcedeth: disable irq at first before schedule rx
Yinghai Lu [Fri, 6 Feb 2009 09:30:36 +0000 (01:30 -0800)]
Impact: clean up

schedule it later after disable it.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

drivers/net/forcedeth.c

index 2d5f7d4..a7c1571 100644 (file)
@@ -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;
 }