summaryrefslogtreecommitdiffstats
path: root/arch/riscv/include/asm
diff options
context:
space:
mode:
authorCharlie Jenkins <charlie@rivosinc.com>2024-01-08 15:57:05 -0800
committerPalmer Dabbelt <palmer@rivosinc.com>2024-01-17 17:52:32 -0800
commita04c192eabfb76824d00f1b4cd0f25844a59d0f0 (patch)
tree4958cc44bee3652ebefe01c374dd058151d58b36 /arch/riscv/include/asm
parente11e367e9fe57164ea609807ed27184c85263355 (diff)
downloadlinux-a04c192eabfb76824d00f1b4cd0f25844a59d0f0.tar.gz
linux-a04c192eabfb76824d00f1b4cd0f25844a59d0f0.tar.bz2
linux-a04c192eabfb76824d00f1b4cd0f25844a59d0f0.zip
riscv: Add checksum library
Provide a 32 and 64 bit version of do_csum. When compiled for 32-bit will load from the buffer in groups of 32 bits, and when compiled for 64-bit will load in groups of 64 bits. Additionally provide riscv optimized implementation of csum_ipv6_magic. Signed-off-by: Charlie Jenkins <charlie@rivosinc.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Reviewed-by: Xiao Wang <xiao.w.wang@intel.com> Link: https://lore.kernel.org/r/20240108-optimize_checksum-v15-4-1c50de5f2167@rivosinc.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Diffstat (limited to 'arch/riscv/include/asm')
-rw-r--r--arch/riscv/include/asm/checksum.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/riscv/include/asm/checksum.h b/arch/riscv/include/asm/checksum.h
index 5a810126aac7..a5b60b54b101 100644
--- a/arch/riscv/include/asm/checksum.h
+++ b/arch/riscv/include/asm/checksum.h
@@ -12,6 +12,17 @@
#define ip_fast_csum ip_fast_csum
+extern unsigned int do_csum(const unsigned char *buff, int len);
+#define do_csum do_csum
+
+/* Default version is sufficient for 32 bit */
+#ifndef CONFIG_32BIT
+#define _HAVE_ARCH_IPV6_CSUM
+__sum16 csum_ipv6_magic(const struct in6_addr *saddr,
+ const struct in6_addr *daddr,
+ __u32 len, __u8 proto, __wsum sum);
+#endif
+
/* Define riscv versions of functions before importing asm-generic/checksum.h */
#include <asm-generic/checksum.h>