summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPuranjay Mohan <puranjay@kernel.org>2024-10-26 15:53:36 +0300
committerDaniel Borkmann <daniel@iogearbox.net>2024-10-30 17:29:59 +0300
commitdb71aae70e3e646d8ba4cb50e4bd4c281a91c804 (patch)
treed4e420584ef738a26224803b3c1d726af5f12e25 /include
parent0ab7cd1f18648ab50c4685553ca92e8cdc4a42da (diff)
downloadlinux-db71aae70e3e646d8ba4cb50e4bd4c281a91c804.tar.xz
net: checksum: Move from32to16() to generic header
from32to16() is used by lib/checksum.c and also by arch/parisc/lib/checksum.c. The next patch will use it in the bpf_csum_diff helper. Move from32to16() to the include/net/checksum.h as csum_from32to16() and remove other implementations. Signed-off-by: Puranjay Mohan <puranjay@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com> Acked-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20241026125339.26459-2-puranjay@kernel.org
Diffstat (limited to 'include')
-rw-r--r--include/net/checksum.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/net/checksum.h b/include/net/checksum.h
index 1338cb92c8e7..243f972267b8 100644
--- a/include/net/checksum.h
+++ b/include/net/checksum.h
@@ -151,6 +151,12 @@ static inline void csum_replace(__wsum *csum, __wsum old, __wsum new)
*csum = csum_add(csum_sub(*csum, old), new);
}
+static inline unsigned short csum_from32to16(unsigned int sum)
+{
+ sum += (sum >> 16) | (sum << 16);
+ return (unsigned short)(sum >> 16);
+}
+
struct sk_buff;
void inet_proto_csum_replace4(__sum16 *sum, struct sk_buff *skb,
__be32 from, __be32 to, bool pseudohdr);