![Intel IXP45X Developer'S Manual Download Page 472](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092472.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors—USB 2.0 Host Controller
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Developer’s Manual
August 2006
472
Order Number: 306262-004US
In similar kind to interrupt split-transactions, the portions of the split transaction
protocol must execute in the micro-frames they are scheduled. The queue head data
structure used to manage full- and low-speed interrupt has several mechanisms for
tracking when portions of a transaction have occurred. Isochronous transfers use
siTDs, for their transfers, and the data structures are only reachable via the schedule in
the exact micro-frame in which they are required (so all the mechanism employed for
tracking in queue heads is not required for siTDs). Software has the option of reusing
siTD several times in the complete periodic schedule. However, it must ensure that the
results of split transaction N are consumed and the siTD reinitialized (activated) before
the host controller gets back to the siTD (in a future micro-frame).
Split-transaction isochronous OUTs utilize a low-level protocol to indicate which
portions of the split transaction data have arrived. Control over the low-level protocol is
exposed in an siTD via the fields Transaction Position (TP) and Transaction Count (T-
count). If the entire data payload for the OUT split transaction is larger than 188 bytes,
there will be more than one start-split transaction, each of which require proper
annotation. If host hold-offs occur, then the sequence of annotations received from the
host will not be complete, which is detected and handled by the transaction translator.
See
“Periodic Isochronous - Do Start Split” on page 474
for a description on how these
fields are used during a sequence of start-split transactions.
The fields siTD.T-Count and siTD.TP are used by the host controller to drive and
sequence the transaction position annotations. It is the responsibility of system
software to properly initialize these fields in each siTD. Once the budget for a split-
transaction isochronous endpoint is established, S-mask, T-Count, and TP initialization
values for all the siTD associated with the endpoint are constant. They remain constant
until the budget for the endpoint is recalculated by software and the periodic schedule
adjusted.
For IN-endpoints, the transaction translator simply annotates the response data
packets with enough information to allow the host controller to identify the last data. As
with split transaction Interrupt, it is the host controller's responsibility to detect when it
has missed an opportunity to execute a complete-split. The following field in the siTD is
used to track and detect errors in the execution of a split transaction for an IN
isochronous endpoint.
• 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 a bit for each complete-split executed. The bit position is
determined by the micro-frame (FRINDEX[2:0]) 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. System software is required to initialize this field to zero
before setting an siTD's Active bit to a one.
If a transaction translator returns with the final data before all of the complete-splits
have been executed, the state of the transfer is advanced so that the remaining
complete-splits are not executed. Refer to
“Periodic Isochronous - Do Complete Split”
for a description on how the state of the transfer is advanced. It is
important to note that an IN siTD is retired based solely on the responses from the
Transaction Translator to the complete-split transactions. This means, for example, that
it is possible for a transaction translator to respond to a complete-split with an MDATA
PID. The number of bytes in the MDATA's data payload could cause the siTD field Total
Bytes to Transfer to decrement to zero. This response can occur, before all of the
scheduled complete-splits have been executed. In other interface, data structures (e.g.
high-speed data streams through queue heads), the transition of Total Bytes to