![Intel IXP45X Developer'S Manual Download Page 439](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092439.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Order Number: 306262--, Revision: 004US
439
USB 2.0 Host Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
9.14.9
Operational Model for Nak Counter
This section describes the operational model for the NakCnt field defined in a queue
head (see
Section 9.13.6, “Queue Head” on page 404
). Software should not use this
feature for interrupt queue heads. This rule is not required to be enforced by the host
controller.
USB protocol has built-in flow control via the Nak response by a device. There are
several scenarios, beyond the Ping feature, where an endpoint may naturally Nak or
Nyet the majority of the time. An example is the host controller management of the
split transaction protocol for control and bulk endpoints. All bulk endpoints (High- or
Full-speed) are serviced via the same asynchronous schedule. The time between the
Start-split transaction and the first Complete-split transaction could be very short (i.e.
like when the endpoint is the only one in the asynchronous schedule). The hub NYETs
(effectively Naks) the Complete-split transaction until the classic transaction is
complete. This could result in the host controller thrashing memory, repeatedly fetching
the queue head and executing the transaction to the hub, which will not complete until
after the transaction on the classic bus completes.
There are two component fields in a queue head to support the throttling feature: a
counter field (NakCnt), and a counter reload field (RL). NakCnt is used by the host
controller as one of the criteria to determine whether or not to execute a transaction to
the endpoint. There are two operational modes associated with this counter:
• Not Used. This mode is set when the RL field is zero. The host controller ignores
the NakCnt field for any execution of transactions through a queue head with an RL
field of zero. Software must use this selection for interrupt endpoints.
• Nak Throttle Mode. This mode is selected when the RL field is non-zero. In this
mode, the value in the NakCnt field represents the maximum number of Nak or
Nyet responses the host controller will tolerate on each endpoint. In this mode, the
HC will decrement the NakCnt field based on the token/handshake criteria listed in
Table 175, “NakCnt Field Adjustment Rules” on page 439
. The host controller must
reload NakCnt when the endpoint successfully moves data (e.g. policy to reward
device for moving data).
In summary, system software enables the counter by setting the reload field (RL) to a
non-zero value. The host controller may execute a transaction if NakCnt is non-zero.
The host controller will not execute a transaction if NakCnt is zero. The reload
mechanism is described in detail in
Section 9.14.9.1, “Nak Count Reload Control”
.
Note that when all queue heads in the Asynchronous Schedule either exhausts all
transfers or all NakCnt's go to zero, then the host controller will detect an empty
Asynchronous Schedule and idle schedule traversal (see
Asynchronous Schedule Detection” on page 435
Table 175.
NakCnt Field Adjustment Rules
Token
Handshake
Handshake NAK
NYET
IN/PING decrement
NakCnt
N/A (protocol error)
OUT decrement
NakCnt
No Action
Start
Split decrement
NakCnt
N/A (protocol error)
Complete Split
No Action
Decrement NakCnt
Notes:
1.
Recommended behavior on this response is to reload NakCnt.