root/include/asm-alpha/checksum.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. csum_fold

   1 #ifndef _ALPHA_CHECKSUM_H
   2 #define _ALPHA_CHECKSUM_H
   3 
   4 
   5 /*
   6  *      This is a version of ip_compute_csum() optimized for IP headers,
   7  *      which always checksum on 4 octet boundaries.
   8  */
   9 extern unsigned short ip_fast_csum(unsigned char * iph, unsigned int ihl);
  10 
  11 /*
  12  * computes the checksum of the TCP/UDP pseudo-header
  13  * returns a 16-bit checksum, already complemented
  14  */
  15 extern unsigned short int csum_tcpudp_magic(unsigned long saddr,
  16                                            unsigned long daddr,
  17                                            unsigned short len,
  18                                            unsigned short proto,
  19                                            unsigned int sum);
  20 
  21 /*
  22  * computes the checksum of a memory block at buff, length len,
  23  * and adds in "sum" (32-bit)
  24  *
  25  * returns a 32-bit number suitable for feeding into itself
  26  * or csum_tcpudp_magic
  27  *
  28  * this function must be called with even lengths, except
  29  * for the last fragment, which may be odd
  30  *
  31  * it's best to have buff aligned on a 32-bit boundary
  32  */
  33 extern unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum);
  34 
  35 /*
  36  * the same as csum_partial, but copies from src while it
  37  * checksums
  38  *
  39  * here even more important to align src and dst on a 32-bit (or even
  40  * better 64-bit) boundary
  41  */
  42 unsigned int csum_partial_copy( const char *src, char *dst, int len, int sum);
  43 
  44 /*
  45  * the same as csum_partial, but copies from user space (but on the alpha
  46  * we have just one address space, so this is identical to the above)
  47  */
  48 #define csum_partial_copy_fromuser csum_partial_copy
  49 
  50 
  51 /*
  52  * this routine is used for miscellaneous IP-like checksums, mainly
  53  * in icmp.c
  54  */
  55 
  56 extern unsigned short ip_compute_csum(unsigned char * buff, int len);
  57 
  58 /*
  59  *      Fold a partial checksum without adding pseudo headers
  60  */
  61 
  62 static inline unsigned short csum_fold(unsigned int sum)
     /* [previous][next][first][last][top][bottom][index][help] */
  63 {
  64         sum = (sum & 0xffff) + (sum >> 16);
  65         sum = (sum & 0xffff) + (sum >> 16);
  66         return ~sum;
  67 }
  68 
  69 #endif

/* [previous][next][first][last][top][bottom][index][help] */