Thread Links | Date Links | ||||
---|---|---|---|---|---|
Thread Prev | Thread Next | Thread Index | Date Prev | Date Next | Date Index |
Hello 802.3cg,
I am submitting a change to Figure 148-4, to fix a minor bug. The fix may look strange, because of how 802.3 state diagrams operate, so I would like to explain it here.
- The issue relates to the timer in the DELAY_PENDING state in Figure 148-4.
- In Figure 148-4 the DELAY_PENDING state is supposed to make the state diagram wait for a specified amount of time (pending_timer).
- In the meantime the TXD and TX_ER signals need to be refreshed as soon as the tx_cmd_sync variable is updated, thus the need of the “ELSE” recirculating arc.
- However, the recirculating arc also causes the “start pending_timer” statement to be re-executed, which according to the timers semantic, results in the timer to be reset.
- This is obviously not the intended behavior as resetting the timer forever would result in a deadlock (no way out of DELAY_PENDING state).
The solution is to move the “start pending_timer” statement from the DELAY_PENDING state to the COLLIDE state.
Because the COLLIDE state has a similar “ELSE” recirculating arc, the pending_timer will only be released from reset upon exit from COLLIDE on the (first) entry to DELAY_PENDING, properly starting the timer.
I realize that after this fix, a reader which either does not read the diagram carefully or who’s not used to the state diagram language, may fall into the trap of believing the timer has to be started when entering the COLLIDE state, but this is not the case. I hope this e-mail helps clarifying this.
Note: this mail is a re-send of a previous one that yesterday for some reason the reflector didn't bounce.
Kind Regards,
Piergiorgio
To unsubscribe from the STDS-802-3-10SPE list, click the following link: https://listserv.ieee.org/cgi-bin/wa?SUBED1=STDS-802-3-10SPE&A=1