--- linux-2.6.22.14/include/asm-mips/checksum.h 2008-01-22 13:55:49.000000000 +0200 +++ linux/include/asm-mips/checksum.h 2008-01-15 10:54:58.000000000 +0200 @@ -14,6 +14,7 @@ #include #include +#include /* * computes the checksum of a memory block at buff, length len, @@ -105,23 +106,23 @@ static inline __sum16 ip_fast_csum(const unsigned int csum; int carry; - csum = word[0]; - csum += word[1]; - carry = (csum < word[1]); + csum = get_unaligned(word + 0); + csum += get_unaligned(word + 1); + carry = (csum < get_unaligned(word + 1)); csum += carry; - csum += word[2]; - carry = (csum < word[2]); + csum += get_unaligned(word + 2); + carry = (csum < get_unaligned(word + 2)); csum += carry; - csum += word[3]; - carry = (csum < word[3]); + csum += get_unaligned(word + 3); + carry = (csum < get_unaligned(word + 3)); csum += carry; word += 4; do { - csum += *word; - carry = (csum < *word); + csum += get_unaligned(word); + carry = (csum < get_unaligned(word)); csum += carry; word++; } while (word != stop);