|
@@ -968,6 +968,9 @@ void i40evf_down(struct i40evf_adapter *adapter)
|
|
|
struct net_device *netdev = adapter->netdev;
|
|
|
struct i40evf_mac_filter *f;
|
|
|
|
|
|
+ if (adapter->state == __I40EVF_DOWN)
|
|
|
+ return;
|
|
|
+
|
|
|
/* remove all MAC filters */
|
|
|
list_for_each_entry(f, &adapter->mac_filter_list, list) {
|
|
|
f->remove = true;
|
|
@@ -1785,12 +1788,11 @@ static int i40evf_close(struct net_device *netdev)
|
|
|
if (adapter->state <= __I40EVF_DOWN)
|
|
|
return 0;
|
|
|
|
|
|
- /* signal that we are down to the interrupt handler */
|
|
|
- adapter->state = __I40EVF_DOWN;
|
|
|
|
|
|
set_bit(__I40E_DOWN, &adapter->vsi.state);
|
|
|
|
|
|
i40evf_down(adapter);
|
|
|
+ adapter->state = __I40EVF_DOWN;
|
|
|
i40evf_free_traffic_irqs(adapter);
|
|
|
|
|
|
i40evf_free_all_tx_resources(adapter);
|