/* it's best to have buff aligned on a 32-bit boundary Egads... That thing apparently assumes that  */
__wsum csum_partial(const void *buff, int len, __wsum sum)
/* it's best to have buff aligned on a 32-bit boundary Egads... That thing apparently assumes that  */
__wsum csum_partial(const void *buff, int len, __wsum sum)
{
	unsigned int result = do_csum(buff, len);
	result += (__force u32)sum;
	result = (result & 0xffff) + (result >> 16);
	return (__force __wsum)result;
}