ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / net / irda / crc.h
1 /*********************************************************************
2  *                
3  * Filename:      crc.h
4  * Version:       
5  * Description:   CRC routines
6  * Status:        Experimental.
7  * Author:        Dag Brattli <dagb@cs.uit.no>
8  * Created at:    Mon Aug  4 20:40:53 1997
9  * Modified at:   Sun May  2 20:25:23 1999
10  * Modified by:   Dag Brattli <dagb@cs.uit.no>
11  * 
12  ********************************************************************/
13
14 #ifndef IRDA_CRC_H
15 #define IRDA_CRC_H
16
17 #include <linux/types.h>
18
19 #define INIT_FCS  0xffff   /* Initial FCS value */
20 #define GOOD_FCS  0xf0b8   /* Good final FCS value */
21
22 extern __u16 const irda_crc16_table[];
23
24 /* Recompute the FCS with one more character appended. */
25 static inline __u16 irda_fcs(__u16 fcs, __u8 c)
26 {
27         return (((fcs) >> 8) ^ irda_crc16_table[((fcs) ^ (c)) & 0xff]);
28 }
29
30 /* Recompute the FCS with len bytes appended. */
31 __u16 irda_calc_crc16( __u16 fcs, __u8 const *buf, size_t len);
32
33 #endif