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