Commit ddf0b3a6 authored by Mitch Williams's avatar Mitch Williams Committed by Jeff Kirsher

i40evf: don't go further down

If the device is down, there's no place to go but up, so don't try to go
down even more. This prevents a CPU soft lock in napi_disable().

Change-ID: I8b058b9ee974dfa01c212fae2597f4f54b333314
Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 04b73bd7
...@@ -968,6 +968,9 @@ void i40evf_down(struct i40evf_adapter *adapter) ...@@ -968,6 +968,9 @@ void i40evf_down(struct i40evf_adapter *adapter)
struct net_device *netdev = adapter->netdev; struct net_device *netdev = adapter->netdev;
struct i40evf_mac_filter *f; struct i40evf_mac_filter *f;
if (adapter->state == __I40EVF_DOWN)
return;
/* remove all MAC filters */ /* remove all MAC filters */
list_for_each_entry(f, &adapter->mac_filter_list, list) { list_for_each_entry(f, &adapter->mac_filter_list, list) {
f->remove = true; f->remove = true;
...@@ -1785,12 +1788,11 @@ static int i40evf_close(struct net_device *netdev) ...@@ -1785,12 +1788,11 @@ static int i40evf_close(struct net_device *netdev)
if (adapter->state <= __I40EVF_DOWN) if (adapter->state <= __I40EVF_DOWN)
return 0; return 0;
/* signal that we are down to the interrupt handler */
adapter->state = __I40EVF_DOWN;
set_bit(__I40E_DOWN, &adapter->vsi.state); set_bit(__I40E_DOWN, &adapter->vsi.state);
i40evf_down(adapter); i40evf_down(adapter);
adapter->state = __I40EVF_DOWN;
i40evf_free_traffic_irqs(adapter); i40evf_free_traffic_irqs(adapter);
i40evf_free_all_tx_resources(adapter); i40evf_free_all_tx_resources(adapter);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment