Lines Matching +full:exact +full:- +full:len
1 // SPDX-License-Identifier: GPL-2.0
3 * arch/x86_64/lib/csum-partial.c
6 * in an architecture-specific manner due to speed.
12 #include <asm/word-at-a-time.h>
42 * it's best to have buff aligned on a 64-bit boundary
44 __wsum csum_partial(const void *buff, int len, __wsum sum) in csum_partial() argument
48 /* Do two 40-byte chunks in parallel to get better ILP */ in csum_partial()
49 if (likely(len >= 80)) { in csum_partial()
55 len -= 80; in csum_partial()
56 } while (len >= 80); in csum_partial()
64 * len == 40 is the hot case due to IPv6 headers, so return in csum_partial()
65 * early for that exact case without checking the tail bytes. in csum_partial()
67 if (len >= 40) { in csum_partial()
69 len -= 40; in csum_partial()
70 if (!len) in csum_partial()
75 if (len & 32) { in csum_partial()
85 if (len & 16) { in csum_partial()
93 if (len & 8) { in csum_partial()
100 if (len & 7) { in csum_partial()
101 unsigned int shift = (-len << 3) & 63; in csum_partial()
116 * this routine is used for miscellaneous IP-like checksums, mainly
119 __sum16 ip_compute_csum(const void *buff, int len) in ip_compute_csum() argument
121 return csum_fold(csum_partial(buff, len, 0)); in ip_compute_csum()