diff options
author | Paul Mackerras <paulus@ozlabs.org> | 2016-11-03 06:15:42 +0100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2017-01-25 03:34:18 +0100 |
commit | d4fde568a34a93897dfb9ae64cfe9dda9d5c908c (patch) | |
tree | 88beaa27d42bc3b780167930f79129ecd29fab38 /arch/powerpc/include/asm/checksum.h | |
parent | powerpc/64: Fix checksum folding in csum_tcpudp_nofold and ip_fast_csum_nofold (diff) | |
download | linux-d4fde568a34a93897dfb9ae64cfe9dda9d5c908c.tar.xz linux-d4fde568a34a93897dfb9ae64cfe9dda9d5c908c.zip |
powerpc/64: Use optimized checksum routines on little-endian
Currently we have optimized hand-coded assembly checksum routines for
big-endian 64-bit systems, but for little-endian we use the generic C
routines. This modifies the optimized routines to work for
little-endian. With this, we no longer need to enable
CONFIG_GENERIC_CSUM. This also fixes a couple of comments in
checksum_64.S so they accurately reflect what the associated instruction
does.
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
[mpe: Use the more common __BIG_ENDIAN__]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm/checksum.h')
-rw-r--r-- | arch/powerpc/include/asm/checksum.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/checksum.h b/arch/powerpc/include/asm/checksum.h index 5b1a6e39afa7..4e63787dc3be 100644 --- a/arch/powerpc/include/asm/checksum.h +++ b/arch/powerpc/include/asm/checksum.h @@ -70,7 +70,11 @@ static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len, s += (__force u32)saddr; s += (__force u32)daddr; +#ifdef __BIG_ENDIAN__ s += proto + len; +#else + s += (proto + len) << 8; +#endif return (__force __wsum) from64to32(s); #else __asm__("\n\ |