fm10k: only prevent removal of default VID rules
authorJacob Keller <jacob.e.keller@intel.com>
Mon, 15 Jun 2015 22:00:53 +0000 (15:00 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 16 Sep 2015 00:05:23 +0000 (17:05 -0700)
This allows us to correctly add a VLAN even if it matches our default
VID. However, we don't want to remove the VID rules once that VLAN is
deleted. Correctly remove the stack layers information of the VLAN, but
then return to forwarding that VID as untagged frames. If we deleted the
VID rules here, we would begin dropping traffic due to VLAN membership
violations.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/fm10k/fm10k_netdev.c

index 99228bf46c1202170ef8eb934624e15d99a257d9..818bc8b1fa58773ac0cf5fb72bac50a0f1b4a1b7 100644 (file)
@@ -775,8 +775,8 @@ static int fm10k_update_vid(struct net_device *netdev, u16 vid, bool set)
        if (!set)
                clear_bit(vid, interface->active_vlans);
 
-       /* if default VLAN is already present do nothing */
-       if (vid == hw->mac.default_vid)
+       /* Do not remove default VID related entries from VLAN and MAC tables */
+       if (!set && vid == hw->mac.default_vid)
                return 0;
 
        fm10k_mbx_lock(interface);