Commit 83808641 authored by Jarod Wilson's avatar Jarod Wilson Committed by Jeff Kirsher

e1000e: keep Rx/Tx HW_VLAN_CTAG in sync

The bit in the e1000 driver that mentions explicitly that the hardware
has no support for separate RX/TX VLAN accel toggling rings true for
e1000e as well, and thus both NETIF_F_HW_VLAN_CTAG_RX and
NETIF_F_HW_VLAN_CTAG_TX need to be kept in sync.

Revert a portion of commit 889ad456 ("e1000e: keep VLAN interfaces
functional after rxvlan off") since keeping the bits in sync resolves
the original issue.
Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 751ad819
...@@ -154,16 +154,6 @@ void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val) ...@@ -154,16 +154,6 @@ void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val)
writel(val, hw->hw_addr + reg); writel(val, hw->hw_addr + reg);
} }
static bool e1000e_vlan_used(struct e1000_adapter *adapter)
{
u16 vid;
for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
return true;
return false;
}
/** /**
* e1000_regdump - register printout routine * e1000_regdump - register printout routine
* @hw: pointer to the HW structure * @hw: pointer to the HW structure
...@@ -3453,8 +3443,7 @@ static void e1000e_set_rx_mode(struct net_device *netdev) ...@@ -3453,8 +3443,7 @@ static void e1000e_set_rx_mode(struct net_device *netdev)
ew32(RCTL, rctl); ew32(RCTL, rctl);
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX || if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX)
e1000e_vlan_used(adapter))
e1000e_vlan_strip_enable(adapter); e1000e_vlan_strip_enable(adapter);
else else
e1000e_vlan_strip_disable(adapter); e1000e_vlan_strip_disable(adapter);
...@@ -6926,6 +6915,14 @@ static netdev_features_t e1000_fix_features(struct net_device *netdev, ...@@ -6926,6 +6915,14 @@ static netdev_features_t e1000_fix_features(struct net_device *netdev,
if ((hw->mac.type >= e1000_pch2lan) && (netdev->mtu > ETH_DATA_LEN)) if ((hw->mac.type >= e1000_pch2lan) && (netdev->mtu > ETH_DATA_LEN))
features &= ~NETIF_F_RXFCS; features &= ~NETIF_F_RXFCS;
/* Since there is no support for separate Rx/Tx vlan accel
* enable/disable make sure Tx flag is always in same state as Rx.
*/
if (features & NETIF_F_HW_VLAN_CTAG_RX)
features |= NETIF_F_HW_VLAN_CTAG_TX;
else
features &= ~NETIF_F_HW_VLAN_CTAG_TX;
return features; return features;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment