![Intel IXP45X Скачать руководство пользователя страница 476](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092476.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
476
Order Number: 306262-004US
If the host experiences hold-offs that cause the host controller to skip start-split
transactions for an OUT transfer, the state of the transfer will not progress
appropriately. The transaction translator will observe protocol violations in the arrival of
the start-splits for the OUT endpoint (i.e. the transaction position annotation will be
incorrect as received by the transaction translator).
Example scenarios are described in
“Split Transaction for Isochronous — Processing
.
A host controller implementation can optionally track the progress of an OUT split
transaction by setting appropriate bits in the siTD.C-prog-mask as it executes each
scheduled start-split. The checkPreviousBit() algorithm defined in
- Do Complete Split” on page 476
can be used prior to executing each start-split to
determine whether start-splits were skipped. The host controller can use this
mechanism to detect missed micro-frames. It can then set the siTD’s Active bit to zero
and stop execution of this siTD. This saves on both memory and high-speed bus
bandwidth.
Periodic Isochronous - Do Complete Split
This state is only used by a split-transaction isochronous IN endpoint. This state is
entered unconditionally from the Do Start State after a start-split transaction is
executed for an IN endpoint. Each time the host controller visits an siTD in this state, it
conducts a number of tests to determine whether it should execute a complete-split
transaction. The individual tests are listed below. The sequence they are applied
depends on which micro-frame the host controller is currently executing which means
that the tests might not be applied until after the siTD referenced from the back pointer
has been fetched.
• Test A. cMicroFrameBit is bit-wise anded with siTD.C-mask field. A non-zero result
indicates that software scheduled a complete-split for this endpoint, during this
micro-frame. This test is always applied to a newly fetched siTD that is in this state.
• Test B. The siTD.C-prog-mask bit vector is checked to determine whether the
previous complete splits have been executed. An example algorithm is below (this
is slightly different than the algorithm used in
“Periodic Interrupt - Do Complete
). The sequence in which this test is applied depends on the
current value of FRINDEX[2:0]. If FRINDEX[2:0] is 0 or 1, it is not applied until the
back pointer has been used. Otherwise it is applied immediately.
Algorithm Boolean CheckPreviousBit (
siTD.C-prog-mask, siTD.C-mask, cMicroFrameBi
t)
Begin
Boolean rvalue = TRUE;
previousBit = cMicroFrameBit rotate-right(1)
-- Bit-wise anding previousBit with C-mask indicates whether
there was an intent
-- to send a complete split in the previous micro-frame. So, if the
'previous bit' is set in C-mask, check C-prog-mask to make sure it happened.
if previousBit bitAND siTD.C-mask then
if not (previousBit bitAND siTD.C-prog-mask) then
rvalue = FALSE
End if
End if