diff options
Diffstat (limited to 'drivers/net/ethernet/intel')
-rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index 75e60897b7e7..73f745205a1c 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c | |||
@@ -154,6 +154,16 @@ void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val) | |||
154 | writel(val, hw->hw_addr + reg); | 154 | writel(val, hw->hw_addr + reg); |
155 | } | 155 | } |
156 | 156 | ||
157 | static bool e1000e_vlan_used(struct e1000_adapter *adapter) | ||
158 | { | ||
159 | u16 vid; | ||
160 | |||
161 | for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) | ||
162 | return true; | ||
163 | |||
164 | return false; | ||
165 | } | ||
166 | |||
157 | /** | 167 | /** |
158 | * e1000_regdump - register printout routine | 168 | * e1000_regdump - register printout routine |
159 | * @hw: pointer to the HW structure | 169 | * @hw: pointer to the HW structure |
@@ -2789,7 +2799,7 @@ static void e1000e_vlan_filter_enable(struct e1000_adapter *adapter) | |||
2789 | } | 2799 | } |
2790 | 2800 | ||
2791 | /** | 2801 | /** |
2792 | * e1000e_vlan_strip_enable - helper to disable HW VLAN stripping | 2802 | * e1000e_vlan_strip_disable - helper to disable HW VLAN stripping |
2793 | * @adapter: board private structure to initialize | 2803 | * @adapter: board private structure to initialize |
2794 | **/ | 2804 | **/ |
2795 | static void e1000e_vlan_strip_disable(struct e1000_adapter *adapter) | 2805 | static void e1000e_vlan_strip_disable(struct e1000_adapter *adapter) |
@@ -3443,7 +3453,8 @@ static void e1000e_set_rx_mode(struct net_device *netdev) | |||
3443 | 3453 | ||
3444 | ew32(RCTL, rctl); | 3454 | ew32(RCTL, rctl); |
3445 | 3455 | ||
3446 | if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) | 3456 | if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX || |
3457 | e1000e_vlan_used(adapter)) | ||
3447 | e1000e_vlan_strip_enable(adapter); | 3458 | e1000e_vlan_strip_enable(adapter); |
3448 | else | 3459 | else |
3449 | e1000e_vlan_strip_disable(adapter); | 3460 | e1000e_vlan_strip_disable(adapter); |