![](http://datasheet.mmic.net.cn/330000/INTEL82801_datasheet_16416407/INTEL82801_134.png)
Functional Description
5-84
82801AA and 82801AB Datasheet
Transfer Queues are based on the following characteristics:
A QH’s vertical link pointer (Queue Element Link Pointer) references the ‘Top’ queue
member. A QH’s horizontal link pointer (Queue Head Link Pointer) references the “next”
work element in the Frame.
Each queue member’s link pointer references the next element within the queue.
In the simplest model, the ICH follows vertical link point to a queue element, then executes the
element. If the completion status of the TD satisfies the advance criteria as shown in
Table 5-63
,
the ICH advances the queue by writing the just-executed TD’s link pointer back into the QH’s
Queue Element link pointer. The next time the queue head is traversed, the next queue element will
be the Top element.
The traversal has two options: Breadth first, or Depth first. A flag bit in each TD (Vf - Vertical
Traversal Flag) controls whether traversal is Breadth or Depth first. The default mode of traversal
is Breadth-First. For Breadth-First, the ICH only executes the top element from each queue. The
execution path is shown below:
1. QH (Queue Element Link Pointer)
2. TD
3. Write-Back to QH (Queue Element Link Pointer)
4. QH (Queue Head Link pointer).
Breadth-First is also performed for every transaction execution that fails the advance criteria. This
means that if a queued TD fails, the queue does not advance, and the ICH traverses the QH’s Queue
Head Link Pointer.
In a Depth-first traversal, the top queue element must complete successfully to satisfy the
advance
criteria
for the queue. If the ICH is currently processing a queue, and the advance criteria are met,
and the Vf bit is set, the ICH follows the TD’s link pointer to the next schedule work item.
Note that regardless of traversal model, when the advance criteria are met, the successful TD’s link
pointer is written back to the QH’s Queue Element link pointer.
When the ICH encounters a QH, it caches the QH internally, and sets internal state to indicate it is
in a Q-context. It needs this state to update the correct QH (for auto advancement) and also to make
the correct decisions on how to traverse the Frame List.
Restricting the advancement of queues to advancement criteria implements a guaranteed data
delivery stream. A queue is
never
advanced on an error completion status (even in the event the
error count was exhausted).
Table 5-63
lists the general queue advance criteria, which are based on
the execution status of the TD at the ’Top’ of a currently ‘a(chǎn)ctive’ queue.
Table 5-63. Queue Advance Criteria
Function-to-Host (IN)
Host-to-Function (OUT)
Non-NULL
NULL
Error/NAK
Non-NULL
NULL
Error/NAK
Advance Q
Advance Q
Retry Q Element
Advance Q
Advance Q
Retry Q Element