Commit 20c1f641 authored by Arnd Bergmann's avatar Arnd Bergmann

lib/checksum.c: make do_csum optional

Mike Frysinger suggested that do_csum should be optional
so that an architecture can use the generic checksum code
but still provide an optimized fast-path for the most
critical function.

This can mean an implementation using inline assembly,
or in case of Alpha one using 64-bit arithmetic in C.

Cc: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent c44ba9f6
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <asm/byteorder.h> #include <asm/byteorder.h>
#ifndef do_csum
static inline unsigned short from32to16(unsigned int x) static inline unsigned short from32to16(unsigned int x)
{ {
/* add up 16-bit and 16-bit for 16+c bit */ /* add up 16-bit and 16-bit for 16+c bit */
...@@ -102,6 +103,7 @@ static unsigned int do_csum(const unsigned char *buff, int len) ...@@ -102,6 +103,7 @@ static unsigned int do_csum(const unsigned char *buff, int len)
out: out:
return result; return result;
} }
#endif
/* /*
* This is a version of ip_compute_csum() optimized for IP headers, * This is a version of ip_compute_csum() optimized for IP headers,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment