aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2008-07-16 23:16:14 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-16 23:16:14 -0400
commit78ed11a56bd8679aa6d51eb36b448342c59a7824 (patch)
treed5feb0f95f0002841d4d099aaac9fecb640bc3b5 /drivers/net/igb
parent746b9f0228a1c607b3db67c80da1c2a963321926 (diff)
netdrv intel: always enable VLAN filtering except in promiscous mode
Currently VLAN filtering is enabled when the first VLAN is added. Obviously before that there's no point in receiving any VLAN packets. Now that we disable VLAN filtering in promiscous mode, we can keep the VLAN filters enabled the remaining time. Signed-off-by: Patrick McHardy <kaber@trash.net> Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/igb')
-rw-r--r--drivers/net/igb/igb_main.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index 1ab8e3ec9e56..74dc43e29261 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -2277,8 +2277,7 @@ static void igb_set_multi(struct net_device *netdev)
2277 rctl &= ~E1000_RCTL_UPE; 2277 rctl &= ~E1000_RCTL_UPE;
2278 } else 2278 } else
2279 rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE); 2279 rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE);
2280 if (adapter->vlgrp) 2280 rctl |= E1000_RCTL_VFE;
2281 rctl |= E1000_RCTL_VFE;
2282 } 2281 }
2283 wr32(E1000_RCTL, rctl); 2282 wr32(E1000_RCTL, rctl);
2284 2283
@@ -4224,8 +4223,6 @@ static void igb_vlan_rx_register(struct net_device *netdev,
4224 4223
4225 /* enable VLAN receive filtering */ 4224 /* enable VLAN receive filtering */
4226 rctl = rd32(E1000_RCTL); 4225 rctl = rd32(E1000_RCTL);
4227 if (!(netdev->flags & IFF_PROMISC))
4228 rctl |= E1000_RCTL_VFE;
4229 rctl &= ~E1000_RCTL_CFIEN; 4226 rctl &= ~E1000_RCTL_CFIEN;
4230 wr32(E1000_RCTL, rctl); 4227 wr32(E1000_RCTL, rctl);
4231 igb_update_mng_vlan(adapter); 4228 igb_update_mng_vlan(adapter);
@@ -4237,10 +4234,6 @@ static void igb_vlan_rx_register(struct net_device *netdev,
4237 ctrl &= ~E1000_CTRL_VME; 4234 ctrl &= ~E1000_CTRL_VME;
4238 wr32(E1000_CTRL, ctrl); 4235 wr32(E1000_CTRL, ctrl);
4239 4236
4240 /* disable VLAN filtering */
4241 rctl = rd32(E1000_RCTL);
4242 rctl &= ~E1000_RCTL_VFE;
4243 wr32(E1000_RCTL, rctl);
4244 if (adapter->mng_vlan_id != (u16)IGB_MNG_VLAN_NONE) { 4237 if (adapter->mng_vlan_id != (u16)IGB_MNG_VLAN_NONE) {
4245 igb_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id); 4238 igb_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id);
4246 adapter->mng_vlan_id = IGB_MNG_VLAN_NONE; 4239 adapter->mng_vlan_id = IGB_MNG_VLAN_NONE;