Intel® IXP400 Software

Access-Layer Components: Queue Manager (IxQMgr) API

18.7Configuration 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).

Table 48. AQM Configuration Attributes

Attribute

Description

Values

 

 

 

 

The maximum number of words that the queue can

 

Queue Size

contain.

16, 32, 64, or 128 words

Equals the number of entries x queue entry size (in

 

 

 

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

0, 1, 2, 4, 8, 16, 32, or 64

queue is considered nearly empty.

entries

 

 

 

 

NF Watermark

The maximum number of empty entries for which a queue

0, 1, 2, 4, 8, 16, 32, or 64

is considered to be nearly full.

entries

 

 

 

 

18.8Dispatcher

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

April 2005

IXP400 Software Version 2.0

Programmer’s Guide

268

Document Number: 252539, Revision: 007

 

Page 268
Image 268
Intel IXP400 manual Configuration Values, Dispatcher, AQM Configuration Attributes, Attribute Description Values