summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Brandeburg <jesse.brandeburg@intel.com>2009-05-07 11:07:35 +0000
committerDavid S. Miller <davem@davemloft.net>2009-05-07 14:52:32 -0700
commit7d61fcbcfff053095d68b66e369972b8781204b8 (patch)
tree23826950852ef6f07e30db908bba04c215a29160
parentbe1bbd679733fbf75b2e8390c14929f06fb9e685 (diff)
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>
-rw-r--r--e1000_main.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/e1000_main.c b/e1000_main.c
index 71d4fe1..b455dca 100644
--- a/e1000_main.c
+++ b/e1000_main.c
@@ -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;
}
}