Removing Queue Heads From Asynchronous Schedule - Intel IXP45X Developer's Manual

Network processors
Table of Contents

Advertisement

Intel
When inserting a queue head into an active list, software must ensure that the
schedule is always coherent from the host controllers' point of view. This means that
the system software must ensure that all queue head pointer fields are valid. For
example qTD pointers have T-Bits set to a one or reference valid qTDs and the
Horizontal Pointer references a valid queue head data structure. The following
algorithm represents the functional requirements:
InsertQueueHead (pQHeadCurrent, pQueueHeadNew)
--
-- Requirement: all inputs must be properly initialized.
--
-- pQHeadCurrent is a pointer to a queue head that is
-- already in the active list
-- pQHeadNew is a pointer to the queue head to be added
--
-- This algorithm links a new queue head into a existing
-- list
--
pQueueHeadNew.HorizontalPointer = pQueueHeadCurrent.HorizontalPointer
pQueueHeadCurrent.HorizontalPointer = physicalAddressOf(pQueueHeadNew)
End InsertQueueHead
9.14.8.2

Removing Queue Heads from Asynchronous Schedule

This is a software requirement section. There are two independent events for removing
queue heads from the asynchronous schedule. The first is shutting down (deactivating)
the asynchronous list. The second is extracting a single queue head from an activated
list. Software deactivates the asynchronous schedule by setting the Asynchronous
Schedule Enable bit in the USBCMD register to a zero. Software can determine when
the list is idle when the Asynchronous Schedule Status bit in the USBSTS register is a
zero. The normal mode of operation is that software removes queue heads from the
asynchronous schedule without shutting it down. Software must not remove an active
queue head from the schedule. Software should first deactivate all active qTDs, wait for
the queue head to go inactive, then remove the queue head from the asynchronous
list. Software removes a queue head from the asynchronous list via the following
algorithm. As illustrated, the unlinking is quite easy. Software merely must ensure all of
the link pointers reachable by the host controller are kept consistent.
®
®
Intel
IXP45X and Intel
IXP46X Product Line of Network Processors
Developer's Manual
432
®
®
IXP45X and Intel
IXP46X Product Line of Network Processors—USB 2.0 Host Controller
August 2006
Order Number: 306262-004US

Advertisement

Table of Contents
loading

This manual is also suitable for:

Ixp46x

Table of Contents