diff options
Diffstat (limited to 'drivers/net/e1000e/netdev.c')
-rw-r--r-- | drivers/net/e1000e/netdev.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index 17974121912d..b4ae0465121a 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c | |||
@@ -1261,7 +1261,8 @@ static irqreturn_t e1000_msix_other(int irq, void *data) | |||
1261 | u32 icr = er32(ICR); | 1261 | u32 icr = er32(ICR); |
1262 | 1262 | ||
1263 | if (!(icr & E1000_ICR_INT_ASSERTED)) { | 1263 | if (!(icr & E1000_ICR_INT_ASSERTED)) { |
1264 | ew32(IMS, E1000_IMS_OTHER); | 1264 | if (!test_bit(__E1000_DOWN, &adapter->state)) |
1265 | ew32(IMS, E1000_IMS_OTHER); | ||
1265 | return IRQ_NONE; | 1266 | return IRQ_NONE; |
1266 | } | 1267 | } |
1267 | 1268 | ||
@@ -1278,7 +1279,8 @@ static irqreturn_t e1000_msix_other(int irq, void *data) | |||
1278 | } | 1279 | } |
1279 | 1280 | ||
1280 | no_link_interrupt: | 1281 | no_link_interrupt: |
1281 | ew32(IMS, E1000_IMS_LSC | E1000_IMS_OTHER); | 1282 | if (!test_bit(__E1000_DOWN, &adapter->state)) |
1283 | ew32(IMS, E1000_IMS_LSC | E1000_IMS_OTHER); | ||
1282 | 1284 | ||
1283 | return IRQ_HANDLED; | 1285 | return IRQ_HANDLED; |
1284 | } | 1286 | } |
@@ -2015,10 +2017,12 @@ clean_rx: | |||
2015 | if (adapter->itr_setting & 3) | 2017 | if (adapter->itr_setting & 3) |
2016 | e1000_set_itr(adapter); | 2018 | e1000_set_itr(adapter); |
2017 | napi_complete(napi); | 2019 | napi_complete(napi); |
2018 | if (adapter->msix_entries) | 2020 | if (!test_bit(__E1000_DOWN, &adapter->state)) { |
2019 | ew32(IMS, adapter->rx_ring->ims_val); | 2021 | if (adapter->msix_entries) |
2020 | else | 2022 | ew32(IMS, adapter->rx_ring->ims_val); |
2021 | e1000_irq_enable(adapter); | 2023 | else |
2024 | e1000_irq_enable(adapter); | ||
2025 | } | ||
2022 | } | 2026 | } |
2023 | 2027 | ||
2024 | return work_done; | 2028 | return work_done; |