e1000/e1000e/igb/ixgb: don't txhang after link down
after the recent changes to wired drivers to use only netif_carrier_off the driver can have outstanding tx work to complete that will never complete once link is down. Since the intel hardware will hold this tx work forever, the driver notices a tx timeout condition internally and might try to instigate printk and reset of the part with a netif_stop_queue, which doesn't work because link is down. Don't bother arming to tx hang detection when link is down. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c9c7d2e5a0
commit
c2d5ab4973
|
@ -2646,6 +2646,8 @@ static void e1000_watchdog(unsigned long data)
|
|||
* (Do the reset outside of interrupt context). */
|
||||
adapter->tx_timeout_count++;
|
||||
schedule_work(&adapter->reset_task);
|
||||
/* return immediately since reset is imminent */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3651,6 +3651,8 @@ link_up:
|
|||
*/
|
||||
adapter->tx_timeout_count++;
|
||||
schedule_work(&adapter->reset_task);
|
||||
/* return immediately since reset is imminent */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2711,6 +2711,8 @@ link_up:
|
|||
* (Do the reset outside of interrupt context). */
|
||||
adapter->tx_timeout_count++;
|
||||
schedule_work(&adapter->reset_task);
|
||||
/* return immediately since reset is imminent */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1140,6 +1140,8 @@ ixgb_watchdog(unsigned long data)
|
|||
* to get done, so reset controller to flush Tx.
|
||||
* (Do the reset outside of interrupt context). */
|
||||
schedule_work(&adapter->tx_timeout_task);
|
||||
/* return immediately since reset is imminent */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue