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;
        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);