/* SPDX-License-Identifier: GPL-2.0 */ /* TODO: csum_tcpudp_magic could be speeded up, and csum_fold as well */ #ifndef _CRIS_CHECKSUM_H #define _CRIS_CHECKSUM_H #include <arch/checksum.h> /* * computes the checksum of a memory block at buff, length len, * and adds in "sum" (32-bit) * * returns a 32-bit number suitable for feeding into itself * or csum_tcpudp_magic * * this function must be called with even lengths, except * for the last fragment, which may be odd * * it's best to have buff aligned on a 32-bit boundary */ __wsum csum_partial(const void *buff, int len, __wsum sum); /* * the same as csum_partial, but copies from src while it * checksums * * here even more important to align src and dst on a 32-bit (or even * better 64-bit) boundary */ __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum); /* * Fold a partial checksum into a word */ static inline __sum16 csum_fold(__wsum csum) { u32 sum = (__force u32)csum; sum = (sum & 0xffff) + (sum >> 16); /* add in end-around carry */ sum = (sum & 0xffff) + (sum >> 16); /* add in end-around carry */ return (__force __sum16)~sum; } extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *errptr); /* * This is a version of ip_compute_csum() optimized for IP headers, * which always checksum on 4 octet boundaries. * */ static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl) { return csum_fold(csum_partial(iph, ihl * 4, 0)); } /* * computes the checksum of the TCP/UDP pseudo-header * returns a 16-bit checksum, already complemented */ static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, __u32 len, __u8 proto, __wsum sum) { return csum_fold(csum_tcpudp_nofold(saddr,daddr,len,proto,sum)); } /* * this routine is used for miscellaneous IP-like checksums, mainly * in icmp.c */ static inline __sum16 ip_compute_csum(const void *buff, int len) { return csum_fold (csum_partial(buff, len, 0)); } #endif
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Kbuild | File | 729 B | 0644 |
|
asm-offsets.h | File | 35 B | 0644 |
|
axisflashmap.h | File | 1.92 KB | 0644 |
|
bitops.h | File | 1.27 KB | 0644 |
|
bug.h | File | 108 B | 0644 |
|
bugs.h | File | 300 B | 0644 |
|
cache.h | File | 133 B | 0644 |
|
cacheflush.h | File | 1.3 KB | 0644 |
|
checksum.h | File | 2.01 KB | 0644 |
|
delay.h | File | 537 B | 0644 |
|
dma-mapping.h | File | 399 B | 0644 |
|
dma.h | File | 458 B | 0644 |
|
eshlibld.h | File | 3.49 KB | 0644 |
|
etraxi2c.h | File | 1019 B | 0644 |
|
fasttimer.h | File | 1.12 KB | 0644 |
|
fb.h | File | 244 B | 0644 |
|
ftrace.h | File | 12 B | 0644 |
|
hw_irq.h | File | 53 B | 0644 |
|
io.h | File | 732 B | 0644 |
|
irq.h | File | 194 B | 0644 |
|
irqflags.h | File | 27 B | 0644 |
|
mmu.h | File | 155 B | 0644 |
|
mmu_context.h | File | 927 B | 0644 |
|
page.h | File | 2.52 KB | 0644 |
|
pci.h | File | 1.05 KB | 0644 |
|
pgalloc.h | File | 1.36 KB | 0644 |
|
pgtable.h | File | 9.58 KB | 0644 |
|
processor.h | File | 1.82 KB | 0644 |
|
ptrace.h | File | 393 B | 0644 |
|
segment.h | File | 148 B | 0644 |
|
serial.h | File | 211 B | 0644 |
|
shmparam.h | File | 232 B | 0644 |
|
signal.h | File | 505 B | 0644 |
|
stacktrace.h | File | 213 B | 0644 |
|
string.h | File | 508 B | 0644 |
|
swab.h | File | 159 B | 0644 |
|
switch_to.h | File | 449 B | 0644 |
|
termios.h | File | 1.71 KB | 0644 |
|
thread_info.h | File | 2.47 KB | 0644 |
|
timex.h | File | 433 B | 0644 |
|
tlb.h | File | 453 B | 0644 |
|
tlbflush.h | File | 1.09 KB | 0644 |
|
uaccess.h | File | 9.59 KB | 0644 |
|
ucontext.h | File | 322 B | 0644 |
|
unaligned.h | File | 345 B | 0644 |
|
unistd.h | File | 972 B | 0644 |
|
user.h | File | 2.14 KB | 0644 |
|