Skip to content

Commit

Permalink
i40vf: don't stop me now
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Mitch Williams authored and Jeff Kirsher committed Mar 9, 2015
1 parent 1efc80e commit 3c8e0b9
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions drivers/net/ethernet/intel/i40evf/i40evf_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1578,13 +1578,14 @@ static void i40evf_reset_task(struct work_struct *work)
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 */
Expand Down

0 comments on commit 3c8e0b9

Please sign in to comment.