diff options
-rw-r--r-- | drivers/net/igb/igb_main.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 7f322115fd1f..f75f90ff8138 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -3002,6 +3002,10 @@ link_up: | |||
3002 | } | 3002 | } |
3003 | } | 3003 | } |
3004 | 3004 | ||
3005 | /* Force detection of hung controller every watchdog period */ | ||
3006 | for (i = 0; i < adapter->num_tx_queues; i++) | ||
3007 | adapter->tx_ring[i].detect_tx_hung = true; | ||
3008 | |||
3005 | /* Cause software interrupt to ensure rx ring is cleaned */ | 3009 | /* Cause software interrupt to ensure rx ring is cleaned */ |
3006 | if (adapter->msix_entries) { | 3010 | if (adapter->msix_entries) { |
3007 | u32 eics = 0; | 3011 | u32 eics = 0; |
@@ -3014,9 +3018,6 @@ link_up: | |||
3014 | wr32(E1000_ICS, E1000_ICS_RXDMT0); | 3018 | wr32(E1000_ICS, E1000_ICS_RXDMT0); |
3015 | } | 3019 | } |
3016 | 3020 | ||
3017 | /* Force detection of hung controller every watchdog period */ | ||
3018 | tx_ring->detect_tx_hung = true; | ||
3019 | |||
3020 | /* Reset the timer */ | 3021 | /* Reset the timer */ |
3021 | if (!test_bit(__IGB_DOWN, &adapter->state)) | 3022 | if (!test_bit(__IGB_DOWN, &adapter->state)) |
3022 | mod_timer(&adapter->watchdog_timer, | 3023 | mod_timer(&adapter->watchdog_timer, |
@@ -3667,6 +3668,7 @@ static void igb_tx_timeout(struct net_device *netdev) | |||
3667 | 3668 | ||
3668 | /* Do the reset outside of interrupt context */ | 3669 | /* Do the reset outside of interrupt context */ |
3669 | adapter->tx_timeout_count++; | 3670 | adapter->tx_timeout_count++; |
3671 | |||
3670 | schedule_work(&adapter->reset_task); | 3672 | schedule_work(&adapter->reset_task); |
3671 | wr32(E1000_EICS, | 3673 | wr32(E1000_EICS, |
3672 | (adapter->eims_enable_mask & ~adapter->eims_other)); | 3674 | (adapter->eims_enable_mask & ~adapter->eims_other)); |
@@ -4804,7 +4806,7 @@ static bool igb_clean_tx_irq(struct igb_q_vector *q_vector) | |||
4804 | readl(tx_ring->tail), | 4806 | readl(tx_ring->tail), |
4805 | tx_ring->next_to_use, | 4807 | tx_ring->next_to_use, |
4806 | tx_ring->next_to_clean, | 4808 | tx_ring->next_to_clean, |
4807 | tx_ring->buffer_info[i].time_stamp, | 4809 | tx_ring->buffer_info[eop].time_stamp, |
4808 | eop, | 4810 | eop, |
4809 | jiffies, | 4811 | jiffies, |
4810 | eop_desc->wb.status); | 4812 | eop_desc->wb.status); |