|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: iSCSI CRC check clarification
Comments in text - Julo
"De, Tandra" <Tandra_De@adaptec.com>
31-10-01 20:52
Please respond to "De, Tandra"
To: Julian Satran/Haifa/IBM@IBMIL
cc:
Subject: RE: iSCSI CRC check clarification
Julian,me
Thanks for you reply. First of all I am not so clear understanding the
spec.
By "reflecting" I meant to ask whether to bit swap the CRC first, and then
complement it. Then put the CRC value in the wire in network byte order? I
think there might be some confusion the way I have stated my questions.
1. My concern was that in order to match the examples numbers (put up in
the
Mailing List) I had to bit swap every message byte to calculate the CRC
and
then before transmitting the CRC, I bit swap the CRC and complement it -
all
these add quite a bit of latency calculating CRC on every header and data
digests on both sides (Initiator and Target). So there may be a better way
(rather faster way) to do bit swap on every msg byte. I tried to build the
initial CRC table with bit swapped, but by doing this I could not come up
with the examples numbers. I may have missed something here. I like to see
a
sample code that does the way the spec. says and avoids the overhead.
+++ a friendly advise - you can build your tables so that you will need
minimal
bit swapping to have the bits get out in network order +++
2. In the 08 draft Appendix A page 151 says
- the coefficients of R(x) are considered a 32 bit sequence
- the bit sequence is complemented and the result is CRC
By reading these lines I wasn't clear whether I should be doing what I
have
stated in #1.
I have again attached my code of CRC calculation if you could either
verify
this or rather reply me a with a sample code, it will be greatly
appreciated. Also this will clear up my misunderstanding.
Thanks again,
Tandra (tde@corp.adaptec.com)
+++ there are very good texts on this on the network and free CRC code.
Dough Otis has put some on this list too+++
-----Original Message-----
From: Julian Satran [mailto:Julian_Satran@il.ibm.com]
Sent: Tuesday, October 30, 2001 10:55 PM
To: ips@ece.cmu.edu
Subject: Re: iSCSI CRC check clarification
Tandra,
I am not sure I understand what you are talking about.
The spec clearly states how the CRC should be calculated and what the bit
order on the wire is.
Perhaps by "reflecting" you are talking about the later.
The examples where checked independently by me and at least 2 other
persons.
Regards,
Julo
"De, Tandra" <Tandra_De@adaptec.com>
31-10-01 00:08
Please respond to "De, Tandra"
To: Julian Satran/Haifa/IBM@IBMIL
cc: "'ips@ece.cmu.edu'" <ips@ece.cmu.edu>, "De, Tandra"
<Tandra_De@adaptec.com>
Subject: iSCSI CRC check clarification
Julian,
I followed few iSCSI CRC checking example threads and the thread
file://www.pdl.cmu.edu/mailinglists/ips/mail/msg05931.html says that
"Before transmission, the CRC bits must be reflected and
complemented"; whereas, the iscsi- 08 draft only mentions about
complementing the CRC before transmission. So attached you will find two
software implementation code examples: crc_reflect.cpp and
crc_no_reflect.cpp.
I ran few test cases with the attached example code and when I do reflect
bits I get
0: ff ff ff ff
4: ff ff ff ff
8: ff ff ff ff
12: ff ff ff ff
16: ff ff ff ff
20: ff ff ff ff
24: ff ff ff ff
28: ff ff ff ff
32: 43 ab a8 62
in the transmission side, and the reception side I get 0x1c2d19ed.
But when I do not bit flip I get
0: ff ff ff ff
4: ff ff ff ff
8: ff ff ff ff
12: ff ff ff ff
16: ff ff ff ff
20: ff ff ff ff
24: ff ff ff ff
28: ff ff ff ff
32: 46 15 d5 c2
in the transmission side, and the reception side I do get 0x1c2d19ed
though.
I like to clarify which implementation we should use so that both
Initiator and Target will be in sync. validating the CRC. I appreciate if
you could verify the attached files to see I am missing anytbing. Also I
think that it would help everyone who are dealing with iSCSI CRC if you
could put up the finalized version of the code in the reflector.
Thanks,
Tandra (tde@corp.adaptec.com)
#### crc_no_reflect.cpp has been removed from this note on October 31 2001
by Julian Satran
#### crc_reflect.cpp has been removed from this note on October 31 2001 by
Julian Satran
#### op_crc.cpp has been removed from this note on October 31 2001 by
Julian Satran
Home Last updated: Wed Oct 31 15:17:37 2001 7475 messages in chronological order |