Commit 38b221957b155ef410bdc28856a66386303fbd5a
Committed by
David S. Miller
1 parent
4b5a698ef4
Exists in
master
and in
7 other branches
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>
Showing 7 changed files with 11 additions and 18 deletions Side-by-side Diff
drivers/net/e1000/e1000_main.c
... | ... | @@ -4277,8 +4277,7 @@ |
4277 | 4277 | if (unlikely(adapter->vlgrp && |
4278 | 4278 | (status & E1000_RXD_STAT_VP))) { |
4279 | 4279 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, |
4280 | - le16_to_cpu(rx_desc->special) & | |
4281 | - E1000_RXD_SPC_VLAN_MASK); | |
4280 | + le16_to_cpu(rx_desc->special)); | |
4282 | 4281 | } else { |
4283 | 4282 | netif_receive_skb(skb); |
4284 | 4283 | } |
... | ... | @@ -4286,8 +4285,7 @@ |
4286 | 4285 | if (unlikely(adapter->vlgrp && |
4287 | 4286 | (status & E1000_RXD_STAT_VP))) { |
4288 | 4287 | vlan_hwaccel_rx(skb, adapter->vlgrp, |
4289 | - le16_to_cpu(rx_desc->special) & | |
4290 | - E1000_RXD_SPC_VLAN_MASK); | |
4288 | + le16_to_cpu(rx_desc->special)); | |
4291 | 4289 | } else { |
4292 | 4290 | netif_rx(skb); |
4293 | 4291 | } |
4294 | 4292 | |
... | ... | @@ -4464,16 +4462,14 @@ |
4464 | 4462 | #ifdef CONFIG_E1000_NAPI |
4465 | 4463 | if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) { |
4466 | 4464 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, |
4467 | - le16_to_cpu(rx_desc->wb.middle.vlan) & | |
4468 | - E1000_RXD_SPC_VLAN_MASK); | |
4465 | + le16_to_cpu(rx_desc->wb.middle.vlan)); | |
4469 | 4466 | } else { |
4470 | 4467 | netif_receive_skb(skb); |
4471 | 4468 | } |
4472 | 4469 | #else /* CONFIG_E1000_NAPI */ |
4473 | 4470 | if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) { |
4474 | 4471 | vlan_hwaccel_rx(skb, adapter->vlgrp, |
4475 | - le16_to_cpu(rx_desc->wb.middle.vlan) & | |
4476 | - E1000_RXD_SPC_VLAN_MASK); | |
4472 | + le16_to_cpu(rx_desc->wb.middle.vlan)); | |
4477 | 4473 | } else { |
4478 | 4474 | netif_rx(skb); |
4479 | 4475 | } |
drivers/net/e1000e/netdev.c
drivers/net/igb/igb_main.c
... | ... | @@ -3391,8 +3391,7 @@ |
3391 | 3391 | { |
3392 | 3392 | if (adapter->vlgrp && (status & E1000_RXD_STAT_VP)) |
3393 | 3393 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, |
3394 | - le16_to_cpu(vlan) & | |
3395 | - E1000_RXD_SPC_VLAN_MASK); | |
3394 | + le16_to_cpu(vlan)); | |
3396 | 3395 | else |
3397 | 3396 | netif_receive_skb(skb); |
3398 | 3397 | } |
drivers/net/ixgb/ixgb_main.c
... | ... | @@ -2045,16 +2045,14 @@ |
2045 | 2045 | #ifdef CONFIG_IXGB_NAPI |
2046 | 2046 | if(adapter->vlgrp && (status & IXGB_RX_DESC_STATUS_VP)) { |
2047 | 2047 | vlan_hwaccel_receive_skb(skb, adapter->vlgrp, |
2048 | - le16_to_cpu(rx_desc->special) & | |
2049 | - IXGB_RX_DESC_SPECIAL_VLAN_MASK); | |
2048 | + le16_to_cpu(rx_desc->special)); | |
2050 | 2049 | } else { |
2051 | 2050 | netif_receive_skb(skb); |
2052 | 2051 | } |
2053 | 2052 | #else /* CONFIG_IXGB_NAPI */ |
2054 | 2053 | if(adapter->vlgrp && (status & IXGB_RX_DESC_STATUS_VP)) { |
2055 | 2054 | vlan_hwaccel_rx(skb, adapter->vlgrp, |
2056 | - le16_to_cpu(rx_desc->special) & | |
2057 | - IXGB_RX_DESC_SPECIAL_VLAN_MASK); | |
2055 | + le16_to_cpu(rx_desc->special)); | |
2058 | 2056 | } else { |
2059 | 2057 | netif_rx(skb); |
2060 | 2058 | } |
drivers/net/starfire.c
... | ... | @@ -1510,7 +1510,7 @@ |
1510 | 1510 | if (debug > 4) |
1511 | 1511 | printk(KERN_DEBUG " netdev_rx() vlanid = %d\n", le16_to_cpu(desc->vlanid)); |
1512 | 1512 | /* vlan_netdev_receive_skb() expects a packet with the VLAN tag stripped out */ |
1513 | - vlan_netdev_receive_skb(skb, np->vlgrp, le16_to_cpu(desc->vlanid) & VLAN_VID_MASK); | |
1513 | + vlan_netdev_receive_skb(skb, np->vlgrp, le16_to_cpu(desc->vlanid)); | |
1514 | 1514 | } else |
1515 | 1515 | #endif /* VLAN_SUPPORT */ |
1516 | 1516 | netdev_receive_skb(skb); |
drivers/net/tehuti.c
... | ... | @@ -1165,7 +1165,7 @@ |
1165 | 1165 | GET_RXD_VLAN_ID(rxd_vlan))->name); |
1166 | 1166 | /* NAPI variant of receive functions */ |
1167 | 1167 | vlan_hwaccel_receive_skb(skb, priv->vlgrp, |
1168 | - GET_RXD_VLAN_ID(rxd_vlan)); | |
1168 | + GET_RXD_VLAN_TCI(rxd_vlan)); | |
1169 | 1169 | } else { |
1170 | 1170 | netif_receive_skb(skb); |
1171 | 1171 | } |
drivers/net/tehuti.h
... | ... | @@ -309,6 +309,7 @@ |
309 | 309 | #define GET_RXD_PKT_ID(x) GET_BITS_SHIFT((x), 3, 28) |
310 | 310 | #define GET_RXD_VTAG(x) GET_BITS_SHIFT((x), 1, 31) |
311 | 311 | #define GET_RXD_VLAN_ID(x) GET_BITS_SHIFT((x), 12, 0) |
312 | +#define GET_RXD_VLAN_TCI(x) GET_BITS_SHIFT((x), 16, 0) | |
312 | 313 | #define GET_RXD_CFI(x) GET_BITS_SHIFT((x), 1, 12) |
313 | 314 | #define GET_RXD_PRIO(x) GET_BITS_SHIFT((x), 3, 13) |
314 | 315 |