SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    RE: iSCSI CRC: A CRC-checking example



    Sanjay,
    
    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