diff options
| author | 2011-01-14 12:43:10 -0800 | |
|---|---|---|
| committer | 2011-01-14 12:43:10 -0800 | |
| commit | 3b8f5945a24c78c77a88bd747812f7e07e075c7c (patch) | |
| tree | dbd120f16acc181f662fe99dbfec9ea29d24dd5a /drivers/net/e1000/e1000_main.c | |
| parent | Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-2.6 (diff) | |
| parent | e1000e: consistent use of Rx/Tx vs. RX/TX/rx/tx in comments/logs (diff) | |
| download | linux-dev-3b8f5945a24c78c77a88bd747812f7e07e075c7c.tar.xz linux-dev-3b8f5945a24c78c77a88bd747812f7e07e075c7c.zip | |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-2.6
Diffstat (limited to 'drivers/net/e1000/e1000_main.c')
| -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 4ff88a683f61..e332aee386f6 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 */ |
