bnx2x: Look inside vlan when determining checksum proto.
Currently the skb->protocol field is used to setup checksum offloading on transmit for the correct protocol. However, if vlan offloading is disabled or otherwise not used, the protocol field will be ETH_P_8021Q, not the actual protocol. This will cause the checksum to be not computed correctly, even though the hardware is capable of looking inside vlan tags. Instead, look inside the header if necessary to determine the correct protocol type. To some extent this fixes a regression from 2.6.36 because it was previously not possible to disable vlan offloading and this error case was not exposed. Signed-off-by: Hao Zheng <hzheng@nicira.com> CC: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: Jesse Gross <jesse@nicira.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0a85df0046
commit
d0d9d8ef59
1 changed files with 1 additions and 1 deletions
|
@ -1680,7 +1680,7 @@ static inline u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb)
|
|||
rc = XMIT_PLAIN;
|
||||
|
||||
else {
|
||||
if (skb->protocol == htons(ETH_P_IPV6)) {
|
||||
if (vlan_get_protocol(skb) == htons(ETH_P_IPV6)) {
|
||||
rc = XMIT_CSUM_V6;
|
||||
if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
|
||||
rc |= XMIT_CSUM_TCP;
|
||||
|
|
Loading…
Reference in a new issue