summaryrefslogtreecommitdiff
path: root/include/net
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2006-11-24 03:03:34 +0100
committerAdrian Bunk <bunk@stusta.de>2006-11-24 03:03:34 +0100
commitd6042b2ec9446e7955d72a2155a4dff473ccc511 (patch)
tree20ace8632910704d6162227fd17f55a458bb4866 /include/net
parent635cc29c54bd88c69a2bbd357401cfaf67190aef (diff)
downloadlwn-d6042b2ec9446e7955d72a2155a4dff473ccc511.tar.gz
lwn-d6042b2ec9446e7955d72a2155a4dff473ccc511.zip
[IPX]: Annotate and fix IPX checksum
Calculation of IPX checksum got buggered about 2.4.0. The old variant mangled the packet; that got fixed, but calculation itself got buggered. Restored the correct logics, fixed a subtle breakage we used to have even back then: if the sum is 0 mod 0xffff, we want to return 0, not 0xffff. The latter has special meaning for IPX (cheksum disabled). Observation (and obvious fix) nicked from history of FreeBSD ipx_cksum.c... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Adrian Bunk <bunk@stusta.de>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/ipx.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/net/ipx.h b/include/net/ipx.h
index 5c0cf33826c5..0447b3cddb74 100644
--- a/include/net/ipx.h
+++ b/include/net/ipx.h
@@ -26,8 +26,8 @@ struct ipx_address {
#define IPX_MAX_PPROP_HOPS 8
struct ipxhdr {
- __u16 ipx_checksum __attribute__ ((packed));
-#define IPX_NO_CHECKSUM 0xFFFF
+ __be16 ipx_checksum __attribute__ ((packed));
+#define IPX_NO_CHECKSUM __constant_htons(0xFFFF)
__u16 ipx_pktsize __attribute__ ((packed));
__u8 ipx_tctrl;
__u8 ipx_type;