Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

[BP] Issues related to the CRC8 SMs presented at July plenary



I am forwarding this message to the 802.3ap reflector for wider 
input/discussion.

Regards Andre


Pat,

A couple of issues I'd like your opinion on.

1) If the CRC8 Insertion process receives a eof word with /T/ in lane 3 
followed immediately by a word with /S/ or /O/ in lane 0 then it has a 
problem as it has no where to put the new /T/ without overwriting the 
new sof or ordered set.
I see three options
a) Replace the word with //E//.
---Crude,  corrupts the previous frame and doesn't record the error.
b) Replace the word with /T/ /E/ /E/ /E/
---Allows good completion of previous frame, IF the  word falls onto 
lanes 4-7 of a 64b66b PCS block (50% of time), otherwise will be 
detected as an error by the 64b66b PCS (which will convert it into 
//E//:://E//)
c) Just replace the lane 0 character with a /T/, pass other lanes unchanged
---Guaranteed to be detected as an error by the 64b66b PCS (which will 
convert it into //E//:://E//)
---Simplest option to implement, as it is the same as a /T/ followed by 
a valid IPG. Better still  the "Error" state of the CRC8 insertion state 
machine would no longer be needed.

option c) seems best to me.

2) If a received frame contains /E/ characters (native or added by the 
64b66b PCS) should the CRC8 be checked ?.
If so it will almost certainly fail. This will result in the frame being 
(further) marked as bad (by replacement of the final CRC32 character 
with an /E/), and the error being counted possibly for a second time.
It seems that we should only take error actions for "validly formed" 
frames - frames not including error sequences. This could be implemented 
in the state machine by way of a flag that is set at sof and cleared if 
any  error sequence is received.


3) If we are to re-use an existing error counter for CRC8 errors we have 
a limited choice. The only error counter available is the 
"errored_block_count" counter. This normally counts the number of times 
the RX_E state is entered. Therfore, based on 2) above, should 
"errored_block_count" be incremented whenever a "validly formed" frame 
is received with a CRC8 error ?

Regards
               Andre