On Saturday 27 May 2006 18:30, Sergey Vlasov wrote: > On Sat, May 27, 2006 at 04:24:07PM +0200, Ivo van Doorn wrote: > > On Saturday 27 May 2006 15:55, Sergey Vlasov wrote: > [skip] > > > However, fs/udf/crc.c has exactly the same CRC table as rt2x00: > [skip] > > > This is a bit-reversed form of CRC-CCITT supported by lib/crc-ccitt.c. > > > Unfortunately, this does not help much, because converting one form to > > > the other is too expensive (you would need to reverse bits in all data > > > bytes, and then reverse bits in the 16-bit result). > > > > > > BTW, there is more CRC code duplication in drivers/bluetooth/hci_bcsp.c > > > (bcsp_crc_update() seems to give the same result as crc_ccitt_byte()). > > > > > > In drivers/media/dvb/frontends/nxt200x.c, nxt200x_crc() seems to give > > > the same result as rt2x00crc_byte() (but without using a table). > > > > > > drivers/net/wan/cycx_drv.c:checksum() is also some mutated version of > > > CRC-CCITT (adding two additional zero bytes at the end of data makes it > > > return the same result as rt2x00crc()). > > More stealth CRC implementations: > > - drivers/ieee1394/csr.c:csr_crc16() - the same as rt2x00crc(); > > - drivers/ieee1394/csr1212.c:csr1212_crc16() - again the same as > rt2x00crc(), except the final byteswap; > > - drivers/net/wireless/wavelan.c:psa_crc() is plain crc16(); it is > duplicated in drivers/net/wireless/wavelan_cs.c; > > - drivers/scsi/FlashPoint.c:FPT_CalcCrc16() is also crc16(); > > > Interesting, so it would actually be usefull to move the nxt200x > > crc16 implemetation into the crc16 library (Is not using a table > > preferred over using a table?) > > Using a table is probably faster, but consumes more memory. > > > And make rt2x00 and fs/udf/crc.c make use of this library? > > > > And perhaps hci_bcsp could be updated to use crc_ccitt_byte() instead?
Thanks, I will take another look at the drivers as well and see which drivers could best be udpated to use the kernel library instead of using its own implementation. This will take a couple of days, but then I should have a couple of patches ready to add some crc libs and update the drivers to make use of these labs. Ivo
pgpizkti2hlB7.pgp
Description: PGP signature