I would recommend changing the checksum polynomial.
For the range of page sizes possible in transogg the CRC-32C (Castagnoli) polynomial offers superior error detection ability over the 802.3 CRC32 that we currently have specified. This polynomial is also used by SCTP and iSCSI, so I could wave my arms and suggest that it might be more likely to get hardware assistance (ethernet CRC is usually done on the adaptor, but the SCTP and iSCSI crc can't be easily offloaded) ... but no armwaving is required: i7 has an instruction for the Castagnoli polynomial. There are superior polys to the iSCSI one, at least for some sizes relevant to us, but they lack obvious prospects of hardware assistance.
Upsides to switching to Castagnoli CRC:
- Faster CRC on some hardware
- Increased error detection
Upsides to switching to another improved CRC:
- (Possibly) Increased error detection over Castagnoli
Upsides to staying with current CRC:
- Decreased implementation size and complexity for something also supporting the libogg
...though supporting multiple generator polynomials in a typical software implementation isn't hard. --Gmaxwell 06:56, 29 May 2010 (UTC)