1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 21da177e4SLinus Torvalds #ifndef _LINUX_CRC_CCITT_H 31da177e4SLinus Torvalds #define _LINUX_CRC_CCITT_H 41da177e4SLinus Torvalds 51da177e4SLinus Torvalds #include <linux/types.h> 61da177e4SLinus Torvalds 71da177e4SLinus Torvalds extern u16 const crc_ccitt_table[256]; 80d85adb5SAndrew Morton extern u16 const crc_ccitt_false_table[256]; 91da177e4SLinus Torvalds 101da177e4SLinus Torvalds extern u16 crc_ccitt(u16 crc, const u8 *buffer, size_t len); 110d85adb5SAndrew Morton extern u16 crc_ccitt_false(u16 crc, const u8 *buffer, size_t len); 121da177e4SLinus Torvalds crc_ccitt_byte(u16 crc,const u8 c)131da177e4SLinus Torvaldsstatic inline u16 crc_ccitt_byte(u16 crc, const u8 c) 141da177e4SLinus Torvalds { 151da177e4SLinus Torvalds return (crc >> 8) ^ crc_ccitt_table[(crc ^ c) & 0xff]; 161da177e4SLinus Torvalds } 171da177e4SLinus Torvalds crc_ccitt_false_byte(u16 crc,const u8 c)180d85adb5SAndrew Mortonstatic inline u16 crc_ccitt_false_byte(u16 crc, const u8 c) 190d85adb5SAndrew Morton { 200d85adb5SAndrew Morton return (crc << 8) ^ crc_ccitt_false_table[(crc >> 8) ^ c]; 210d85adb5SAndrew Morton } 220d85adb5SAndrew Morton 231da177e4SLinus Torvalds #endif /* _LINUX_CRC_CCITT_H */ 24