From: Heiner Kallweit Date: Tue, 18 Feb 2020 19:56:41 +0000 (+0100) Subject: net: core: add helper tcp_v6_gso_csum_prep X-Git-Tag: v5.7-rc1~146^2~392^2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=76eeb12b71a4aa5654694765c8c1bde9a1ce8bd8;p=thirdparty%2Flinux.git net: core: add helper tcp_v6_gso_csum_prep Several network drivers for chips that support TSO6 share the same code for preparing the TCP header, so let's factor it out to a helper. A difference is that some drivers reset the payload_len whilst others don't do this. This value is overwritten by TSO anyway, therefore the new helper resets it in general. Signed-off-by: Heiner Kallweit Reviewed-by: Alexander Duyck Signed-off-by: David S. Miller --- diff --git a/include/net/ip6_checksum.h b/include/net/ip6_checksum.h index 7bec95df4f804..27ec612cd4a45 100644 --- a/include/net/ip6_checksum.h +++ b/include/net/ip6_checksum.h @@ -76,6 +76,15 @@ static inline void __tcp_v6_send_check(struct sk_buff *skb, } } +static inline void tcp_v6_gso_csum_prep(struct sk_buff *skb) +{ + struct ipv6hdr *ipv6h = ipv6_hdr(skb); + struct tcphdr *th = tcp_hdr(skb); + + ipv6h->payload_len = 0; + th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0); +} + #if IS_ENABLED(CONFIG_IPV6) static inline void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb) {