Impact Details: The Host Controller (HC) uses the Nak counter, qTD.NakCnt, and the Reload field, qTD.RL, to throttle the flow control to an endpoint. The flow control operation is described in section 4.9 of the EHCI specification. This control is used to stop the flow PING transactions that might be continually NAKd by the endpoint.
The Nak counter is loaded from the Reload field and is decremented when the HC receives a NAK response (or a NYET response under the condition described in the section above). When the Nak counter reaches 0, the HC stops trying to communicate with the endpoint. The HC continues to wait until the Nak counter is reloaded.
The flow control starts when the HC receives the NYET response to an OUT transaction (it only receives one NYET). This causes the HC to start sending the PING transactions to the endpoint until an ACK is received or the Nak counter reaches 0. The Nak counter is reloaded when a new (micro) frame is entered (Start Event). The Start Event allows another series of NAKs to occur, as needed, in the next frame. Of course, when an PING transaction is ACKd, the Nak counter is reloaded and the HC retries the OUT transaction.