From: Yinghai Lu <yinghai@kernel.org>
Date: Fri, 6 Feb 2009 09:30:36 +0000 (-0800)
Subject: forcedeth: disable irq at first before schedule rx
X-Git-Tag: firefly_0821_release~15237^2~808
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0335ef5d59f40931e1b8f0a8be6a09dbc623081b;p=firefly-linux-kernel-4.4.55.git

forcedeth: disable irq at first before schedule rx

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>
---

diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 2d5f7d42e92a..a7c15715cd83 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;
 }