diff options
author | Patrick McHardy <kaber@trash.net> | 2008-07-06 23:48:41 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-06 23:48:41 -0400 |
commit | 38b221957b155ef410bdc28856a66386303fbd5a (patch) | |
tree | 458006267c33308be8812a9def8eec7cbb23192a /drivers/net/e1000 | |
parent | 4b5a698ef423eebc37cfacc6d3376d6dffd5bf83 (diff) |
netdrv: don't truncate VLAN TCI with VLAN stripping
The vlan_hwaccel_{rx,receive_skb} functions expect the full TCI field
for priority mappings, don't truncate the upper 4 bits.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Acked-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 311ca266bd77..7aa458f7d8b8 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -4277,8 +4277,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter, | |||
4277 | if (unlikely(adapter->vlgrp && | 4277 | if (unlikely(adapter->vlgrp && |
4278 | (status & E1000_RXD_STAT_VP))) { | 4278 | (status & E1000_RXD_STAT_VP))) { |
4279 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, | 4279 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, |
4280 | le16_to_cpu(rx_desc->special) & | 4280 | le16_to_cpu(rx_desc->special)); |
4281 | E1000_RXD_SPC_VLAN_MASK); | ||
4282 | } else { | 4281 | } else { |
4283 | netif_receive_skb(skb); | 4282 | netif_receive_skb(skb); |
4284 | } | 4283 | } |
@@ -4286,8 +4285,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter, | |||
4286 | if (unlikely(adapter->vlgrp && | 4285 | if (unlikely(adapter->vlgrp && |
4287 | (status & E1000_RXD_STAT_VP))) { | 4286 | (status & E1000_RXD_STAT_VP))) { |
4288 | vlan_hwaccel_rx(skb, adapter->vlgrp, | 4287 | vlan_hwaccel_rx(skb, adapter->vlgrp, |
4289 | le16_to_cpu(rx_desc->special) & | 4288 | le16_to_cpu(rx_desc->special)); |
4290 | E1000_RXD_SPC_VLAN_MASK); | ||
4291 | } else { | 4289 | } else { |
4292 | netif_rx(skb); | 4290 | netif_rx(skb); |
4293 | } | 4291 | } |
@@ -4464,16 +4462,14 @@ copydone: | |||
4464 | #ifdef CONFIG_E1000_NAPI | 4462 | #ifdef CONFIG_E1000_NAPI |
4465 | if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) { | 4463 | if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) { |
4466 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, | 4464 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, |
4467 | le16_to_cpu(rx_desc->wb.middle.vlan) & | 4465 | le16_to_cpu(rx_desc->wb.middle.vlan)); |
4468 | E1000_RXD_SPC_VLAN_MASK); | ||
4469 | } else { | 4466 | } else { |
4470 | netif_receive_skb(skb); | 4467 | netif_receive_skb(skb); |
4471 | } | 4468 | } |
4472 | #else /* CONFIG_E1000_NAPI */ | 4469 | #else /* CONFIG_E1000_NAPI */ |
4473 | if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) { | 4470 | if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) { |
4474 | vlan_hwaccel_rx(skb, adapter->vlgrp, | 4471 | vlan_hwaccel_rx(skb, adapter->vlgrp, |
4475 | le16_to_cpu(rx_desc->wb.middle.vlan) & | 4472 | le16_to_cpu(rx_desc->wb.middle.vlan)); |
4476 | E1000_RXD_SPC_VLAN_MASK); | ||
4477 | } else { | 4473 | } else { |
4478 | netif_rx(skb); | 4474 | netif_rx(skb); |
4479 | } | 4475 | } |