Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Order Number: 306262--, Revision: 004US
467
USB 2.0 Host Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Managing QH.FrameTag Field
The QH.FrameTag field in a queue head is completely managed by the host controller.
The rules for setting QH.FrameTag are simple:
• Rule 1: If transitioning from Do Start Split to Do Complete Split and the current
value of FRINDEX[2:0] is 6 QH.FrameTag is set to FRINDEX[7:3] + 1. This
accommodates split transactions whose start-split and complete-splits are in
different H-Frames (case 2a, see
Table 68, “Split Transaction, Interrupt Scheduling
Boundary Conditions” on page 456
• Rule 2: If the current value of FRINDEX[2:0] is 7, QH.FrameTag is set to
FRINDEX[7:3] + 1. This accommodates staying in Do Complete Split for cases
2a, 2b, and 2c (
Table 68, “Split Transaction, Interrupt Scheduling Boundary
• Rule 3: If transitioning from Do_Start Split to Do Complete Split and the
current value of FRINDEX[2:0] is not 6, or currently in Do Complete Split and the
current value of (FRINDEX[2:0]) is not 7, FrameTag is set to FRINDEX[7:3]. This
accommodates all other cases (
Table 68, “Split Transaction, Interrupt Scheduling
Boundary Conditions” on page 456
9.14.12.2.5 Rebalancing the Periodic Schedule
System software must occasionally adjust a periodic queue head’s S-mask and C-mask
fields during operation. This need occurs when adjustments to the periodic schedule
create a new bandwidth budget and one or more queue head’s are assigned new
execution footprints (i.e. new S-mask and C-mask values).
Table 180.
Interrupt IN/OUT Do Complete Split State Execution Criteria
Condition
Action
Description
not(A)
not(D)
Ignore QHD
Neither a start nor complete-split is scheduled for the current micro-frame.Host controller
should continue walking the schedule.
A
not(C)
If PIDCode = IN
Halt QHD
If PIDCode = OUT
Retry start-split
Progress bit check failed. These means a complete-split has been missed. There is the
possibility of lost data. If PIDCode is an IN, then the Queue head must be halted.
If PIDCode is an OUT, then the transfer state is not advanced and the state exited (e.g. start-
split is retried). This is a host-induced error and does not effect CERR.
In either case, set the Missed Micro-frame bit in the status field to a one.
A
not(B)
C
If PIDCode = IN
Halt QHD
If PIDCode = OUT
Retry start-split
QH.FrameTag test failed. This means that exactly one or more H-Frames have been skipped.
This means complete-splits and have missed. There is the possibility of lost data. If PIDCode
is an IN, then the Queue head must be halted.
If PIDCode is an OUT, then the transfer state is not advanced and the state exited (e.g. start-
split is retried). This is a host-induced error and does not effect CERR.
In either case, set the Missed Micro-frame bit in the status field to a one.
A
B
C
not(D)
Execute
complete-split
This is the non-error case where the host controller executes a complete-split transaction.
D
If PIDCode = IN
Halt QHD
If PIDCode = OUT
Retry start-split
This is a degenerate case where the start-split was issued, but all of the complete-splits were
skipped and all possible intervening
opportunities to detect the missed data failed to fire. If PIDCode is an IN, then the Queue
head must be halted.
If PIDCode is an OUT, then the transfer state is not advanced and the state exited (e.g. start-
split is retried). This is a host-induced error and does not effect CERR.
In either case, set the Missed Micro-frame bit in the status field to a one. Note: When
executing in the context of a Recovery Path mode, the host controller is allowed to process
the queue head and take the actions indicated above, or it may wait until the queue head is
visited in the normal processing mode. Regardless, the host controller must not execute a
start-split in the context of a executing in a Recovery Path mode.