crc16 tables consolidation
Subsystems (4)
PATCH 1/1 crc16 tables consolidation
Hi all,
this patchset removes 5 identical crc16 table, replacing them with one table in lib/crc16.c
Best regards.
Signature · 2 lines
Andrey Panin | Embedded systems software developer [email protected] | PGP key: wwwkeys.pgp.net
include/linux/crc16.h +15 -0
@@ -0,0 +1,15 @@ +#ifndef _LINUX_CRC16_H +#define _LINUX_CRC16_H + +#include <linux/types.h> + +extern u16 const crc16_table[256 ]; + +extern u16 crc16 (u16 crc,const u8 *buffer,size_t len); + +static inline u16 crc16_byte (u16 crc,const u8 c) +{ +return (crc >>8 ) ^ crc16_table[(crc ^ c) &0xff ]; +} + +#endif /* _LINUX_CRC16_H */
lib/Kconfig +8 -0
@@ -4,6 +4,14 @@ menu "Library routines" +config CRC16 + tristate "CRC16 functions" + help + This option is provided for the case where no in-kernel-tree + modules require CRC16 functions, but a module built outside the + kernel tree does. Such modules that use library CRC16 functions + require M here. + config CRC32 tristate "CRC32 functions" help
lib/Makefile +1 -0
@@ -22,6 +22,7 @@ obj-y += dec_and_lock.o endif +obj-$(CONFIG_CRC16) += crc16.o obj-$(CONFIG_CRC32) += crc32.o obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/
lib/crc16.c +69 -0
69 lines not on this page · raw message
drivers/isdn/hisax/rawhdlc.c +0 -41
47 lines not on this page · raw message
drivers/isdn/hisax/st5481_hdlc.c +3 -39
62 lines not on this page · raw message
drivers/net/irda/donauboe.c +1 -43
62 lines not on this page · raw message
include/net/irda/crc.h +3 -7
@@ -15,19 +15,15 @@#define IRDA_CRC_H #include <linux/types.h> +#include <linux/crc16.h> #define INIT_FCS 0xffff/* Initial FCS value */ #define GOOD_FCS 0xf0b8/* Good final FCS value */ -extern __u16 const irda_crc16_table[]; -/* Recompute the FCS with one more character appended. */ -static inline __u16 irda_fcs (__u16 fcs,__u8 c) -{ -return (((fcs) >>8 ) ^ irda_crc16_table[((fcs) ^ (c)) &0xff ]); -} +#define irda_fcs (fcs, c) crc16_byte(fcs, c)/* Recompute the FCS with len bytes appended. */ -unsigned short irda_calc_crc16 (__u16 fcs,__u8 const *buf,size_t len); +#define irda_calc_crc16 (fcs, buf, len) crc16(fcs, buf, len)#endif
net/irda/Makefile +1 -1
@@ -11,7 +11,7 @@ irda-y := iriap.o iriap_event.o irlmp.o irlmp_event.o irlmp_frame.o \ irlap.o irlap_event.o irlap_frame.o timer.o qos.o irqueue.o \ - irttp.o irda_device.o irias_object.o crc.o wrapper.o af_irda.o \ + irttp.o irda_device.o irias_object.o wrapper.o af_irda.o \ discovery.o parameters.o irsyms.o irda-$(CONFIG_PROC_FS) += irproc.o irda-$(CONFIG_SYSCTL) += irsysctl.o
net/irda/crc.c +0 -65
65 lines not on this page · raw message
drivers/net/ppp_async.c +1 -37
@@ -26,6 +26,7 @@#include <linux/tty.h> #include <linux/netdevice.h> #include <linux/poll.h> +#include <linux/crc16.h> #include <linux/ppp_defs.h> #include <linux/if_ppp.h> #include <linux/ppp_channel.h>
@@ -464,43 +465,6 @@/* * Procedures for encapsulation and framing. */ - -u16 ppp_crc16_table[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 -}; -EXPORT_SYMBOL (ppp_crc16_table); -#define fcstab ppp_crc16_table/* for PPP_FCS macro */ /* * Procedure to encode the data for async serial transmission.
include/linux/ppp_defs.h +1 -1
@@ -92,7 +92,7 @@#define PPP_INITFCS 0xffff/* Initial FCS value */ #define PPP_GOODFCS 0xf0b8/* Good final FCS value */ -#define PPP_FCS (fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff]) +#define PPP_FCS (fcs, c) crc16_byte(fcs, c)/* * Extended asyncmap - allows any character to be escaped.
arch/ia64/sn/io/l1.c +7 -46
102 lines not on this page · raw message