- To: pat_thaler@xxxxxxxxxxx
- Subject: 10GbaseKR PCS
- From: Andre Szczepanek <a-szczepanek@xxxxxx>
- Date: Wed, 10 Aug 2005 14:29:28 +0100
- CC: ilango.s.ganga@xxxxxxxxx, Denis Beaudoin <dbeaudoin@xxxxxx>
- In-Reply-To: <42F8DCC1.7040607@ti.com>
- References: <9418406DEC3B8A4BBDB1B87291D851AF017F9411@wcosmb05.cos.agilent.com> <42F8DCC1.7040607@ti.com>
- User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.6) Gecko/20040218
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