2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS TCP/IP protocol driver
4 * FILE: tcpip/checksum.c
5 * PURPOSE: Checksum routines
6 * NOTES: The checksum routine is from RFC 1071
7 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
9 * CSH 01/08-2000 Created
15 ULONG
ChecksumCompute(
20 * FUNCTION: Calculate checksum of a buffer
22 * Data = Pointer to buffer with data
23 * Count = Number of bytes in buffer
24 * Seed = Previously calculated checksum (if any)
29 /* FIXME: This should be done in assembler */
31 register ULONG Sum
= Seed
;
34 Sum
+= *(PUSHORT
)Data
;
39 /* Add left-over byte, if any */
43 /* Fold 32-bit sum to 16 bits */
45 Sum
= (Sum
& 0xFFFF) + (Sum
>> 16);