diff options
| -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; |
