i40evf: remove VLAN filters on close
authorMitch Williams <mitch.a.williams@intel.com>
Fri, 21 Feb 2014 03:29:06 +0000 (19:29 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Feb 2014 17:38:25 +0000 (12:38 -0500)
We remove all the MAC filters, so remove the VLAN filters, too.

Change-ID: I4f7559acdf005dc3f359bf6460ce32d183c8878b
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/i40evf/i40evf_main.c

index 1629b73d281a233d0333ebf68b860041152d87b9..75a2c6f19121ab9617a2f2e1137b7edf86db82e6 100644 (file)
@@ -972,9 +972,14 @@ void i40evf_down(struct i40evf_adapter *adapter)
        list_for_each_entry(f, &adapter->mac_filter_list, list) {
                f->remove = true;
        }
+       /* remove all VLAN filters */
+       list_for_each_entry(f, &adapter->vlan_filter_list, list) {
+               f->remove = true;
+       }
        if (!(adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) &&
            adapter->state != __I40EVF_RESETTING) {
                adapter->aq_required |= I40EVF_FLAG_AQ_DEL_MAC_FILTER;
+               adapter->aq_required |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER;
                /* disable receives */
                adapter->aq_required |= I40EVF_FLAG_AQ_DISABLE_QUEUES;
                mod_timer_pending(&adapter->watchdog_timer, jiffies + 1);