~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/lib/crc-ccitt.c

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /lib/crc-ccitt.c (Version linux-6.12-rc7) and /lib/crc-ccitt.c (Version linux-5.4.285)


  1 // SPDX-License-Identifier: GPL-2.0-only            1 // SPDX-License-Identifier: GPL-2.0-only
  2 /*                                                  2 /*
  3  *      linux/lib/crc-ccitt.c                       3  *      linux/lib/crc-ccitt.c
  4  */                                                 4  */
  5                                                     5 
  6 #include <linux/types.h>                            6 #include <linux/types.h>
  7 #include <linux/module.h>                           7 #include <linux/module.h>
  8 #include <linux/crc-ccitt.h>                        8 #include <linux/crc-ccitt.h>
  9                                                     9 
 10 /*                                                 10 /*
 11  * This mysterious table is just the CRC of ea     11  * This mysterious table is just the CRC of each possible byte. It can be
 12  * computed using the standard bit-at-a-time m     12  * computed using the standard bit-at-a-time methods. The polynomial can
 13  * be seen in entry 128, 0x8408. This correspo     13  * be seen in entry 128, 0x8408. This corresponds to x^0 + x^5 + x^12.
 14  * Add the implicit x^16, and you have the sta     14  * Add the implicit x^16, and you have the standard CRC-CCITT.
 15  */                                                15  */
 16 u16 const crc_ccitt_table[256] = {                 16 u16 const crc_ccitt_table[256] = {
 17         0x0000, 0x1189, 0x2312, 0x329b, 0x4624     17         0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
 18         0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c     18         0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
 19         0x1081, 0x0108, 0x3393, 0x221a, 0x56a5     19         0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
 20         0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed     20         0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
 21         0x2102, 0x308b, 0x0210, 0x1399, 0x6726     21         0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
 22         0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e     22         0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
 23         0x3183, 0x200a, 0x1291, 0x0318, 0x77a7     23         0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
 24         0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef     24         0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
 25         0x4204, 0x538d, 0x6116, 0x709f, 0x0420     25         0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
 26         0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868     26         0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
 27         0x5285, 0x430c, 0x7197, 0x601e, 0x14a1     27         0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
 28         0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9     28         0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
 29         0x6306, 0x728f, 0x4014, 0x519d, 0x2522     29         0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
 30         0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a     30         0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
 31         0x7387, 0x620e, 0x5095, 0x411c, 0x35a3     31         0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
 32         0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb     32         0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
 33         0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c     33         0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
 34         0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64     34         0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
 35         0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad     35         0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
 36         0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5     36         0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
 37         0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e     37         0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
 38         0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66     38         0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
 39         0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af     39         0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
 40         0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7     40         0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
 41         0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028     41         0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
 42         0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60     42         0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
 43         0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9     43         0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
 44         0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1     44         0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
 45         0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a     45         0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
 46         0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62     46         0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
 47         0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab     47         0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
 48         0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3     48         0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
 49 };                                                 49 };
 50 EXPORT_SYMBOL(crc_ccitt_table);                    50 EXPORT_SYMBOL(crc_ccitt_table);
 51                                                    51 
                                                   >>  52 /*
                                                   >>  53  * Similar table to calculate CRC16 variant known as CRC-CCITT-FALSE
                                                   >>  54  * Reflected bits order, does not augment final value.
                                                   >>  55  */
                                                   >>  56 u16 const crc_ccitt_false_table[256] = {
                                                   >>  57     0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
                                                   >>  58     0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
                                                   >>  59     0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
                                                   >>  60     0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
                                                   >>  61     0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
                                                   >>  62     0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
                                                   >>  63     0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
                                                   >>  64     0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
                                                   >>  65     0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
                                                   >>  66     0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
                                                   >>  67     0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
                                                   >>  68     0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
                                                   >>  69     0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
                                                   >>  70     0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
                                                   >>  71     0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
                                                   >>  72     0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
                                                   >>  73     0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
                                                   >>  74     0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
                                                   >>  75     0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
                                                   >>  76     0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
                                                   >>  77     0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
                                                   >>  78     0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
                                                   >>  79     0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
                                                   >>  80     0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
                                                   >>  81     0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
                                                   >>  82     0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
                                                   >>  83     0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
                                                   >>  84     0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
                                                   >>  85     0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
                                                   >>  86     0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
                                                   >>  87     0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
                                                   >>  88     0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
                                                   >>  89 };
                                                   >>  90 EXPORT_SYMBOL(crc_ccitt_false_table);
                                                   >>  91 
 52 /**                                                92 /**
 53  *      crc_ccitt - recompute the CRC (CRC-CCI     93  *      crc_ccitt - recompute the CRC (CRC-CCITT variant) for the data
 54  *      buffer                                     94  *      buffer
 55  *      @crc: previous CRC value                   95  *      @crc: previous CRC value
 56  *      @buffer: data pointer                      96  *      @buffer: data pointer
 57  *      @len: number of bytes in the buffer        97  *      @len: number of bytes in the buffer
 58  */                                                98  */
 59 u16 crc_ccitt(u16 crc, u8 const *buffer, size_     99 u16 crc_ccitt(u16 crc, u8 const *buffer, size_t len)
 60 {                                                 100 {
 61         while (len--)                             101         while (len--)
 62                 crc = crc_ccitt_byte(crc, *buf    102                 crc = crc_ccitt_byte(crc, *buffer++);
 63         return crc;                               103         return crc;
 64 }                                                 104 }
 65 EXPORT_SYMBOL(crc_ccitt);                         105 EXPORT_SYMBOL(crc_ccitt);
                                                   >> 106 
                                                   >> 107 /**
                                                   >> 108  *      crc_ccitt_false - recompute the CRC (CRC-CCITT-FALSE variant)
                                                   >> 109  *      for the data buffer
                                                   >> 110  *      @crc: previous CRC value
                                                   >> 111  *      @buffer: data pointer
                                                   >> 112  *      @len: number of bytes in the buffer
                                                   >> 113  */
                                                   >> 114 u16 crc_ccitt_false(u16 crc, u8 const *buffer, size_t len)
                                                   >> 115 {
                                                   >> 116         while (len--)
                                                   >> 117                 crc = crc_ccitt_false_byte(crc, *buffer++);
                                                   >> 118         return crc;
                                                   >> 119 }
                                                   >> 120 EXPORT_SYMBOL(crc_ccitt_false);
 66                                                   121 
 67 MODULE_DESCRIPTION("CRC-CCITT calculations");     122 MODULE_DESCRIPTION("CRC-CCITT calculations");
 68 MODULE_LICENSE("GPL");                            123 MODULE_LICENSE("GPL");
 69                                                   124 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php