// SPDX-License-Identifier: GPL-2.0-only
/*
* crc-itu-t.c
*/
#include <linux/crc-itu-t.h>
#include <linux/export.h>
#include <linux/module.h>
#include <linux/types.h>
/* CRC table for the CRC ITU-T V.41 0x1021 (x^16 + x^12 + x^5 + 1) */
const u16 crc_itu_t_table[256 ] = {
0 x0000, 0 x1021, 0 x2042, 0 x3063, 0 x4084, 0 x50a5, 0 x60c6, 0 x70e7,
0 x8108, 0 x9129, 0 xa14a, 0 xb16b, 0 xc18c, 0 xd1ad, 0 xe1ce, 0 xf1ef,
0 x1231, 0 x0210, 0 x3273, 0 x2252, 0 x52b5, 0 x4294, 0 x72f7, 0 x62d6,
0 x9339, 0 x8318, 0 xb37b, 0 xa35a, 0 xd3bd, 0 xc39c, 0 xf3ff, 0 xe3de,
0 x2462, 0 x3443, 0 x0420, 0 x1401, 0 x64e6, 0 x74c7, 0 x44a4, 0 x5485,
0 xa56a, 0 xb54b, 0 x8528, 0 x9509, 0 xe5ee, 0 xf5cf, 0 xc5ac, 0 xd58d,
0 x3653, 0 x2672, 0 x1611, 0 x0630, 0 x76d7, 0 x66f6, 0 x5695, 0 x46b4,
0 xb75b, 0 xa77a, 0 x9719, 0 x8738, 0 xf7df, 0 xe7fe, 0 xd79d, 0 xc7bc,
0 x48c4, 0 x58e5, 0 x6886, 0 x78a7, 0 x0840, 0 x1861, 0 x2802, 0 x3823,
0 xc9cc, 0 xd9ed, 0 xe98e, 0 xf9af, 0 x8948, 0 x9969, 0 xa90a, 0 xb92b,
0 x5af5, 0 x4ad4, 0 x7ab7, 0 x6a96, 0 x1a71, 0 x0a50, 0 x3a33, 0 x2a12,
0 xdbfd, 0 xcbdc, 0 xfbbf, 0 xeb9e, 0 x9b79, 0 x8b58, 0 xbb3b, 0 xab1a,
0 x6ca6, 0 x7c87, 0 x4ce4, 0 x5cc5, 0 x2c22, 0 x3c03, 0 x0c60, 0 x1c41,
0 xedae, 0 xfd8f, 0 xcdec, 0 xddcd, 0 xad2a, 0 xbd0b, 0 x8d68, 0 x9d49,
0 x7e97, 0 x6eb6, 0 x5ed5, 0 x4ef4, 0 x3e13, 0 x2e32, 0 x1e51, 0 x0e70,
0 xff9f, 0 xefbe, 0 xdfdd, 0 xcffc, 0 xbf1b, 0 xaf3a, 0 x9f59, 0 x8f78,
0 x9188, 0 x81a9, 0 xb1ca, 0 xa1eb, 0 xd10c, 0 xc12d, 0 xf14e, 0 xe16f,
0 x1080, 0 x00a1, 0 x30c2, 0 x20e3, 0 x5004, 0 x4025, 0 x7046, 0 x6067,
0 x83b9, 0 x9398, 0 xa3fb, 0 xb3da, 0 xc33d, 0 xd31c, 0 xe37f, 0 xf35e,
0 x02b1, 0 x1290, 0 x22f3, 0 x32d2, 0 x4235, 0 x5214, 0 x6277, 0 x7256,
0 xb5ea, 0 xa5cb, 0 x95a8, 0 x8589, 0 xf56e, 0 xe54f, 0 xd52c, 0 xc50d,
0 x34e2, 0 x24c3, 0 x14a0, 0 x0481, 0 x7466, 0 x6447, 0 x5424, 0 x4405,
0 xa7db, 0 xb7fa, 0 x8799, 0 x97b8, 0 xe75f, 0 xf77e, 0 xc71d, 0 xd73c,
0 x26d3, 0 x36f2, 0 x0691, 0 x16b0, 0 x6657, 0 x7676, 0 x4615, 0 x5634,
0 xd94c, 0 xc96d, 0 xf90e, 0 xe92f, 0 x99c8, 0 x89e9, 0 xb98a, 0 xa9ab,
0 x5844, 0 x4865, 0 x7806, 0 x6827, 0 x18c0, 0 x08e1, 0 x3882, 0 x28a3,
0 xcb7d, 0 xdb5c, 0 xeb3f, 0 xfb1e, 0 x8bf9, 0 x9bd8, 0 xabbb, 0 xbb9a,
0 x4a75, 0 x5a54, 0 x6a37, 0 x7a16, 0 x0af1, 0 x1ad0, 0 x2ab3, 0 x3a92,
0 xfd2e, 0 xed0f, 0 xdd6c, 0 xcd4d, 0 xbdaa, 0 xad8b, 0 x9de8, 0 x8dc9,
0 x7c26, 0 x6c07, 0 x5c64, 0 x4c45, 0 x3ca2, 0 x2c83, 0 x1ce0, 0 x0cc1,
0 xef1f, 0 xff3e, 0 xcf5d, 0 xdf7c, 0 xaf9b, 0 xbfba, 0 x8fd9, 0 x9ff8,
0 x6e17, 0 x7e36, 0 x4e55, 0 x5e74, 0 x2e93, 0 x3eb2, 0 x0ed1, 0 x1ef0
};
EXPORT_SYMBOL(crc_itu_t_table);
/**
* crc_itu_t - Compute the CRC-ITU-T for the data buffer
*
* @crc: previous CRC value
* @buffer: data pointer
* @len: number of bytes in the buffer
*
* Returns the updated CRC value
*/
u16 crc_itu_t(u16 crc, const u8 *buffer, size_t len)
{
while (len--)
crc = crc_itu_t_byte(crc, *buffer++);
return crc;
}
EXPORT_SYMBOL(crc_itu_t);
MODULE_DESCRIPTION("CRC ITU-T V.41 calculations" );
MODULE_LICENSE("GPL" );
Messung V0.5 in Prozent C=97 H=94 G=95