ipv6: update skb->csum when CE mark is propagated

When a tunnel decapsulates the outer header, it has to comply
with RFC 6080 and eventually propagate CE mark into inner header.

It turns out IP6_ECN_set_ce() does not correctly update skb->csum
for CHECKSUM_COMPLETE packets, triggering infamous "hw csum failure"
messages and stack traces.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Dieser Commit ist enthalten in:
Eric Dumazet
2016-01-15 04:56:56 -08:00
committet von David S. Miller
Ursprung 113c74d83e
Commit 34ae6a1aa0
2 geänderte Dateien mit 17 neuen und 4 gelöschten Zeilen

Datei anzeigen

@@ -23,7 +23,7 @@ static inline void ipip6_ecn_decapsulate(struct sk_buff *skb)
struct ipv6hdr *inner_iph = ipipv6_hdr(skb);
if (INET_ECN_is_ce(XFRM_MODE_SKB_CB(skb)->tos))
IP6_ECN_set_ce(inner_iph);
IP6_ECN_set_ce(skb, inner_iph);
}
/* Add encapsulation header.