ixgbe: Fix checksum error when using stacked vlan
When a skb has multiple vlans and it is CHECKSUM_PARTIAL, ixgbe_tx_csum() fails to get the network protocol and checksum related descriptor fields are not configured correctly because skb->protocol doesn't show the L3 protocol in this case. Use vlan_get_protocol() to get the proper network protocol. Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
72b1405964
Коммит
0213668f06
|
@ -7227,11 +7227,11 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
|
|||
if (!vhdr)
|
||||
goto out_drop;
|
||||
|
||||
protocol = vhdr->h_vlan_encapsulated_proto;
|
||||
tx_flags |= ntohs(vhdr->h_vlan_TCI) <<
|
||||
IXGBE_TX_FLAGS_VLAN_SHIFT;
|
||||
tx_flags |= IXGBE_TX_FLAGS_SW_VLAN;
|
||||
}
|
||||
protocol = vlan_get_protocol(skb);
|
||||
|
||||
if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
|
||||
adapter->ptp_clock &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче