aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2008-07-06 23:48:41 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-06 23:48:41 -0400
commit38b221957b155ef410bdc28856a66386303fbd5a (patch)
tree458006267c33308be8812a9def8eec7cbb23192a /drivers/net/e1000
parent4b5a698ef423eebc37cfacc6d3376d6dffd5bf83 (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.c12
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 }