diff options
author | David S. Miller <davem@davemloft.net> | 2011-01-14 12:43:10 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-14 12:43:10 -0800 |
commit | 3b8f5945a24c78c77a88bd747812f7e07e075c7c (patch) | |
tree | dbd120f16acc181f662fe99dbfec9ea29d24dd5a /drivers/net/e1000 | |
parent | 886d7f444cbf72d5a424ea5fee4e34a0219d4af1 (diff) | |
parent | af667a29dd3dfc0464f83bac30cc3c63fe5d0206 (diff) | |
download | op-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.c | 10 |
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 */ |