Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 2358

kernel-2.6.18-238.el5.src.rpm

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Wed, 27 May 2009 15:31:06 +1000
Subject: [net] backport csum_replace4/csum_replace2
Message-id: E1M9BjG-0002A2-HI@gondolin.me.apana.org.au
O-Subject: [PATCH 2/17] net: Backport csum_replace4/csum_replace2
Bugzilla: 499347
RH-Acked-by: David Miller <davem@redhat.com>
RH-Acked-by: Neil Horman <nhorman@redhat.com>
RH-Acked-by: Thomas Graf <tgraf@redhat.com>

RHEL5 bugzilla #499347

net: Backport csum_replace4/csum_replace2

This patch backports the checksum helpers csum_replace4 and
csum_replace2.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

diff --git a/include/net/checksum.h b/include/net/checksum.h
index e0b675c..c4a23ef 100644
--- a/include/net/checksum.h
+++ b/include/net/checksum.h
@@ -89,4 +89,17 @@ static inline u32 csum_unfold(u16 n)
 	return n;
 }
 
+static inline void csum_replace4(u16 *sum, u32 from, u32 to)
+{
+	u32 diff[] = { ~from, to };
+
+	*sum = csum_fold(csum_partial((unsigned char *)diff, sizeof(diff),
+				      ~csum_unfold(*sum)));
+}
+
+static inline void csum_replace2(u16 *sum, u16 from, u16 to)
+{
+	csum_replace4(sum, from, to);
+}
+
 #endif