diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2006-11-15 00:23:59 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-03 00:23:25 -0500 |
commit | 56649d5d3c4cb0fe6dd34808ca9f9208d84130ab (patch) | |
tree | 0cb1253ffbc068033d5e7bef9b34383816c3050c /include/net/ip6_checksum.h | |
parent | b8e4e01dd5576a14602a49829f9f9d997bb60b6b (diff) |
[NET]: Generic checksum annotations and cleanups.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/ip6_checksum.h')
-rw-r--r-- | include/net/ip6_checksum.h | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/include/net/ip6_checksum.h b/include/net/ip6_checksum.h index 3dfc885bdf25..68e2b32cf1d6 100644 --- a/include/net/ip6_checksum.h +++ b/include/net/ip6_checksum.h | |||
@@ -34,60 +34,60 @@ | |||
34 | 34 | ||
35 | #ifndef _HAVE_ARCH_IPV6_CSUM | 35 | #ifndef _HAVE_ARCH_IPV6_CSUM |
36 | 36 | ||
37 | static __inline__ unsigned short int csum_ipv6_magic(struct in6_addr *saddr, | 37 | static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, |
38 | struct in6_addr *daddr, | 38 | const struct in6_addr *daddr, |
39 | __u16 len, | 39 | __u32 len, unsigned short proto, |
40 | unsigned short proto, | 40 | __wsum csum) |
41 | unsigned int csum) | ||
42 | { | 41 | { |
43 | 42 | ||
44 | int carry; | 43 | int carry; |
45 | __u32 ulen; | 44 | __u32 ulen; |
46 | __u32 uproto; | 45 | __u32 uproto; |
46 | __u32 sum = (__force u32)csum; | ||
47 | 47 | ||
48 | csum += saddr->s6_addr32[0]; | 48 | sum += (__force u32)saddr->s6_addr32[0]; |
49 | carry = (csum < saddr->s6_addr32[0]); | 49 | carry = (sum < (__force u32)saddr->s6_addr32[0]); |
50 | csum += carry; | 50 | sum += carry; |
51 | 51 | ||
52 | csum += saddr->s6_addr32[1]; | 52 | sum += (__force u32)saddr->s6_addr32[1]; |
53 | carry = (csum < saddr->s6_addr32[1]); | 53 | carry = (sum < (__force u32)saddr->s6_addr32[1]); |
54 | csum += carry; | 54 | sum += carry; |
55 | 55 | ||
56 | csum += saddr->s6_addr32[2]; | 56 | sum += (__force u32)saddr->s6_addr32[2]; |
57 | carry = (csum < saddr->s6_addr32[2]); | 57 | carry = (sum < (__force u32)saddr->s6_addr32[2]); |
58 | csum += carry; | 58 | sum += carry; |
59 | 59 | ||
60 | csum += saddr->s6_addr32[3]; | 60 | sum += (__force u32)saddr->s6_addr32[3]; |
61 | carry = (csum < saddr->s6_addr32[3]); | 61 | carry = (sum < (__force u32)saddr->s6_addr32[3]); |
62 | csum += carry; | 62 | sum += carry; |
63 | 63 | ||
64 | csum += daddr->s6_addr32[0]; | 64 | sum += (__force u32)daddr->s6_addr32[0]; |
65 | carry = (csum < daddr->s6_addr32[0]); | 65 | carry = (sum < (__force u32)daddr->s6_addr32[0]); |
66 | csum += carry; | 66 | sum += carry; |
67 | 67 | ||
68 | csum += daddr->s6_addr32[1]; | 68 | sum += (__force u32)daddr->s6_addr32[1]; |
69 | carry = (csum < daddr->s6_addr32[1]); | 69 | carry = (sum < (__force u32)daddr->s6_addr32[1]); |
70 | csum += carry; | 70 | sum += carry; |
71 | 71 | ||
72 | csum += daddr->s6_addr32[2]; | 72 | sum += (__force u32)daddr->s6_addr32[2]; |
73 | carry = (csum < daddr->s6_addr32[2]); | 73 | carry = (sum < (__force u32)daddr->s6_addr32[2]); |
74 | csum += carry; | 74 | sum += carry; |
75 | 75 | ||
76 | csum += daddr->s6_addr32[3]; | 76 | sum += (__force u32)daddr->s6_addr32[3]; |
77 | carry = (csum < daddr->s6_addr32[3]); | 77 | carry = (sum < (__force u32)daddr->s6_addr32[3]); |
78 | csum += carry; | 78 | sum += carry; |
79 | 79 | ||
80 | ulen = htonl((__u32) len); | 80 | ulen = (__force u32)htonl((__u32) len); |
81 | csum += ulen; | 81 | sum += ulen; |
82 | carry = (csum < ulen); | 82 | carry = (sum < ulen); |
83 | csum += carry; | 83 | sum += carry; |
84 | 84 | ||
85 | uproto = htonl(proto); | 85 | uproto = (__force u32)htonl(proto); |
86 | csum += uproto; | 86 | sum += uproto; |
87 | carry = (csum < uproto); | 87 | carry = (sum < uproto); |
88 | csum += carry; | 88 | sum += carry; |
89 | 89 | ||
90 | return csum_fold(csum); | 90 | return csum_fold((__force __wsum)csum); |
91 | } | 91 | } |
92 | 92 | ||
93 | #endif | 93 | #endif |