tunnels: fix netns vs proto registration ordering
[safe/jmp/linux-2.6] / lib / checksum.c
index b2e2fd4..0975087 100644 (file)
@@ -37,7 +37,8 @@
 
 #include <asm/byteorder.h>
 
-static inline unsigned short from32to16(unsigned long x)
+#ifndef do_csum
+static inline unsigned short from32to16(unsigned int x)
 {
        /* add up 16-bit and 16-bit for 16+c bit */
        x = (x & 0xffff) + (x >> 16);
@@ -49,16 +50,16 @@ static inline unsigned short from32to16(unsigned long x)
 static unsigned int do_csum(const unsigned char *buff, int len)
 {
        int odd, count;
-       unsigned long result = 0;
+       unsigned int result = 0;
 
        if (len <= 0)
                goto out;
        odd = 1 & (unsigned long) buff;
        if (odd) {
 #ifdef __LITTLE_ENDIAN
-               result = *buff;
-#else
                result += (*buff << 8);
+#else
+               result = *buff;
 #endif
                len--;
                buff++;
@@ -73,9 +74,9 @@ static unsigned int do_csum(const unsigned char *buff, int len)
                }
                count >>= 1;            /* nr of 32-bit words.. */
                if (count) {
-                       unsigned long carry = 0;
+                       unsigned int carry = 0;
                        do {
-                               unsigned long w = *(unsigned int *) buff;
+                               unsigned int w = *(unsigned int *) buff;
                                count--;
                                buff += 4;
                                result += carry;
@@ -102,6 +103,7 @@ static unsigned int do_csum(const unsigned char *buff, int len)
 out:
        return result;
 }
+#endif
 
 /*
  *     This is a version of ip_compute_csum() optimized for IP headers,