diff options
Diffstat (limited to 'drivers/net/ethernet/intel/i40evf/i40evf_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c index d4157857360d..f454b58cad2e 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c | |||
@@ -968,6 +968,9 @@ void i40evf_down(struct i40evf_adapter *adapter) | |||
968 | struct net_device *netdev = adapter->netdev; | 968 | struct net_device *netdev = adapter->netdev; |
969 | struct i40evf_mac_filter *f; | 969 | struct i40evf_mac_filter *f; |
970 | 970 | ||
971 | if (adapter->state == __I40EVF_DOWN) | ||
972 | return; | ||
973 | |||
971 | /* remove all MAC filters */ | 974 | /* remove all MAC filters */ |
972 | list_for_each_entry(f, &adapter->mac_filter_list, list) { | 975 | list_for_each_entry(f, &adapter->mac_filter_list, list) { |
973 | f->remove = true; | 976 | f->remove = true; |
@@ -1785,12 +1788,11 @@ static int i40evf_close(struct net_device *netdev) | |||
1785 | if (adapter->state <= __I40EVF_DOWN) | 1788 | if (adapter->state <= __I40EVF_DOWN) |
1786 | return 0; | 1789 | return 0; |
1787 | 1790 | ||
1788 | /* signal that we are down to the interrupt handler */ | ||
1789 | adapter->state = __I40EVF_DOWN; | ||
1790 | 1791 | ||
1791 | set_bit(__I40E_DOWN, &adapter->vsi.state); | 1792 | set_bit(__I40E_DOWN, &adapter->vsi.state); |
1792 | 1793 | ||
1793 | i40evf_down(adapter); | 1794 | i40evf_down(adapter); |
1795 | adapter->state = __I40EVF_DOWN; | ||
1794 | i40evf_free_traffic_irqs(adapter); | 1796 | i40evf_free_traffic_irqs(adapter); |
1795 | 1797 | ||
1796 | i40evf_free_all_tx_resources(adapter); | 1798 | i40evf_free_all_tx_resources(adapter); |