summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitch Williams <mitch.a.williams@intel.com>2015-02-27 09:18:31 +0000
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2015-03-09 05:20:45 -0700
commit3c8e0b989aa1afc01aa1b236b31b6c7628610c85 (patch)
treed94d8ba019d6b911c066c280821ed7457e937668
parent1efc80eeee8c89188e78545c87a613e480aefd96 (diff)
i40vf: don't stop me now
If a reset occurs when the netdev is closed, the reset task will hang in napi_disable, causing deadlocks and general grumpiness. Check to make sure the device is actually running before stopping everything. This allows the reset task to complete and have a real good time. Change-ID: Iaaea84acbcb9b3810c216b14c3326e4287b75b58 Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40evf_main.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index f44911df286a..32d0a99ad2a9 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1578,13 +1578,14 @@ continue_reset:
adapter->flags &= ~I40EVF_FLAG_RESET_PENDING;
i40evf_irq_disable(adapter);
- i40evf_napi_disable_all(adapter);
-
- netif_tx_disable(netdev);
- netif_tx_stop_all_queues(netdev);
+ if (netif_running(adapter->netdev)) {
+ i40evf_napi_disable_all(adapter);
+ netif_tx_disable(netdev);
+ netif_tx_stop_all_queues(netdev);
+ netif_carrier_off(netdev);
+ }
- netif_carrier_off(netdev);
adapter->state = __I40EVF_RESETTING;
/* kill and reinit the admin queue */