aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb/igb_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/igb/igb_main.c')
-rw-r--r--drivers/net/igb/igb_main.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 7f322115fd1..f75f90ff813 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);