404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.137.202.126: ~ $
/* 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

Filemanager

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