git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
[pandora-kernel.git]
/
lib
/
checksum.c
diff --git
a/lib/checksum.c
b/lib/checksum.c
index
12e5a1c
..
b2e2fd4
100644
(file)
--- a/
lib/checksum.c
+++ b/
lib/checksum.c
@@
-55,7
+55,11
@@
static unsigned int do_csum(const unsigned char *buff, int len)
goto out;
odd = 1 & (unsigned long) buff;
if (odd) {
goto out;
odd = 1 & (unsigned long) buff;
if (odd) {
+#ifdef __LITTLE_ENDIAN
result = *buff;
result = *buff;
+#else
+ result += (*buff << 8);
+#endif
len--;
buff++;
}
len--;
buff++;
}
@@
-71,7
+75,7
@@
static unsigned int do_csum(const unsigned char *buff, int len)
if (count) {
unsigned long carry = 0;
do {
if (count) {
unsigned long carry = 0;
do {
- unsigned long w = *(unsigned
long
*) buff;
+ unsigned long w = *(unsigned
int
*) buff;
count--;
buff += 4;
result += carry;
count--;
buff += 4;
result += carry;
@@
-87,7
+91,11
@@
static unsigned int do_csum(const unsigned char *buff, int len)
}
}
if (len & 1)
}
}
if (len & 1)
+#ifdef __LITTLE_ENDIAN
+ result += *buff;
+#else
result += (*buff << 8);
result += (*buff << 8);
+#endif
result = from32to16(result);
if (odd)
result = ((result >> 8) & 0xff) | ((result & 0xff) << 8);
result = from32to16(result);
if (odd)
result = ((result >> 8) & 0xff) | ((result & 0xff) << 8);