ip6_checksum.h (75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37) ip6_checksum.h (76eeb12b71a4aa5654694765c8c1bde9a1ce8bd8)
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * Checksumming functions for IPv6
8 *

--- 62 unchanged lines hidden (view full) ---

71 skb->csum_offset = offsetof(struct tcphdr, check);
72 } else {
73 th->check = tcp_v6_check(skb->len, saddr, daddr,
74 csum_partial(th, th->doff << 2,
75 skb->csum));
76 }
77}
78
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * INET An implementation of the TCP/IP protocol suite for the LINUX
4 * operating system. INET is implemented using the BSD Socket
5 * interface as the means of communication with the user level.
6 *
7 * Checksumming functions for IPv6
8 *

--- 62 unchanged lines hidden (view full) ---

71 skb->csum_offset = offsetof(struct tcphdr, check);
72 } else {
73 th->check = tcp_v6_check(skb->len, saddr, daddr,
74 csum_partial(th, th->doff << 2,
75 skb->csum));
76 }
77}
78
79static inline void tcp_v6_gso_csum_prep(struct sk_buff *skb)
80{
81 struct ipv6hdr *ipv6h = ipv6_hdr(skb);
82 struct tcphdr *th = tcp_hdr(skb);
83
84 ipv6h->payload_len = 0;
85 th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0);
86}
87
79#if IS_ENABLED(CONFIG_IPV6)
80static inline void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb)
81{
82 struct ipv6_pinfo *np = inet6_sk(sk);
83
84 __tcp_v6_send_check(skb, &np->saddr, &sk->sk_v6_daddr);
85}
86#endif

--- 15 unchanged lines hidden ---
88#if IS_ENABLED(CONFIG_IPV6)
89static inline void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb)
90{
91 struct ipv6_pinfo *np = inet6_sk(sk);
92
93 __tcp_v6_send_check(skb, &np->saddr, &sk->sk_v6_daddr);
94}
95#endif

--- 15 unchanged lines hidden ---