patch-2.1.99 linux/arch/alpha/lib/checksum.c
Next file: linux/arch/alpha/lib/copy_user.S
Previous file: linux/arch/alpha/config.in
Back to the patch index
Back to the overall index
-  Lines: 28
-  Date:
Tue Apr 28 22:28:10 1998
-  Orig file: 
v2.1.98/linux/arch/alpha/lib/checksum.c
-  Orig date: 
Sat Nov 23 02:29:03 1996
diff -u --recursive --new-file v2.1.98/linux/arch/alpha/lib/checksum.c linux/arch/alpha/lib/checksum.c
@@ -37,6 +37,27 @@
 		((unsigned long) proto << 8));
 }
 
+unsigned int csum_tcpudp_nofold(unsigned long saddr,
+				   unsigned long daddr,
+				   unsigned short len,
+				   unsigned short proto,
+				   unsigned int sum)
+{
+	unsigned long result;
+
+	result = (saddr + daddr + sum +
+		  ((unsigned long) ntohs(len) << 16) +
+		  ((unsigned long) proto << 8));
+
+	/* Fold down to 32-bits so we don't loose in the typedef-less 
+	   network stack.  */
+	/* 64 to 33 */
+	result = (result & 0xffffffff) + (result >> 32);
+	/* 33 to 32 */
+	result = (result & 0xffffffff) + (result >> 32);
+	return result;
+}
+
 /*
  * Do a 64-bit checksum on an arbitrary memory area..
  *
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov