diff options
Diffstat (limited to 'drivers/net/e1000/e1000_main.c')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index b3063e60be6e..2c723b1b8820 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -2402,7 +2402,9 @@ static void e1000_set_rx_mode(struct net_device *netdev) | |||
2402 | rctl &= ~E1000_RCTL_MPE; | 2402 | rctl &= ~E1000_RCTL_MPE; |
2403 | } | 2403 | } |
2404 | if (adapter->hw.mac_type != e1000_ich8lan) | 2404 | if (adapter->hw.mac_type != e1000_ich8lan) |
2405 | rctl |= E1000_RCTL_VFE; | 2405 | /* Enable VLAN filter if there is a VLAN */ |
2406 | if (adapter->vlgrp) | ||
2407 | rctl |= E1000_RCTL_VFE; | ||
2406 | } | 2408 | } |
2407 | 2409 | ||
2408 | if (netdev->uc.count > rar_entries - 1) { | 2410 | if (netdev->uc.count > rar_entries - 1) { |
@@ -4856,6 +4858,8 @@ static void e1000_vlan_rx_register(struct net_device *netdev, | |||
4856 | /* enable VLAN receive filtering */ | 4858 | /* enable VLAN receive filtering */ |
4857 | rctl = er32(RCTL); | 4859 | rctl = er32(RCTL); |
4858 | rctl &= ~E1000_RCTL_CFIEN; | 4860 | rctl &= ~E1000_RCTL_CFIEN; |
4861 | if (!(netdev->flags & IFF_PROMISC)) | ||
4862 | rctl |= E1000_RCTL_VFE; | ||
4859 | ew32(RCTL, rctl); | 4863 | ew32(RCTL, rctl); |
4860 | e1000_update_mng_vlan(adapter); | 4864 | e1000_update_mng_vlan(adapter); |
4861 | } | 4865 | } |
@@ -4866,6 +4870,11 @@ static void e1000_vlan_rx_register(struct net_device *netdev, | |||
4866 | ew32(CTRL, ctrl); | 4870 | ew32(CTRL, ctrl); |
4867 | 4871 | ||
4868 | if (adapter->hw.mac_type != e1000_ich8lan) { | 4872 | if (adapter->hw.mac_type != e1000_ich8lan) { |
4873 | /* disable VLAN receive filtering */ | ||
4874 | rctl = er32(RCTL); | ||
4875 | rctl &= ~E1000_RCTL_VFE; | ||
4876 | ew32(RCTL, rctl); | ||
4877 | |||
4869 | if (adapter->mng_vlan_id != | 4878 | if (adapter->mng_vlan_id != |
4870 | (u16)E1000_MNG_VLAN_NONE) { | 4879 | (u16)E1000_MNG_VLAN_NONE) { |
4871 | e1000_vlan_rx_kill_vid(netdev, | 4880 | e1000_vlan_rx_kill_vid(netdev, |