[ovs-dev] [PATCH 06/19] datapath: Compatibility code for csum_replace4.

Jesse Gross jesse at nicira.com
Thu Dec 9 06:14:04 UTC 2010


Kernels ealier than 2.6.25 did not define csum_replace4, so
implement it ourselves.

Signed-off-by: Jesse Gross <jesse at nicira.com>
---
 .../linux-2.6/compat-2.6/include/net/checksum.h    |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/datapath/linux-2.6/compat-2.6/include/net/checksum.h b/datapath/linux-2.6/compat-2.6/include/net/checksum.h
index 96fd3a6..a8c47d8 100644
--- a/datapath/linux-2.6/compat-2.6/include/net/checksum.h
+++ b/datapath/linux-2.6/compat-2.6/include/net/checksum.h
@@ -18,4 +18,13 @@ static inline __wsum csum_unfold(__sum16 n)
 	csum_and_copy_to_user(src, dst, len, sum, NULL, err_ptr)
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
+static inline void csum_replace4(__sum16 *sum, __be32 from, __be32 to)
+{
+	__be32 diff[] = { ~from, to };
+
+	sum = csum_fold(csum_partial((char *)diff, sizeof(diff), ~csum_unfold(*sum)));
+}
+#endif
+
 #endif /* checksum.h */
-- 
1.7.1





More information about the dev mailing list