summaryrefslogtreecommitdiffstats
path: root/sys/arm/include
diff options
context:
space:
mode:
authorcognet <cognet@FreeBSD.org>2005-05-24 21:44:34 +0000
committercognet <cognet@FreeBSD.org>2005-05-24 21:44:34 +0000
commitf58c9faa71e25ff5e86f284b7f92cc6887793ad4 (patch)
tree0867d087cc9514931f073ae844050dec7d2346f3 /sys/arm/include
parent59b5bfef855bbefd3e6fafaa39f8287eb80cb0e0 (diff)
downloadFreeBSD-src-f58c9faa71e25ff5e86f284b7f92cc6887793ad4.zip
FreeBSD-src-f58c9faa71e25ff5e86f284b7f92cc6887793ad4.tar.gz
Use asm versions of in_cksum() and friends.
Diffstat (limited to 'sys/arm/include')
-rw-r--r--sys/arm/include/in_cksum.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/arm/include/in_cksum.h b/sys/arm/include/in_cksum.h
index 26f448a..2086842 100644
--- a/sys/arm/include/in_cksum.h
+++ b/sys/arm/include/in_cksum.h
@@ -43,9 +43,19 @@
#ifdef _KERNEL
u_short in_cksum(struct mbuf *m, int len);
-u_int in_cksum_hdr(const struct ip *ip);
u_short in_addword(u_short sum, u_short b);
u_short in_pseudo(u_int sum, u_int b, u_int c);
u_short in_cksum_skip(struct mbuf *m, int len, int skip);
+u_int do_cksum(const void *, int);
+static __inline u_int
+in_cksum_hdr(const struct ip *ip)
+{
+ u_int sum = do_cksum(ip, sizeof(struct ip));
+
+ sum = (sum & 0xffff) + (sum >> 16);
+ if (sum > 0xffff)
+ sum -= 0xffff;
+ return (~sum & 0xffff);
+}
#endif /* _KERNEL */
#endif /* _MACHINE_IN_CKSUM_H_ */
OpenPOWER on IntegriCloud