From 6c6eae943abe90bfb683d6d61d2b277c9d1c916f Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 25 Jan 2017 11:19:45 +0800 Subject: [PATCH] mips checksum error -- csum_tcpudp_nofold If the input parameters as saddr = 0xc0a8fd60,daddr = 0xc0a8fda1,len = 80, proto = 17, sum =0x7eae049d. The correct result should be 1, but original function return 0. --- arch/mips/include/asm/checksum.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/mips/include/asm/checksum.h b/arch/mips/include/asm/checksum.h index 7749daf2a46594..0e351c523015af 100644 --- a/arch/mips/include/asm/checksum.h +++ b/arch/mips/include/asm/checksum.h @@ -184,6 +184,10 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, " daddu %0, %2 \n" " daddu %0, %3 \n" " daddu %0, %4 \n" + " dsrl32 $1, %0, 0 \n" + " dsll32 %0, %0, 0 \n" + " dsrl32 %0, %0, 0 \n" + " daddu %0, $1 \n" " dsll32 $1, %0, 0 \n" " daddu %0, $1 \n" " dsra32 %0, %0, 0 \n"