There is an error in the state machine in Figure 11-9. In the state
WAITING_FOR_PDELAY_INTERVAL_TIMER, there is an "if" statement with 3
conditions:
1) meanLinkDelay<=meanLinkDelay
2) rcvdPdelayRespPtr->sourcePortIdentity.clockIdentity != thisClock
3) neighborRateRatioValid
The second condition is checking whether the Pdelay response is coming from
the device itself. In the following "else if" statement the only condition
is again the same as 2).
This is wrong, because in case of condition 1) being FALSE (meanLinkDelay
being too long) and the other two conditions being TRUE (rateRatio ok and
info not coming from the device itself), the condition of the “else if” is
TRUE thus it will go into the "else if" part and not into the “else” part.
However, I don’t think this is the expected behavior, as it can be seen,
for example in the definition of “detectedFaults” (Clause 11.2.19.2.11) and
“allowedFaults” (Clause 11.5.4).