RE: Clause 46 - Link Fault Signaling State Machine
Most of this was discussed on the reflector on D2.1. The important thing to
note on your FIRST point is that Sequence ordered set usage is not limited
to link faults. A seq_type > 0x000002 is Other (not Other Fault). A
fault_sequence is only a Remote Fault or Local Fault. That is why
link_fault is set to OK for seq_type of Other, the other values are reserved
for usages other than link fault signaling.
A conformant implementation will check all three lanes for seq_type, not
just lane 3 to determine Local Fault or Remote Fault and consequently
fault_sequence. State machine transitions and the setting of link_fault are
all based on fault_sequence.
As to your SECOND point, a comment to improve the text is appropriate. Both
cited references are correct, but not obviously so without reading the text
in the correct context. The tendency is to revert to the "god's eye" view
of a link, but clause 46 specifies the RS, and consequently, the
specifications need to be read in the context of the RS within one DTE, not
in the context of the link.
Remote Fault is only originated by an RS link fault state machine, and it is
done in response to receiving Local Fault which is only originated by PHY
sublayers. Therefore receiving Remote Fault at an RS indicates the problem
was on the transmit path as referenced to that RS (i.e., between the local
RS output and the remote RS input). Receiving Local Fault at the RS
indicates a problem was detected on the RS's receive data path (i.e.,
between the remote RS output and the local RS input).
From: Rabinovich, Rick [mailto:firstname.lastname@example.org]
Sent: Monday, April 16, 2001 10:57 PM
Subject: Clause 46 - Link Fault Signaling State Machine
I need some clarification on a couple of points about the Link Fault
Signaling State Machine (section 46.3.4).
The seq_type register can have three values under specific conditions:
Value TXC Lane0 Lane1 Lane2 Lane3
Local Fault 1 9C 00 00 01
Remote Fault 1 9C 00 00 02
Other Fault 1 9C XX XX XX(except for 01 or 02)
The link_fault register can have three values:
OK - NO FAULT
Now, in the FAULT state, the seq_type value is assigned to the link_fault
value. My question is what value should link_fault take when seq_type is
OTHER FAULT? Should it be OK (NO FAULT)???
When we evaluate seq_type on lane 3, do we need to check for other than 1 or
2 to assign the OTHER FAULT value?
lines 28 to 30 on page 255 (rev. d.3) say:
"Local Fault indicates a fault detected on the receive data path between
the remote RS and the local RS. Remote Fault indicates a fault on the
transmit path between the local RS and the remote RS."
Further down, on lines 49 and 50 of the same page, there are different
definitions for Local and Remote Faults:
"Local Fault; fault detected by the PHY.
Remote Fault; fault detection signaled by the remote RS."
Which definition is actually intended?