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?

Attachment: pgpNmaXmP81qM.pgp
Description: PGP signature

Reply via email to