From: Andrey Panin <pazke@donpac.ru>
To: Andrew Morton <akpm@osdl.org>, linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] 2.6.7-mm2, Use it in ISDN drivers
Date: Thu, 24 Jun 2004 16:52:28 +0400 [thread overview]
Message-ID: <10880815481956@donpac.ru> (raw)
In-Reply-To: <10880815453111@donpac.ru>
This patch makes various ISDN drivers use common crc16 code.
Signed-off-by: Andrey Panin <pazke@donpac.ru>
drivers/isdn/hisax/Kconfig | 2 +
drivers/isdn/hisax/isdnhdlc.c | 49 +++------------------------------------
drivers/isdn/hisax/netjet.c | 36 ----------------------------
drivers/isdn/hisax/st5481_hdlc.c | 48 +++-----------------------------------
drivers/isdn/tpam/Kconfig | 1
drivers/isdn/tpam/tpam_crcpc.c | 42 +++------------------------------
6 files changed, 15 insertions(+), 163 deletions(-)
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/Kconfig linux-2.6.7-rc1-mm1/drivers/isdn/hisax/Kconfig
--- linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/Kconfig Wed Apr 28 22:55:36 2004
+++ linux-2.6.7-rc1-mm1/drivers/isdn/hisax/Kconfig Sat May 8 15:35:28 2004
@@ -4,6 +4,7 @@ menu "Passive cards"
config ISDN_DRV_HISAX
tristate "HiSax SiemensChipSet driver support"
+ select CRC16
---help---
This is a driver supporting the Siemens chipset on various
ISDN-cards (like AVM A1, Elsa ISDN cards, Teles S0-16.0, Teles
@@ -399,6 +400,7 @@ comment "HiSax sub driver modules"
config HISAX_ST5481
tristate "ST5481 USB ISDN modem (EXPERIMENTAL)"
depends on USB && EXPERIMENTAL
+ select CRC16
help
This enables the driver for ST5481 based USB ISDN adapters,
e.g. the BeWan Gazel 128 USB
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/isdnhdlc.c linux-2.6.7-rc1-mm1/drivers/isdn/hisax/isdnhdlc.c
--- linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/isdnhdlc.c Wed Apr 28 22:55:35 2004
+++ linux-2.6.7-rc1-mm1/drivers/isdn/hisax/isdnhdlc.c Sat May 8 15:20:15 2004
@@ -22,6 +22,7 @@
#include <linux/module.h>
#include <linux/init.h>
+#include <linux/crc16.h>
#include "isdnhdlc.h"
/*-------------------------------------------------------------------*/
@@ -58,43 +59,6 @@ const unsigned char isdnhdlc_bit_rev_tab
0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF,0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF
};
-/* Table for CRC16. Internal used only. */
-static const unsigned short int crc16_tab[] = {
- 0x0000,0x1189,0x2312,0x329b,0x4624,0x57ad,0x6536,0x74bf,
- 0x8c48,0x9dc1,0xaf5a,0xbed3,0xca6c,0xdbe5,0xe97e,0xf8f7,
- 0x1081,0x0108,0x3393,0x221a,0x56a5,0x472c,0x75b7,0x643e,
- 0x9cc9,0x8d40,0xbfdb,0xae52,0xdaed,0xcb64,0xf9ff,0xe876,
- 0x2102,0x308b,0x0210,0x1399,0x6726,0x76af,0x4434,0x55bd,
- 0xad4a,0xbcc3,0x8e58,0x9fd1,0xeb6e,0xfae7,0xc87c,0xd9f5,
- 0x3183,0x200a,0x1291,0x0318,0x77a7,0x662e,0x54b5,0x453c,
- 0xbdcb,0xac42,0x9ed9,0x8f50,0xfbef,0xea66,0xd8fd,0xc974,
- 0x4204,0x538d,0x6116,0x709f,0x0420,0x15a9,0x2732,0x36bb,
- 0xce4c,0xdfc5,0xed5e,0xfcd7,0x8868,0x99e1,0xab7a,0xbaf3,
- 0x5285,0x430c,0x7197,0x601e,0x14a1,0x0528,0x37b3,0x263a,
- 0xdecd,0xcf44,0xfddf,0xec56,0x98e9,0x8960,0xbbfb,0xaa72,
- 0x6306,0x728f,0x4014,0x519d,0x2522,0x34ab,0x0630,0x17b9,
- 0xef4e,0xfec7,0xcc5c,0xddd5,0xa96a,0xb8e3,0x8a78,0x9bf1,
- 0x7387,0x620e,0x5095,0x411c,0x35a3,0x242a,0x16b1,0x0738,
- 0xffcf,0xee46,0xdcdd,0xcd54,0xb9eb,0xa862,0x9af9,0x8b70,
- 0x8408,0x9581,0xa71a,0xb693,0xc22c,0xd3a5,0xe13e,0xf0b7,
- 0x0840,0x19c9,0x2b52,0x3adb,0x4e64,0x5fed,0x6d76,0x7cff,
- 0x9489,0x8500,0xb79b,0xa612,0xd2ad,0xc324,0xf1bf,0xe036,
- 0x18c1,0x0948,0x3bd3,0x2a5a,0x5ee5,0x4f6c,0x7df7,0x6c7e,
- 0xa50a,0xb483,0x8618,0x9791,0xe32e,0xf2a7,0xc03c,0xd1b5,
- 0x2942,0x38cb,0x0a50,0x1bd9,0x6f66,0x7eef,0x4c74,0x5dfd,
- 0xb58b,0xa402,0x9699,0x8710,0xf3af,0xe226,0xd0bd,0xc134,
- 0x39c3,0x284a,0x1ad1,0x0b58,0x7fe7,0x6e6e,0x5cf5,0x4d7c,
- 0xc60c,0xd785,0xe51e,0xf497,0x8028,0x91a1,0xa33a,0xb2b3,
- 0x4a44,0x5bcd,0x6956,0x78df,0x0c60,0x1de9,0x2f72,0x3efb,
- 0xd68d,0xc704,0xf59f,0xe416,0x90a9,0x8120,0xb3bb,0xa232,
- 0x5ac5,0x4b4c,0x79d7,0x685e,0x1ce1,0x0d68,0x3ff3,0x2e7a,
- 0xe70e,0xf687,0xc41c,0xd595,0xa12a,0xb0a3,0x8238,0x93b1,
- 0x6b46,0x7acf,0x4854,0x59dd,0x2d62,0x3ceb,0x0e70,0x1ff9,
- 0xf78f,0xe606,0xd49d,0xc514,0xb1ab,0xa022,0x92b9,0x8330,
- 0x7bc7,0x6a4e,0x58d5,0x495c,0x3de3,0x2c6a,0x1ef1,0x0f78
-};
-
-
enum {
HDLC_FAST_IDLE,HDLC_GET_FLAG_B0,HDLC_GETFLAG_B1A6,HDLC_GETFLAG_B7,
HDLC_GET_DATA,HDLC_FAST_FLAG
@@ -339,12 +303,10 @@ int isdnhdlc_decode (struct isdnhdlc_var
return status;
}
if(hdlc->data_bits==8){
- unsigned cval;
-
hdlc->data_bits = 0;
hdlc->data_received = 1;
- cval = (hdlc->crc^hdlc->shift_reg) & 0xff;
- hdlc->crc = (hdlc->crc>>8)^crc16_tab[cval];
+ hdlc->crc = crc16_byte(hdlc->crc, hdlc->shift_reg);
+
// good byte received
if (dsize--) {
dst[hdlc->dstpos++] = hdlc->shift_reg;
@@ -520,10 +482,7 @@ int isdnhdlc_encode(struct isdnhdlc_vars
break;
}
if(hdlc->bit_shift==8){
- unsigned cval;
-
- cval = (hdlc->crc^hdlc->shift_reg) & 0xff;
- hdlc->crc = (hdlc->crc>>8)^crc16_tab[cval];
+ hdlc->crc = crc16_byte(hdlc->crc, hdlc->shift_reg);
}
if(hdlc->shift_reg & 0x01){
hdlc->hdlc_bits1++;
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/netjet.c linux-2.6.7-rc1-mm1/drivers/isdn/hisax/netjet.c
--- linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/netjet.c Wed Apr 28 22:55:35 2004
+++ linux-2.6.7-rc1-mm1/drivers/isdn/hisax/netjet.c Sat May 8 15:05:16 2004
@@ -58,42 +58,6 @@ NETjet_ReadICfifo(struct IsdnCardState *
insb(cs->hw.njet.isac, data, size);
}
-__u16 fcstab[256] =
-{
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
void
NETjet_WriteICfifo(struct IsdnCardState *cs, u_char *data, int size)
{
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/st5481_hdlc.c linux-2.6.7-rc1-mm1/drivers/isdn/hisax/st5481_hdlc.c
--- linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/hisax/st5481_hdlc.c Wed Apr 28 22:55:36 2004
+++ linux-2.6.7-rc1-mm1/drivers/isdn/hisax/st5481_hdlc.c Sat May 8 15:17:41 2004
@@ -10,44 +10,9 @@
*
*/
+#include <linux/crc16.h>
#include "st5481_hdlc.h"
-static const unsigned short int crc16_tab[] = {
- 0x0000,0x1189,0x2312,0x329b,0x4624,0x57ad,0x6536,0x74bf,
- 0x8c48,0x9dc1,0xaf5a,0xbed3,0xca6c,0xdbe5,0xe97e,0xf8f7,
- 0x1081,0x0108,0x3393,0x221a,0x56a5,0x472c,0x75b7,0x643e,
- 0x9cc9,0x8d40,0xbfdb,0xae52,0xdaed,0xcb64,0xf9ff,0xe876,
- 0x2102,0x308b,0x0210,0x1399,0x6726,0x76af,0x4434,0x55bd,
- 0xad4a,0xbcc3,0x8e58,0x9fd1,0xeb6e,0xfae7,0xc87c,0xd9f5,
- 0x3183,0x200a,0x1291,0x0318,0x77a7,0x662e,0x54b5,0x453c,
- 0xbdcb,0xac42,0x9ed9,0x8f50,0xfbef,0xea66,0xd8fd,0xc974,
- 0x4204,0x538d,0x6116,0x709f,0x0420,0x15a9,0x2732,0x36bb,
- 0xce4c,0xdfc5,0xed5e,0xfcd7,0x8868,0x99e1,0xab7a,0xbaf3,
- 0x5285,0x430c,0x7197,0x601e,0x14a1,0x0528,0x37b3,0x263a,
- 0xdecd,0xcf44,0xfddf,0xec56,0x98e9,0x8960,0xbbfb,0xaa72,
- 0x6306,0x728f,0x4014,0x519d,0x2522,0x34ab,0x0630,0x17b9,
- 0xef4e,0xfec7,0xcc5c,0xddd5,0xa96a,0xb8e3,0x8a78,0x9bf1,
- 0x7387,0x620e,0x5095,0x411c,0x35a3,0x242a,0x16b1,0x0738,
- 0xffcf,0xee46,0xdcdd,0xcd54,0xb9eb,0xa862,0x9af9,0x8b70,
- 0x8408,0x9581,0xa71a,0xb693,0xc22c,0xd3a5,0xe13e,0xf0b7,
- 0x0840,0x19c9,0x2b52,0x3adb,0x4e64,0x5fed,0x6d76,0x7cff,
- 0x9489,0x8500,0xb79b,0xa612,0xd2ad,0xc324,0xf1bf,0xe036,
- 0x18c1,0x0948,0x3bd3,0x2a5a,0x5ee5,0x4f6c,0x7df7,0x6c7e,
- 0xa50a,0xb483,0x8618,0x9791,0xe32e,0xf2a7,0xc03c,0xd1b5,
- 0x2942,0x38cb,0x0a50,0x1bd9,0x6f66,0x7eef,0x4c74,0x5dfd,
- 0xb58b,0xa402,0x9699,0x8710,0xf3af,0xe226,0xd0bd,0xc134,
- 0x39c3,0x284a,0x1ad1,0x0b58,0x7fe7,0x6e6e,0x5cf5,0x4d7c,
- 0xc60c,0xd785,0xe51e,0xf497,0x8028,0x91a1,0xa33a,0xb2b3,
- 0x4a44,0x5bcd,0x6956,0x78df,0x0c60,0x1de9,0x2f72,0x3efb,
- 0xd68d,0xc704,0xf59f,0xe416,0x90a9,0x8120,0xb3bb,0xa232,
- 0x5ac5,0x4b4c,0x79d7,0x685e,0x1ce1,0x0d68,0x3ff3,0x2e7a,
- 0xe70e,0xf687,0xc41c,0xd595,0xa12a,0xb0a3,0x8238,0x93b1,
- 0x6b46,0x7acf,0x4854,0x59dd,0x2d62,0x3ceb,0x0e70,0x1ff9,
- 0xf78f,0xe606,0xd49d,0xc514,0xb1ab,0xa022,0x92b9,0x8330,
- 0x7bc7,0x6a4e,0x58d5,0x495c,0x3de3,0x2c6a,0x1ef1,0x0f78
-};
-
-
enum {
HDLC_FAST_IDLE,HDLC_GET_FLAG_B0,HDLC_GETFLAG_B1A6,HDLC_GETFLAG_B7,
@@ -295,12 +260,10 @@ int hdlc_decode(struct hdlc_vars *hdlc,
return status;
}
if(hdlc->data_bits==8){
- unsigned cval;
-
hdlc->data_bits = 0;
hdlc->data_received = 1;
- cval = (hdlc->crc^hdlc->shift_reg) & 0xff;
- hdlc->crc = (hdlc->crc>>8)^crc16_tab[cval];
+ hdlc->crc = crc16_byte(hdlc->crc, hdlc->shift_reg);
+
// good byte received
if (dsize--) {
dst[hdlc->dstpos++] = hdlc->shift_reg;
@@ -476,10 +439,7 @@ int hdlc_encode(struct hdlc_vars *hdlc,
break;
}
if(hdlc->bit_shift==8){
- unsigned cval;
-
- cval = (hdlc->crc^hdlc->shift_reg) & 0xff;
- hdlc->crc = (hdlc->crc>>8)^crc16_tab[cval];
+ hdlc->crc = crc16_byte(hdlc->crc, hdlc->shift_reg);
}
if(hdlc->shift_reg & 0x01){
hdlc->hdlc_bits1++;
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/tpam/Kconfig linux-2.6.7-rc1-mm1/drivers/isdn/tpam/Kconfig
--- linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/tpam/Kconfig Wed Apr 28 22:55:37 2004
+++ linux-2.6.7-rc1-mm1/drivers/isdn/tpam/Kconfig Sat May 8 15:26:57 2004
@@ -4,6 +4,7 @@
config ISDN_DRV_TPAM
tristate "Auvertech TurboPAM support (EXPERIMENTAL)"
depends on EXPERIMENTAL && ISDN_I4L && PCI
+ select CRC16
help
This enables support for the Auvertech TurboPAM ISDN-card.
For running this card, additional firmware is necessary, which has
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/tpam/tpam_crcpc.c linux-2.6.7-rc1-mm1/drivers/isdn/tpam/tpam_crcpc.c
--- linux-2.6.7-rc1-mm1.vanilla/drivers/isdn/tpam/tpam_crcpc.c Wed Apr 28 22:55:37 2004
+++ linux-2.6.7-rc1-mm1/drivers/isdn/tpam/tpam_crcpc.c Sat May 8 14:37:35 2004
@@ -27,6 +27,7 @@ Revision History:
---------------------------------------------------------------------------*/
+#include <linux/crc16.h>
#include "tpam.h"
#define HDLC_CTRL_CHAR_CMPL_MASK 0x20 /* HDLC control character complement mask */
@@ -38,41 +39,6 @@ Revision History:
#define TRUE 1
#define FALSE 0
-static u16 t_ap_hdlc_like_fcs [256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
static u8 ap_t_ctrl_char_complemented[256]; /* list of characters to complement */
static void ap_hdlc_like_ctrl_char_list (u32 ctrl_char) {
@@ -119,7 +85,7 @@ void hdlc_encode_modem(u8 *buffer_in, u3
/*
* FCS calculation
*/
- fcs = (fcs>>8) ^ t_ap_hdlc_like_fcs[((u8)(fcs^data)) & 0xff];
+ fcs = crc16_byte(fcs, data);
ESCAPE_CHAR(p_data_out, data);
}
@@ -155,7 +121,7 @@ void hdlc_no_accm_encode(u8 *buffer_in,
while (lng_in--) {
data = *buffer_in++;
/* calculate FCS */
- fcs = (fcs>>8) ^ t_ap_hdlc_like_fcs[((u8)(fcs^data)) & 0xff];
+ fcs = crc16_byte(fcs, data);
*p_data_out++ = data;
}
@@ -185,7 +151,7 @@ u32 hdlc_no_accm_decode(u8 *buffer_in, u
while (lng_in--) {
data = *buffer_in++;
/* calculate FCS */
- fcs = (fcs>>8) ^ t_ap_hdlc_like_fcs[((u8)(fcs^data)) & 0xff];
+ fcs = crc16_byte(fcs, data);
}
if (fcs == HDLC_FCS_OK)
next prev parent reply other threads:[~2004-06-24 12:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-24 12:52 [PATCH 0/4] 2.6.7-mm2, Add common CRC16 module Andrey Panin
2004-06-24 12:52 ` [PATCH 1/4] 2.6.7-mm2, Use it in async PPP driver Andrey Panin
2004-06-24 12:52 ` [PATCH 2/4] 2.6.7-mm2, Use it in IRDA drivers Andrey Panin
2004-06-24 12:52 ` Andrey Panin [this message]
2004-06-24 12:52 ` [PATCH 4/4] 2.6.7-mm2, Use it in AX.25 drivers Andrey Panin
2004-06-28 16:53 ` Thomas Sailer
2004-06-29 6:36 ` Andrey Panin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=10880815481956@donpac.ru \
--to=pazke@donpac.ru \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.