![Intel IXP45X Скачать руководство пользователя страница 461](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092461.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Order Number: 306262--, Revision: 004US
461
USB 2.0 Host Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
offset N, then the FSTN’s Back Path Link Pointer must reference a queue head that
is reachable from frame list offset N-1.
Software should make the schedule as efficient as possible. What this means in this
context is that software should have no more than one Save-Place FSTN reachable in
any single frame. Note there will be times when two (or more, depending on the
implementation) could exist as full/low-speed footprints change with bandwidth
adjustments. This could occur, for example when a bandwidth rebalance causes system
software to move the Save-Place FSTN from one poll rate level to another. During the
transition, software must preserve the integrity of the previous schedule until the new
schedule is in place.
9.14.12.2.3 Tracking Split Transaction Progress for Interrupt Transfers
To correctly maintain the data stream, the host controller must be able to detect and
report errors where data is lost. For interrupt-IN transfers, data is lost when it makes it
into the USB 2.0 hub, but the USB 2.0 host system is unable to get it from the USB 2.0
hub and into the system before it expires from the transaction translator pipeline.
When a lost data condition is detected, the queue must be halted, thus signaling
system software to recover from the error. A data-loss condition exists whenever a
start-split is issued, accepted and successfully executed by the USB 2.0 hub, but the
complete-splits get unrecoverable errors on the high-speed link, or the complete-splits
do not occur at the correct times. One reason complete-splits might not occur at the
right time would be due to host-induced system hold-offs that cause the host controller
to miss bus transactions because it cannot get timely access to the schedule in system
memory.
The same condition can occur for an interrupt-OUT, but the result is not an endpoint
halt condition, but rather effects only the progress of the transfer. The queue head has
the following fields to track the progress of each split transaction. These fields are used
to keep incremental state about which (and when) portions have been executed.
• C-prog-mask. This is an eight-bit bit-vector where the host controller keeps track of
which complete-splits have been executed. Due to the nature of the Transaction
Translator periodic pipeline, the complete-splits need to be executed in-order. The
host controller needs to detect when the complete-splits have not been executed in
order. This can only occur due to system hold-offs where the host controller cannot
get to the memory-based schedule. C-prog-mask is a simple bit-vector that the
host controller sets one of the C-prog-mask bits for each complete-split executed.
The bit position is determined by the micro-frame number in which the complete-
split was executed. The host controller always checks C-prog-mask before
executing a complete-split transaction. If the previous complete-splits have not
been executed then it means one (or more) have been skipped and data has
potentially been lost.
• FrameTag. This field is used by the host controller during the complete-split portion
of the split transaction to tag the queue head with the frame number (H-Frame
number) when the next complete split must be executed.
• S-bytes. This field can be used to store the number of data payload bytes sent
during the start-split (if the transaction was an OUT). The S-bytes field must be
used to accumulate the data payload bytes received during the complete-splits (for
an IN).
9.14.12.2.4 Split Transaction Execution State Machine for Interrupt
In the following presentation, all references to micro-frame are in the context of a
micro-frame within an H-Frame.