// SPDX-License-Identifier: GPL-2.0-only
#include <linux/crc-ccitt.h>
#include <linux/export.h>
#include <linux/module.h>
#include <linux/types.h>
/*
* This mysterious table is just the CRC of each possible byte. It can be
* computed using the standard bit-at-a-time methods. The polynomial can
* be seen in entry 128, 0x8408. This corresponds to x^0 + x^5 + x^12.
* Add the implicit x^16, and you have the standard CRC-CCITT.
*/
u16 const crc_ccitt_table[256 ] = {
0 x0000, 0 x1189, 0 x2312, 0 x329b, 0 x4624, 0 x57ad, 0 x6536, 0 x74bf,
0 x8c48, 0 x9dc1, 0 xaf5a, 0 xbed3, 0 xca6c, 0 xdbe5, 0 xe97e, 0 xf8f7,
0 x1081, 0 x0108, 0 x3393, 0 x221a, 0 x56a5, 0 x472c, 0 x75b7, 0 x643e,
0 x9cc9, 0 x8d40, 0 xbfdb, 0 xae52, 0 xdaed, 0 xcb64, 0 xf9ff, 0 xe876,
0 x2102, 0 x308b, 0 x0210, 0 x1399, 0 x6726, 0 x76af, 0 x4434, 0 x55bd,
0 xad4a, 0 xbcc3, 0 x8e58, 0 x9fd1, 0 xeb6e, 0 xfae7, 0 xc87c, 0 xd9f5,
0 x3183, 0 x200a, 0 x1291, 0 x0318, 0 x77a7, 0 x662e, 0 x54b5, 0 x453c,
0 xbdcb, 0 xac42, 0 x9ed9, 0 x8f50, 0 xfbef, 0 xea66, 0 xd8fd, 0 xc974,
0 x4204, 0 x538d, 0 x6116, 0 x709f, 0 x0420, 0 x15a9, 0 x2732, 0 x36bb,
0 xce4c, 0 xdfc5, 0 xed5e, 0 xfcd7, 0 x8868, 0 x99e1, 0 xab7a, 0 xbaf3,
0 x5285, 0 x430c, 0 x7197, 0 x601e, 0 x14a1, 0 x0528, 0 x37b3, 0 x263a,
0 xdecd, 0 xcf44, 0 xfddf, 0 xec56, 0 x98e9, 0 x8960, 0 xbbfb, 0 xaa72,
0 x6306, 0 x728f, 0 x4014, 0 x519d, 0 x2522, 0 x34ab, 0 x0630, 0 x17b9,
0 xef4e, 0 xfec7, 0 xcc5c, 0 xddd5, 0 xa96a, 0 xb8e3, 0 x8a78, 0 x9bf1,
0 x7387, 0 x620e, 0 x5095, 0 x411c, 0 x35a3, 0 x242a, 0 x16b1, 0 x0738,
0 xffcf, 0 xee46, 0 xdcdd, 0 xcd54, 0 xb9eb, 0 xa862, 0 x9af9, 0 x8b70,
0 x8408, 0 x9581, 0 xa71a, 0 xb693, 0 xc22c, 0 xd3a5, 0 xe13e, 0 xf0b7,
0 x0840, 0 x19c9, 0 x2b52, 0 x3adb, 0 x4e64, 0 x5fed, 0 x6d76, 0 x7cff,
0 x9489, 0 x8500, 0 xb79b, 0 xa612, 0 xd2ad, 0 xc324, 0 xf1bf, 0 xe036,
0 x18c1, 0 x0948, 0 x3bd3, 0 x2a5a, 0 x5ee5, 0 x4f6c, 0 x7df7, 0 x6c7e,
0 xa50a, 0 xb483, 0 x8618, 0 x9791, 0 xe32e, 0 xf2a7, 0 xc03c, 0 xd1b5,
0 x2942, 0 x38cb, 0 x0a50, 0 x1bd9, 0 x6f66, 0 x7eef, 0 x4c74, 0 x5dfd,
0 xb58b, 0 xa402, 0 x9699, 0 x8710, 0 xf3af, 0 xe226, 0 xd0bd, 0 xc134,
0 x39c3, 0 x284a, 0 x1ad1, 0 x0b58, 0 x7fe7, 0 x6e6e, 0 x5cf5, 0 x4d7c,
0 xc60c, 0 xd785, 0 xe51e, 0 xf497, 0 x8028, 0 x91a1, 0 xa33a, 0 xb2b3,
0 x4a44, 0 x5bcd, 0 x6956, 0 x78df, 0 x0c60, 0 x1de9, 0 x2f72, 0 x3efb,
0 xd68d, 0 xc704, 0 xf59f, 0 xe416, 0 x90a9, 0 x8120, 0 xb3bb, 0 xa232,
0 x5ac5, 0 x4b4c, 0 x79d7, 0 x685e, 0 x1ce1, 0 x0d68, 0 x3ff3, 0 x2e7a,
0 xe70e, 0 xf687, 0 xc41c, 0 xd595, 0 xa12a, 0 xb0a3, 0 x8238, 0 x93b1,
0 x6b46, 0 x7acf, 0 x4854, 0 x59dd, 0 x2d62, 0 x3ceb, 0 x0e70, 0 x1ff9,
0 xf78f, 0 xe606, 0 xd49d, 0 xc514, 0 xb1ab, 0 xa022, 0 x92b9, 0 x8330,
0 x7bc7, 0 x6a4e, 0 x58d5, 0 x495c, 0 x3de3, 0 x2c6a, 0 x1ef1, 0 x0f78
};
EXPORT_SYMBOL(crc_ccitt_table);
/**
* crc_ccitt - recompute the CRC (CRC-CCITT variant) for the data
* buffer
* @crc: previous CRC value
* @buffer: data pointer
* @len: number of bytes in the buffer
*/
u16 crc_ccitt(u16 crc, u8 const *buffer, size_t len)
{
while (len--)
crc = crc_ccitt_byte(crc, *buffer++);
return crc;
}
EXPORT_SYMBOL(crc_ccitt);
MODULE_DESCRIPTION("CRC-CCITT calculations" );
MODULE_LICENSE("GPL" );
Messung V0.5 in Prozent C=94 H=94 G=93