summaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-01-14 12:43:10 -0800
committerDavid S. Miller <davem@davemloft.net>2011-01-14 12:43:10 -0800
commit3b8f5945a24c78c77a88bd747812f7e07e075c7c (patch)
treedbd120f16acc181f662fe99dbfec9ea29d24dd5a /drivers/net/e1000
parent886d7f444cbf72d5a424ea5fee4e34a0219d4af1 (diff)
parentaf667a29dd3dfc0464f83bac30cc3c63fe5d0206 (diff)
downloadop-kernel-dev-3b8f5945a24c78c77a88bd747812f7e07e075c7c.zip
op-kernel-dev-3b8f5945a24c78c77a88bd747812f7e07e075c7c.tar.gz
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-2.6
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r--drivers/net/e1000/e1000_main.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 4ff88a6..e332aee 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3478,9 +3478,17 @@ static irqreturn_t e1000_intr(int irq, void *data)
struct e1000_hw *hw = &adapter->hw;
u32 icr = er32(ICR);
- if (unlikely((!icr) || test_bit(__E1000_DOWN, &adapter->flags)))
+ if (unlikely((!icr)))
return IRQ_NONE; /* Not our interrupt */
+ /*
+ * we might have caused the interrupt, but the above
+ * read cleared it, and just in case the driver is
+ * down there is nothing to do so return handled
+ */
+ if (unlikely(test_bit(__E1000_DOWN, &adapter->flags)))
+ return IRQ_HANDLED;
+
if (unlikely(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))) {
hw->get_link_status = 1;
/* guard against interrupt when we're going down */
OpenPOWER on IntegriCloud