mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-01 18:24:23 +08:00
ixgbe: simplify the logic for setting VLAN filtering
Simplify the logic for setting VLNCTRL.VFE by checking the VMDQ flag and 82598 MAC instead of having to maintain a list of MAC types. Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
cdd0766d7d
commit
691e412132
@ -4105,23 +4105,20 @@ static void ixgbe_vlan_promisc_enable(struct ixgbe_adapter *adapter)
|
||||
|
||||
vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
|
||||
|
||||
switch (hw->mac.type) {
|
||||
case ixgbe_mac_82599EB:
|
||||
case ixgbe_mac_X540:
|
||||
case ixgbe_mac_X550:
|
||||
case ixgbe_mac_X550EM_x:
|
||||
case ixgbe_mac_x550em_a:
|
||||
default:
|
||||
if (adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)
|
||||
break;
|
||||
/* fall through */
|
||||
case ixgbe_mac_82598EB:
|
||||
/* legacy case, we can just disable VLAN filtering */
|
||||
if (adapter->flags & IXGBE_FLAG_VMDQ_ENABLED) {
|
||||
/* For VMDq and SR-IOV we must leave VLAN filtering enabled */
|
||||
vlnctrl |= IXGBE_VLNCTRL_VFE;
|
||||
IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
|
||||
} else {
|
||||
vlnctrl &= ~IXGBE_VLNCTRL_VFE;
|
||||
IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Nothing to do for 82598 */
|
||||
if (hw->mac.type == ixgbe_mac_82598EB)
|
||||
return;
|
||||
|
||||
/* We are already in VLAN promisc, nothing to do */
|
||||
if (adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC)
|
||||
return;
|
||||
@ -4129,10 +4126,6 @@ static void ixgbe_vlan_promisc_enable(struct ixgbe_adapter *adapter)
|
||||
/* Set flag so we don't redo unnecessary work */
|
||||
adapter->flags2 |= IXGBE_FLAG2_VLAN_PROMISC;
|
||||
|
||||
/* For VMDq and SR-IOV we must leave VLAN filtering enabled */
|
||||
vlnctrl |= IXGBE_VLNCTRL_VFE;
|
||||
IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
|
||||
|
||||
/* Add PF to all active pools */
|
||||
for (i = IXGBE_VLVF_ENTRIES; --i;) {
|
||||
u32 reg_offset = IXGBE_VLVFB(i * 2 + VMDQ_P(0) / 32);
|
||||
@ -4204,19 +4197,9 @@ static void ixgbe_vlan_promisc_disable(struct ixgbe_adapter *adapter)
|
||||
vlnctrl |= IXGBE_VLNCTRL_VFE;
|
||||
IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
|
||||
|
||||
switch (hw->mac.type) {
|
||||
case ixgbe_mac_82599EB:
|
||||
case ixgbe_mac_X540:
|
||||
case ixgbe_mac_X550:
|
||||
case ixgbe_mac_X550EM_x:
|
||||
case ixgbe_mac_x550em_a:
|
||||
default:
|
||||
if (adapter->flags & IXGBE_FLAG_VMDQ_ENABLED)
|
||||
break;
|
||||
/* fall through */
|
||||
case ixgbe_mac_82598EB:
|
||||
if (!(adapter->flags & IXGBE_FLAG_VMDQ_ENABLED) ||
|
||||
hw->mac.type == ixgbe_mac_82598EB)
|
||||
return;
|
||||
}
|
||||
|
||||
/* We are not in VLAN promisc, nothing to do */
|
||||
if (!(adapter->flags2 & IXGBE_FLAG2_VLAN_PROMISC))
|
||||
|
Loading…
Reference in New Issue
Block a user