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>
This commit is contained in:

کامیت شده توسط
David S. Miller

والد
4b5a698ef4
کامیت
38b221957b
@@ -4277,8 +4277,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
|
||||
if (unlikely(adapter->vlgrp &&
|
||||
(status & E1000_RXD_STAT_VP))) {
|
||||
vlan_hwaccel_receive_skb(skb, adapter->vlgrp,
|
||||
le16_to_cpu(rx_desc->special) &
|
||||
E1000_RXD_SPC_VLAN_MASK);
|
||||
le16_to_cpu(rx_desc->special));
|
||||
} else {
|
||||
netif_receive_skb(skb);
|
||||
}
|
||||
@@ -4286,8 +4285,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
|
||||
if (unlikely(adapter->vlgrp &&
|
||||
(status & E1000_RXD_STAT_VP))) {
|
||||
vlan_hwaccel_rx(skb, adapter->vlgrp,
|
||||
le16_to_cpu(rx_desc->special) &
|
||||
E1000_RXD_SPC_VLAN_MASK);
|
||||
le16_to_cpu(rx_desc->special));
|
||||
} else {
|
||||
netif_rx(skb);
|
||||
}
|
||||
@@ -4464,16 +4462,14 @@ copydone:
|
||||
#ifdef CONFIG_E1000_NAPI
|
||||
if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) {
|
||||
vlan_hwaccel_receive_skb(skb, adapter->vlgrp,
|
||||
le16_to_cpu(rx_desc->wb.middle.vlan) &
|
||||
E1000_RXD_SPC_VLAN_MASK);
|
||||
le16_to_cpu(rx_desc->wb.middle.vlan));
|
||||
} else {
|
||||
netif_receive_skb(skb);
|
||||
}
|
||||
#else /* CONFIG_E1000_NAPI */
|
||||
if (unlikely(adapter->vlgrp && (staterr & E1000_RXD_STAT_VP))) {
|
||||
vlan_hwaccel_rx(skb, adapter->vlgrp,
|
||||
le16_to_cpu(rx_desc->wb.middle.vlan) &
|
||||
E1000_RXD_SPC_VLAN_MASK);
|
||||
le16_to_cpu(rx_desc->wb.middle.vlan));
|
||||
} else {
|
||||
netif_rx(skb);
|
||||
}
|
||||
|
مرجع در شماره جدید
Block a user