Intel IXP400 Frozen Dessert Maker User Manual


 
Intel
®
IXP400 Software
Access-Layer Components: Queue Manager (IxQMgr) API
April 2005 IXP400 Software Version 2.0 Programmer’s Guide
268 Document Number: 252539, Revision: 007
18.7 Configuration Values
Table 48 details the attributes of a queue that can be configured and the possible values that these
attributes can have (word = 32 bits).
18.8 Dispatcher
The IxQMgr access-layer component provides a dispatcher to enable clients to register notification
callbacks to be called when a queue is in a specified state. A queue’s state is defined by the queue
status flags E, NE, NF, F, NOTE, NOTNE, NOTNF, and NOTF. Each queue will have its own
watermark level defined, which triggers a change in its status flag and generates an interrupt to the
Intel XScale core. The QM1 Queue Manager interrupt to the Intel XScale core represents a change
in the queue status for lower queues 0-31, and the QM2 interrupt represents a change in the queue
status for upper queues 32-63.
In case of the upper queues 32-63, the notification occurs on change of the Nearly Empty flag and
the watermark levels cannot be changed. The watermark level triggers the change of the status flag
for a particular queue, and the upper queues 0-31 provide additional control when the interrupt gets
triggered.
Prior to start of the dispatcher, ixQMgrDispatcherLoopGet( ) is used to get a pointer to the correct
queue dispatcher. The function pointer being returned in response to ixQMgrDispatcherLoopGet( )
is — in the remainder of this section — referred to as the “dispatcher”. There are three dispatchers
in the IxQMgr component that may be returned to ixQMgrDispatcherLoopGet().
ixQMgrDispatcherLoopRunA0 - This dispatcher is called when an IXP42X product line A-0
stepping processor is detected.
ixQMgrDispatcherLoopRunB0 - This is the default dispatcher for IXP42X product line B-0
stepping and all IXP46X product line processors are detected.
ixQMgrDispatcherLoopRunB0LLP - This dispatcher is a variation of the
ixQMgrDispatcherLoopRunB0 dispatcher that adds LiveLock Prevention support (refer to
“Livelock Prevention” on page 272). The IxFeatureCtrl component is used to select whether
this dispatcher is to be selected or not, as described in Section 12.5.
There is no assumption made about how the dispatcher is called. For example,
ixQMgrDispatcherLoopRunA0(), ixQMgrDispatcherLoopRunB0( ) or
ixQMgrDispatcherLoopRunB0LLP( ) may be registered as an ISR for the AQM interrupts, or it
Table 48. AQM Configuration Attributes
Attribute Description Values
Queue Size
The maximum number of words that the queue can
contain.
Equals the number of entries x queue entry size (in
words).
16, 32, 64, or 128 words
Queue Entry Size The number of words in a queue entry. 1, 2, or 4 words
NE Watermark
The maximum number of occupied entries for which a
queue is considered nearly empty.
0, 1, 2, 4, 8, 16, 32, or 64
entries
NF Watermark
The maximum number of empty entries for which a queue
is considered to be nearly full.
0, 1, 2, 4, 8, 16, 32, or 64
entries