~ [ 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-4.17.19)


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

~ [ 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