|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: iSCSI CRC: A CRC-checking exampleSanjay, I thought the bitswapping of the CRC was being done to match the way Ethernet sends the CRC. Ethernet sends the bits of a packet most significant byte first and least significant bit first. It puts the bits of the CRC into the packet such that the CRC remainder in the serial stream goes from most significant coefficient to least significant coefficient. Therefore, the x^31 term goes into the LSB of the first byte and the x^0 term goes into the MSB of the last byte. The order of bits within the bytes is swapped but the order of the bytes is not swapped. This would covert a CRC of 0x556c8951 into a bit swapped 0xaa36918a. I agree that to get a constant value out of a CRC checker, the bits have to be processed in their polynomial coefficient order regardless of the order in which they are sent. Pat -----Original Message----- From: Sanjay Goyal [mailto:sanjay_goyal@ivivity.com] Sent: Friday, August 17, 2001 2:35 PM To: 'Mark Bakke'; Julian Satran; IPS Cc: Sanjay Goyal Subject: RE: iSCSI CRC: A CRC-checking example Hi For all zeros the value after complementing the CRC result is 0x556c8951. If it is bit-swapped it becomes 0x8a9136aa. The way you will get the constant remainder 0x1c2d19ed is that you append 0x556c8951 and not 0xaa36918a to the all-zero data bytes. The crc-check engine would assume as if it is processing 4 more bytes. If we bit-swap the CRC while transmitting, don't we have to again swap it at the receive side and then pass it through the crc-check engine. Sanjay Goyal www.ivivity.com
Home Last updated: Tue Sep 04 01:03:58 2001 6315 messages in chronological order |