cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

checksum.h (1746B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _ASM_IA64_CHECKSUM_H
      3#define _ASM_IA64_CHECKSUM_H
      4
      5/*
      6 * Modified 1998, 1999
      7 *	David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
      8 */
      9
     10/*
     11 * This is a version of ip_compute_csum() optimized for IP headers,
     12 * which always checksum on 4 octet boundaries.
     13 */
     14extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
     15
     16/*
     17 * Computes the checksum of the TCP/UDP pseudo-header returns a 16-bit
     18 * checksum, already complemented
     19 */
     20extern __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
     21				 __u32 len, __u8 proto, __wsum sum);
     22
     23extern __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
     24				 __u32 len, __u8 proto, __wsum sum);
     25
     26/*
     27 * Computes the checksum of a memory block at buff, length len,
     28 * and adds in "sum" (32-bit)
     29 *
     30 * returns a 32-bit number suitable for feeding into itself
     31 * or csum_tcpudp_magic
     32 *
     33 * this function must be called with even lengths, except
     34 * for the last fragment, which may be odd
     35 *
     36 * it's best to have buff aligned on a 32-bit boundary
     37 */
     38extern __wsum csum_partial(const void *buff, int len, __wsum sum);
     39
     40/*
     41 * This routine is used for miscellaneous IP-like checksums, mainly in
     42 * icmp.c
     43 */
     44extern __sum16 ip_compute_csum(const void *buff, int len);
     45
     46/*
     47 * Fold a partial checksum without adding pseudo headers.
     48 */
     49static inline __sum16 csum_fold(__wsum csum)
     50{
     51	u32 sum = (__force u32)csum;
     52	sum = (sum & 0xffff) + (sum >> 16);
     53	sum = (sum & 0xffff) + (sum >> 16);
     54	return (__force __sum16)~sum;
     55}
     56
     57#define _HAVE_ARCH_IPV6_CSUM	1
     58struct in6_addr;
     59extern __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
     60			       const struct in6_addr *daddr,
     61			       __u32 len, __u8 proto, __wsum csum);
     62
     63#endif /* _ASM_IA64_CHECKSUM_H */