![Intel IXP45X Скачать руководство пользователя страница 441](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092441.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Order Number: 306262--, Revision: 004US
441
USB 2.0 Host Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
9.14.9.1.2
Do Reload
This state is entered from the Wait for List Head state when the host controller
fetches a queue head with the H-bit set to a one. While in this state, the host controller
will perform nak counter reloads for every queue head visited that has a non-zero nak
reload value (RL) field.
9.14.9.1.3
Wait for Start Event
This state is entered from the Do Reload state when a queue head with the H-bit set to
a one is fetched. While in this state, the host controller will not perform nak counter
reloads.
9.14.10
Managing Control/Bulk/Interrupt Transfers via Queue Heads
This section presents an overview of how the host controller interacts with queuing
data structures.
Queue heads use the Queue Element Transfer Descriptor (qTD) structure defined in
Section 9.13.5, “Queue Element Transfer Descriptor (qTD)” on page 399
. One queue
head is used to manage the data stream for one endpoint. The queue head structure
contains static endpoint characteristics and capabilities. It also contains a working area
from where individual bus transactions for an endpoint are executed (see Overlay area
Figure 50, “Queue Head Structure Layout” on page 404
). Each qTD
represents one or more bus transactions, which is defined in the context of this
specification as a transfer.
The general processing model for the host controller's use of a queue head is simple:
• read a queue head,
• execute a transaction from the overlay area,
• write back the results of the transaction to the overlay area
• move to the next queue head.
If the host controller encounters errors during a transaction, the host controller will set
one (or more) of the error reporting bits in the queue head's Status field. The Status
field accumulates all errors encountered during the execution of a qTD (e.g. the error
bits in the queue head Status field are 'sticky' until the transfer (qTD) has completed).
This state is always written back to the source qTD when the transfer is complete. On
transfer (e.g. buffer or halt conditions) boundaries, the host controller must auto-
advance (without software intervention) to the next qTD. Additionally, the hardware
must be able to halt the queue so no additional bus transactions will occur for the
endpoint and the host controller will not advance the queue.
An example host controller operational state machine of a queue head traversal is
illustrated in
. This state machine is a model for how a host controller should
traverse a queue head. The host controller must be able to advance the queue from the
Fetch QH state in order to avoid all hardware/software race conditions. This simple
mechanism allows software to simply link qTDs to the queue head and activate them,
then the host controller will always find them if/when they are reachable.