Main Page   Modules   Alphabetical List   Data Structures   File List   Data Fields   Globals  

IXP425 Queue Manager (IxQMgr) API

The public API for the IXP425 QMgr component. More...

Data Structures

struct  IxQMgrQInlinedReadWriteInfo
 Internal structure to facilitate inlining functions in IxQMgr.h. More...


Defines

#define IX_QMGR_SAVED_COMPONENT_NAME
 Because this file contains inline functions which will be compiled into other components, we need to ensure that the IX_COMPONENT_NAME define is set to ix_qmgr while this code is being compiled.

#define IX_COMPONENT_NAME
#define IX_QMGR_INLINE
 Inline definition, for inlining of Queue Access functions on API.

#define IX_QMGR_MAX_NUM_QUEUES
 Number of queues supported by the AQM.

#define IX_QMGR_MIN_QID
 Minimum queue identifier.

#define IX_QMGR_MAX_QID
 Maximum queue identifier.

#define IX_QMGR_MIN_QUEUPP_QID
 Minimum queue identifier for reduced functionality queues.

#define IX_QMGR_MAX_QNAME_LEN
 Maximum queue name length.

#define IX_QMGR_WARNING
 Warning return code.

#define IX_QMGR_PARAMETER_ERROR
 Parameter error return code (NULL pointer etc..).

#define IX_QMGR_INVALID_Q_ENTRY_SIZE
 Invalid entry size return code.

#define IX_QMGR_INVALID_Q_ID
 Invalid queue identifier return code.

#define IX_QMGR_INVALID_CB_ID
 Invalid callback identifier return code.

#define IX_QMGR_CB_ALREADY_SET
 Callback set error return code.

#define IX_QMGR_NO_AVAILABLE_SRAM
 Sram consumed return code.

#define IX_QMGR_INVALID_INT_SOURCE_ID
 Invalid queue interrupt source identifier return code.

#define IX_QMGR_INVALID_QSIZE
 Invalid queue size error code.

#define IX_QMGR_INVALID_Q_WM
 Invalid queue watermark return code.

#define IX_QMGR_Q_NOT_CONFIGURED
 Queue not configured return code.

#define IX_QMGR_Q_ALREADY_CONFIGURED
 Queue already configured return code.

#define IX_QMGR_Q_UNDERFLOW
 Underflow return code.

#define IX_QMGR_Q_OVERFLOW
 Overflow return code.

#define IX_QMGR_Q_INVALID_PRIORITY
 Invalid priority return code.

#define IX_QMGR_ENTRY_INDEX_OUT_OF_BOUNDS
 Entry index out of bounds return code.

#define ixQMgrDispatcherLoopRun
 Map old function name ixQMgrDispatcherLoopRun() to ixQMgrDispatcherLoopRunA0().


Typedefs

typedef UINT32 IxQMgrQStatus
 Queue status.

typedef unsigned IxQMgrCallbackId
 Uniquely identifies a callback function.

typedef void(* IxQMgrCallback )(IxQMgrQId qId, IxQMgrCallbackId cbId)
 QMgr notification callback type.

typedef void(* IxQMgrDispatcherFuncPtr )(IxQMgrDispatchGroup group)
 QMgr Dispatcher Loop function pointer.


Enumerations

enum  IxQMgrQId {
  IX_QMGR_QUEUE_0,
  IX_QMGR_QUEUE_1,
  IX_QMGR_QUEUE_2,
  IX_QMGR_QUEUE_3,
  IX_QMGR_QUEUE_4,
  IX_QMGR_QUEUE_5,
  IX_QMGR_QUEUE_6,
  IX_QMGR_QUEUE_7,
  IX_QMGR_QUEUE_8,
  IX_QMGR_QUEUE_9,
  IX_QMGR_QUEUE_10,
  IX_QMGR_QUEUE_11,
  IX_QMGR_QUEUE_12,
  IX_QMGR_QUEUE_13,
  IX_QMGR_QUEUE_14,
  IX_QMGR_QUEUE_15,
  IX_QMGR_QUEUE_16,
  IX_QMGR_QUEUE_17,
  IX_QMGR_QUEUE_18,
  IX_QMGR_QUEUE_19,
  IX_QMGR_QUEUE_20,
  IX_QMGR_QUEUE_21,
  IX_QMGR_QUEUE_22,
  IX_QMGR_QUEUE_23,
  IX_QMGR_QUEUE_24,
  IX_QMGR_QUEUE_25,
  IX_QMGR_QUEUE_26,
  IX_QMGR_QUEUE_27,
  IX_QMGR_QUEUE_28,
  IX_QMGR_QUEUE_29,
  IX_QMGR_QUEUE_30,
  IX_QMGR_QUEUE_31,
  IX_QMGR_QUEUE_32,
  IX_QMGR_QUEUE_33,
  IX_QMGR_QUEUE_34,
  IX_QMGR_QUEUE_35,
  IX_QMGR_QUEUE_36,
  IX_QMGR_QUEUE_37,
  IX_QMGR_QUEUE_38,
  IX_QMGR_QUEUE_39,
  IX_QMGR_QUEUE_40,
  IX_QMGR_QUEUE_41,
  IX_QMGR_QUEUE_42,
  IX_QMGR_QUEUE_43,
  IX_QMGR_QUEUE_44,
  IX_QMGR_QUEUE_45,
  IX_QMGR_QUEUE_46,
  IX_QMGR_QUEUE_47,
  IX_QMGR_QUEUE_48,
  IX_QMGR_QUEUE_49,
  IX_QMGR_QUEUE_50,
  IX_QMGR_QUEUE_51,
  IX_QMGR_QUEUE_52,
  IX_QMGR_QUEUE_53,
  IX_QMGR_QUEUE_54,
  IX_QMGR_QUEUE_55,
  IX_QMGR_QUEUE_56,
  IX_QMGR_QUEUE_57,
  IX_QMGR_QUEUE_58,
  IX_QMGR_QUEUE_59,
  IX_QMGR_QUEUE_60,
  IX_QMGR_QUEUE_61,
  IX_QMGR_QUEUE_62,
  IX_QMGR_QUEUE_63,
  IX_QMGR_QUEUE_INVALID
}
 Generic identifiers for AQM queues. More...

enum  IxQMgrQStatusMask {
  IX_QMGR_Q_STATUS_E_BIT_MASK,
  IX_QMGR_Q_STATUS_NE_BIT_MASK,
  IX_QMGR_Q_STATUS_NF_BIT_MASK,
  IX_QMGR_Q_STATUS_F_BIT_MASK,
  IX_QMGR_Q_STATUS_UF_BIT_MASK,
  IX_QMGR_Q_STATUS_OF_BIT_MASK
}
 Queue status mask. More...

enum  IxQMgrSourceId {
  IX_QMGR_Q_SOURCE_ID_E,
  IX_QMGR_Q_SOURCE_ID_NE,
  IX_QMGR_Q_SOURCE_ID_NF,
  IX_QMGR_Q_SOURCE_ID_F,
  IX_QMGR_Q_SOURCE_ID_NOT_E,
  IX_QMGR_Q_SOURCE_ID_NOT_NE,
  IX_QMGR_Q_SOURCE_ID_NOT_NF,
  IX_QMGR_Q_SOURCE_ID_NOT_F
}
 Queue interrupt source select. More...

enum  IxQMgrQEntrySizeInWords {
  IX_QMGR_Q_ENTRY_SIZE1,
  IX_QMGR_Q_ENTRY_SIZE2,
  IX_QMGR_Q_ENTRY_SIZE4
}
 QMgr queue entry sizes. More...

enum  IxQMgrQSizeInWords {
  IX_QMGR_Q_SIZE16,
  IX_QMGR_Q_SIZE32,
  IX_QMGR_Q_SIZE64,
  IX_QMGR_Q_SIZE128,
  IX_QMGR_Q_SIZE_INVALID
}
 QMgr queue sizes. More...

enum  IxQMgrWMLevel {
  IX_QMGR_Q_WM_LEVEL0,
  IX_QMGR_Q_WM_LEVEL1,
  IX_QMGR_Q_WM_LEVEL2,
  IX_QMGR_Q_WM_LEVEL4,
  IX_QMGR_Q_WM_LEVEL8,
  IX_QMGR_Q_WM_LEVEL16,
  IX_QMGR_Q_WM_LEVEL32,
  IX_QMGR_Q_WM_LEVEL64
}
 QMgr watermark levels. More...

enum  IxQMgrDispatchGroup {
  IX_QMGR_QUELOW_GROUP,
  IX_QMGR_QUEUPP_GROUP
}
 QMgr dispatch group select identifiers. More...

enum  IxQMgrPriority {
  IX_QMGR_Q_PRIORITY_0,
  IX_QMGR_Q_PRIORITY_1,
  IX_QMGR_Q_PRIORITY_2,
  IX_QMGR_Q_PRIORITY_INVALID
}
 Dispatcher priority levels. More...


Functions

PUBLIC IX_STATUS ixQMgrInit (void)
 Initialise the QMgr.

PUBLIC IX_STATUS ixQMgrUnload (void)
 Uninitialise the QMgr.

PUBLIC void ixQMgrShow (void)
 Describe queue configuration and statistics for active queues.

PUBLIC IX_STATUS ixQMgrQShow (IxQMgrQId qId)
 Display aqueue configuration and statistics for a queue.

PUBLIC IX_STATUS ixQMgrQConfig (char *qName, IxQMgrQId qId, IxQMgrQSizeInWords qSizeInWords, IxQMgrQEntrySizeInWords qEntrySizeInWords)
 Configure an AQM queue.

PUBLIC IX_STATUS ixQMgrQSizeInEntriesGet (IxQMgrQId qId, unsigned *qSizeInEntries)
 Return the size of a queue in entries.

PUBLIC IX_STATUS ixQMgrWatermarkSet (IxQMgrQId qId, IxQMgrWMLevel ne, IxQMgrWMLevel nf)
 Set the Nearly Empty and Nearly Full Watermarks fo a queue.

PUBLIC IX_STATUS ixQMgrAvailableSramAddressGet (UINT32 *address, unsigned *sizeOfFreeSram)
 Return the address of available AQM SRAM.

PUBLIC IX_STATUS ixQMgrQReadWithChecks (IxQMgrQId qId, UINT32 *entry)
 Read an entry from a queue.

IX_STATUS ixQMgrQReadMWordsMinus1 (IxQMgrQId qId, UINT32 *entry)
 This function reads the remaining of the q entry for queues configured with many words. (the first word of the entry is already read in the inlined function and the entry pointer already incremented.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQRead (IxQMgrQId qId, UINT32 *entryPtr)
 Fast read of an entry from a queue.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQBurstRead (IxQMgrQId qId, UINT32 numEntries, UINT32 *entries)
 Read a number of entries from an AQM queue.

IX_STATUS ixQMgrQPeek (IxQMgrQId qId, unsigned int entryIndex, UINT32 *entry)
 Read an entry from a queue without moving the read pointer.

PUBLIC IX_STATUS ixQMgrQWriteWithChecks (IxQMgrQId qId, UINT32 *entry)
 Write an entry to an AQM queue.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQWrite (IxQMgrQId qId, UINT32 *entry)
 Fast write of an entry to a queue.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQBurstWrite (IxQMgrQId qId, unsigned numEntries, UINT32 *entries)
 Write a number of entries to an AQM queue.

IX_STATUS ixQMgrQPoke (IxQMgrQId qId, unsigned int entryIndex, UINT32 *entry)
 Write an entry to a queue without moving the write pointer.

PUBLIC IX_STATUS ixQMgrQNumEntriesGet (IxQMgrQId qId, unsigned *numEntries)
 Get a snapshot of the number of entries in a queue.

PUBLIC IX_STATUS ixQMgrQStatusGetWithChecks (IxQMgrQId qId, IxQMgrQStatus *qStatus)
 Get a queues status.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQStatusGet (IxQMgrQId qId, IxQMgrQStatus *qStatus)
 Fast get of a queue's status.

PUBLIC IX_STATUS ixQMgrDispatcherPrioritySet (IxQMgrQId qId, IxQMgrPriority priority)
 Set the dispatch priority of a queue.

PUBLIC IX_STATUS ixQMgrNotificationEnable (IxQMgrQId qId, IxQMgrSourceId sourceId)
 Enable notification on a queue for a specified queue source flag.

PUBLIC IX_STATUS ixQMgrNotificationDisable (IxQMgrQId qId)
 Disable notifications on a queue.

PUBLIC void ixQMgrDispatcherLoopRunA0 (IxQMgrDispatchGroup group)
 Run the callback dispatcher.

PUBLIC void ixQMgrDispatcherLoopRunB0 (IxQMgrDispatchGroup group)
 Run the callback dispatcher.

PUBLIC IX_STATUS ixQMgrNotificationCallbackSet (IxQMgrQId qId, IxQMgrCallback callback, IxQMgrCallbackId callbackId)
 Set the notification callback for a queue.

PUBLIC void ixQMgrDispatcherLoopGet (IxQMgrDispatcherFuncPtr *qDispatcherFuncPtr)
 Get QMgr DispatcherLoopRun for respective silicon device.

PUBLIC void ixQMgrStickyInterruptRegEnable (void)
 Enable AQM's sticky interrupt register behaviour only available on B0 Silicon.


Variables

IxQMgrQInlinedReadWriteInfo ixQMgrQInlinedReadWriteInfo []
UINT32 ixQMgrAqmIfQueLowStatRegAddr []
UINT32 ixQMgrAqmIfQueLowStatBitsOffset []
UINT32 ixQMgrAqmIfQueLowStatBitsMask
UINT32 ixQMgrAqmIfQueUppStat0RegAddr
UINT32 ixQMgrAqmIfQueUppStat1RegAddr
UINT32 ixQMgrAqmIfQueUppStat0BitMask []
UINT32 ixQMgrAqmIfQueUppStat1BitMask []

Detailed Description

The public API for the IXP425 QMgr component.

IxQMgr is a low level interface to the AHB Queue Manager


Define Documentation

#define IX_QMGR_CB_ALREADY_SET
 

Callback set error return code.

The specified callback has already been for this queue

Definition at line 273 of file IxQMgr.h.

#define IX_QMGR_ENTRY_INDEX_OUT_OF_BOUNDS
 

Entry index out of bounds return code.

Entry index is greater than number of entries in queue.

Definition at line 400 of file IxQMgr.h.

#define IX_QMGR_INLINE
 

Inline definition, for inlining of Queue Access functions on API.

Please read the header information in this file for more details on the use of function inlining in this component.

Definition at line 125 of file IxQMgr.h.

#define IX_QMGR_INVALID_CB_ID
 

Invalid callback identifier return code.

Invalid callback id

Definition at line 260 of file IxQMgr.h.

#define IX_QMGR_INVALID_INT_SOURCE_ID
 

Invalid queue interrupt source identifier return code.

Invalid queue interrupt source given for notification enable

Definition at line 298 of file IxQMgr.h.

#define IX_QMGR_INVALID_Q_ENTRY_SIZE
 

Invalid entry size return code.

Invalid queue entry size for a queue read/write

Definition at line 235 of file IxQMgr.h.

#define IX_QMGR_INVALID_Q_ID
 

Invalid queue identifier return code.

Invalid queue id, not in range 0-63

Definition at line 248 of file IxQMgr.h.

#define IX_QMGR_INVALID_Q_WM
 

Invalid queue watermark return code.

Invalid queue watermark given for watermark set

Definition at line 324 of file IxQMgr.h.

#define IX_QMGR_INVALID_QSIZE
 

Invalid queue size error code.

Invalid queue size not one of 16,32, 64, 128

Definition at line 312 of file IxQMgr.h.

#define IX_QMGR_MAX_NUM_QUEUES
 

Number of queues supported by the AQM.

This constant is used to indicate the number of AQM queues

Definition at line 142 of file IxQMgr.h.

#define IX_QMGR_MAX_QID
 

Maximum queue identifier.

This constant is used to indicate the largest queue identifier

Definition at line 168 of file IxQMgr.h.

#define IX_QMGR_MAX_QNAME_LEN
 

Maximum queue name length.

This constant is used to indicate the maximum null terminated string length (excluding '') for a queue name

Definition at line 196 of file IxQMgr.h.

#define IX_QMGR_MIN_QID
 

Minimum queue identifier.

This constant is used to indicate the smallest queue identifier

Definition at line 155 of file IxQMgr.h.

#define IX_QMGR_MIN_QUEUPP_QID
 

Minimum queue identifier for reduced functionality queues.

This constant is used to indicate Minimum queue identifier for reduced functionality queues

Definition at line 182 of file IxQMgr.h.

Referenced by ixQMgrQBurstRead(), ixQMgrQBurstWrite(), ixQMgrQRead(), ixQMgrQStatusGet(), and ixQMgrQWrite().

#define IX_QMGR_NO_AVAILABLE_SRAM
 

Sram consumed return code.

All AQM Sram is consumed by queue configuration

Definition at line 286 of file IxQMgr.h.

#define IX_QMGR_PARAMETER_ERROR
 

Parameter error return code (NULL pointer etc..).

parameter error out of range/invalid

Definition at line 222 of file IxQMgr.h.

#define IX_QMGR_Q_ALREADY_CONFIGURED
 

Queue already configured return code.

Returned to client to indicate that a queue has already been configured

Definition at line 350 of file IxQMgr.h.

#define IX_QMGR_Q_INVALID_PRIORITY
 

Invalid priority return code.

Invalid priority, not one of 0,1,2

Definition at line 388 of file IxQMgr.h.

#define IX_QMGR_Q_NOT_CONFIGURED
 

Queue not configured return code.

Returned to the client when a function has been called on an unconfigured queue

Definition at line 338 of file IxQMgr.h.

#define IX_QMGR_Q_OVERFLOW
 

Overflow return code.

Overflow on a queue write has occurred

Definition at line 376 of file IxQMgr.h.

Referenced by ixQMgrQBurstWrite(), and ixQMgrQWrite().

#define IX_QMGR_Q_UNDERFLOW
 

Underflow return code.

Underflow on a queue read has occurred

Definition at line 363 of file IxQMgr.h.

Referenced by ixQMgrQBurstRead(), and ixQMgrQRead().

#define IX_QMGR_SAVED_COMPONENT_NAME
 

Because this file contains inline functions which will be compiled into other components, we need to ensure that the IX_COMPONENT_NAME define is set to ix_qmgr while this code is being compiled.

This will ensure that the correct implementation is provided for the memory access macros IX_OSSERV_READ_LONG and IX_OSSERV_WRITE_LONG which are used in this file. This must be done before including "IxOsServicesMemAccess.h"

Definition at line 93 of file IxQMgr.h.

#define IX_QMGR_WARNING
 

Warning return code.

Execution complete, but there is a special case to handle

Definition at line 209 of file IxQMgr.h.

#define ixQMgrDispatcherLoopRun
 

Map old function name ixQMgrDispatcherLoopRun() to ixQMgrDispatcherLoopRunA0().

Definition at line 412 of file IxQMgr.h.


Typedef Documentation

IxQMgrCallback
 

QMgr notification callback type.

This defines the interface to all client callback functions.

Parameters:
IxQMgrQId qId(in) - the queue identifier
IxQMgrCallbackId cbId(in) - the callback identifier

Definition at line 699 of file IxQMgr.h.

IxQMgrCallbackId
 

Uniquely identifies a callback function.

A unique callback identifier associated with each callback registered by clients.

Definition at line 687 of file IxQMgr.h.

IxQMgrDispatcherFuncPtr
 

QMgr Dispatcher Loop function pointer.

This defines the interface for QMgr Dispather functions.

Parameters:
IxQMgrDispatchGroup group(in) - the group of the queue of which the dispatcher will run

Definition at line 714 of file IxQMgr.h.

IxQMgrQStatus
 

Queue status.

A queues status is defined by its relative fullness or relative emptiness. Each of the queues 0-31 have Nearly Empty, Nearly Full, Empty, Full, Underflow and Overflow status flags. Queues 32-63 have just Nearly Empty and Full status flags. The flags bit positions are outlined below:

OF - bit-5
UF - bit-4
F - bit-3
NF - bit-2
NE - bit-1
E - bit-0

Definition at line 523 of file IxQMgr.h.


Enumeration Type Documentation

enum IxQMgrDispatchGroup
 

QMgr dispatch group select identifiers.

This enum defines the groups over which the dispatcher will process when called. One of the enum values must be used as a input to ixQMgrDispatcherLoopRun().

Enumeration values:
IX_QMGR_QUELOW_GROUP  Queues 0-31.
IX_QMGR_QUEUPP_GROUP  Queues 32-63.

Definition at line 651 of file IxQMgr.h.

enum IxQMgrPriority
 

Dispatcher priority levels.

This enum defines the different queue dispatch priority levels. The lowest priority number (0) is the highest priority level.

Enumeration values:
IX_QMGR_Q_PRIORITY_0  Priority level 0.
IX_QMGR_Q_PRIORITY_1  Priority level 1.
IX_QMGR_Q_PRIORITY_2  Priority level 2.
IX_QMGR_Q_PRIORITY_INVALID  Invalid Priority level.

Definition at line 668 of file IxQMgr.h.

enum IxQMgrQEntrySizeInWords
 

QMgr queue entry sizes.

The entry size of a queue specifies the size of a queues entry in words.

Enumeration values:
IX_QMGR_Q_ENTRY_SIZE1  1 word entry
IX_QMGR_Q_ENTRY_SIZE2  2 word entry
IX_QMGR_Q_ENTRY_SIZE4  4 word entry

Definition at line 581 of file IxQMgr.h.

Referenced by ixQMgrQBurstRead(), and ixQMgrQBurstWrite().

enum IxQMgrQId
 

Generic identifiers for AQM queues.

These enum values are used in the AQM queue config header file. This enum defines generic identifiers for the queues in that the application of the queue is not specified. The connection between queue number and queue application is done in the AQM queue config header file. Clients of this component should NOT use these values to identify queues, the #defines in the AQM queue configuration header should be used.

Definition at line 433 of file IxQMgr.h.

enum IxQMgrQSizeInWords
 

QMgr queue sizes.

These values define the allowed queue sizes for AQM queue. The sizes are specified in words.

Enumeration values:
IX_QMGR_Q_SIZE16  16 word buffer
IX_QMGR_Q_SIZE32  32 word buffer
IX_QMGR_Q_SIZE64  64 word buffer
IX_QMGR_Q_SIZE128  128 word buffer
IX_QMGR_Q_SIZE_INVALID  Insure that this is greater than largest queue size supported by the hardware.

Definition at line 599 of file IxQMgr.h.

enum IxQMgrQStatusMask
 

Queue status mask.

Masks for extracting the individual status flags from the IxQMgrStatus word.

Definition at line 536 of file IxQMgr.h.

enum IxQMgrSourceId
 

Queue interrupt source select.

This enum defines the different source conditions on a queue that result in an interupt being fired by the AQM. Interrupt source is configurable for queues 0-31 only. The interrupt source for queues 32-63 is hardwired to the NE(Nearly Empty) status flag.

Enumeration values:
IX_QMGR_Q_SOURCE_ID_E  Queue Empty due to last read.
IX_QMGR_Q_SOURCE_ID_NE  Queue Nearly Empty due to last read.
IX_QMGR_Q_SOURCE_ID_NF  Queue Nearly Full due to last write.
IX_QMGR_Q_SOURCE_ID_F  Queue Full due to last write.
IX_QMGR_Q_SOURCE_ID_NOT_E  Queue Not Empty due to last write.
IX_QMGR_Q_SOURCE_ID_NOT_NE  Queue Not Nearly Empty due to last write.
IX_QMGR_Q_SOURCE_ID_NOT_NF  Queue Not Nearly Full due to last read.
IX_QMGR_Q_SOURCE_ID_NOT_F  Queue Not Full due to last read.

Definition at line 559 of file IxQMgr.h.

enum IxQMgrWMLevel
 

QMgr watermark levels.

These values define the valid watermark levels(in ENTRIES) for queues. Each queue 0-63 have configurable Nearly full and Nearly empty watermarks. For queues 32-63 the Nearly full watermark has NO EFFECT. If the Nearly full watermark is set to IX_QMGR_Q_WM_LEVEL16 this means that the nearly full flag will be set by the hardware when there are >= 16 empty entries in the specified queue. If the Nearly empty watermark is set to IX_QMGR_Q_WM_LEVEL16 this means that the Nearly empty flag will be set by the hardware when there are <= 16 full entries in the specified queue.

Enumeration values:
IX_QMGR_Q_WM_LEVEL0  0 entry watermark
IX_QMGR_Q_WM_LEVEL1  1 entry watermark
IX_QMGR_Q_WM_LEVEL2  2 entry watermark
IX_QMGR_Q_WM_LEVEL4  4 entry watermark
IX_QMGR_Q_WM_LEVEL8  8 entry watermark
IX_QMGR_Q_WM_LEVEL16  16 entry watermark
IX_QMGR_Q_WM_LEVEL32  32 entry watermark
IX_QMGR_Q_WM_LEVEL64  64 entry watermark

Definition at line 627 of file IxQMgr.h.


Function Documentation

ixQMgrAvailableSramAddressGet UINT32 *  address,
unsigned *  sizeOfFreeSram
 

Return the address of available AQM SRAM.

This function returns the starting address in AQM SRAM not used by the current queue configuration and should only be called after all queues have been configured. Calling this function before all queues have been configured will will return the currently available SRAM. A call to configure another queue will use some of the available SRAM. The amount of SRAM available is specified in sizeOfFreeSram. The address is the address of the bottom of available SRAM. Available SRAM extends from address from address to address + sizeOfFreeSram.

Parameters:
UINT32(out) **address - the address of the available SRAM, NULL if none available.
unsigned(out) *sizeOfFreeSram - the size in words of available SRAM
Returns:
  • IX_SUCCESS, there is available SRAM and is pointed to by address

  • IX_QMGR_PARAMETER_ERROR, invalid parameter(s)

  • IX_QMGR_NO_AVAILABLE_SRAM, all AQM SRAM is consumed by the queue configuration.

ixQMgrDispatcherLoopGet IxQMgrDispatcherFuncPtr qDispatcherFuncPtr  ) 
 

Get QMgr DispatcherLoopRun for respective silicon device.

This function get the function pointer for ixQMgrDispatcherLoopRunA0() for A0 or ixQMgrDispatcherLoopRunB0() for B0 Silicon.

Parameters:
IxQMgrDispatcherFuncPtr(out) *qDispatcherFuncPtr - the function pointer of QMgr Dispatcher

ixQMgrDispatcherLoopRunA0 IxQMgrDispatchGroup  group  ) 
 

Run the callback dispatcher.

The function runs the dispatcher for a group of queues. Callbacks are made for interrupts that have occurred on queues within the group that have registered callbacks. The order in which queues are serviced depends on the queue priorities set by the client. This function may be called from interrupt or task context.

This function is not re-entrant.

Parameters:
IxQMgrDispatchGroup(in) group - the group of queues over which the dispatcher will run
Returns:
  • void
Note:
This function may be called from interrupt or task context. However, for optimal performance the choice of context depends also on the operating system used.
For optimal performance with the WindRiver VxWorks OS the recommendation is to use a polling task to call the Dispatcher, for the following reasons:
  • The system cannot handle more than 42000 interrupts per second. As a result, the system may crash at 25% of the maximum traffic rate for Ethernet traffic.
  • Using a polling task to call the Dispatcher works fine.
For optimal performance with the Linux OS the recommendation is to use interrupts to call the Dispatcher, for the following reasons:
  • A task loop cannot run more than 100 times per second (HZ). As an example, if an Ethernet port uses a queue size of 128 entries, the maximum achievable traffic rate is 12800 packets per second. (the system does not crash, but this is 8% of wire speed)
  • Using queue interrupts to call the Dispatcher works fine.

ixQMgrDispatcherLoopRunB0 IxQMgrDispatchGroup  group  ) 
 

Run the callback dispatcher.

The enhanced version of ixQMgrDispatcherLoopRun () for B0 silicon. The function runs the dispatcher for a group of queues. Callbacks are made for interrupts that have occurred on queues within the group that have registered callbacks. The order in which queues are serviced depends on the queue priorities set by the client. This function may be called from interrupt or task context.

This function is not re-entrant.

Parameters:
IxQMgrDispatchGroup(in) group - the group of queues over which the dispatcher will run
Returns:
  • void
Note:
Compared with ixQMgrDispatcherLoopRunA0(), ixQMgrDispatcherLoopRunB0() is more efficient and takes advantange of QMgr optimization in B0 silicon .

This function may be called from interrupt or task context. However, for optimal performance the choice of context depends also on the operating system used.

For optimal performance with the WindRiver VxWorks OS the recommendation is to use a polling task to call the Dispatcher, for the following reasons:
  • The system cannot handle more than 42000 interrupts per second. As a result, the system may crash at 25% of the maximum traffic rate for Ethernet traffic.
  • Using a polling task to call the Dispatcher works fine.
For optimal performance with the Linux OS the recommendation is to use interrupts to call the Dispatcher, for the following reasons:
  • A task loop cannot run more than 100 times per second (HZ). As an example, if an Ethernet port uses a queue size of 128 entries, the maximum achievable traffic rate is 12800 packets per second. (the system does not crash, but this is 8% of wire speed)
  • Using queue interrupts to call the Dispatcher works fine.

ixQMgrDispatcherPrioritySet IxQMgrQId  qId,
IxQMgrPriority  priority
 

Set the dispatch priority of a queue.

This function is called to set the disptach priority of queue. The effect of this function is to add a priority change request to a queue. This queue is serviced by ixQMgrDispatcherLoopRun.

This function is re-entrant. and can be used from an interrupt context

Parameters:
IxQMgrQId(in) qId - the queue identifier
IxQMgrPriority(in) priority - the new queue dispatch priority
Returns:
  • IX_SUCCESS, priority change request is queued

  • IX_QMGR_Q_NOT_CONFIGURED, the specified qId has not been configured

  • IX_QMGR_Q_INVALID_PRIORITY, specified priority is invalid

ixQMgrInit void   ) 
 

Initialise the QMgr.

This function must be called before and other QMgr function. It sets up internal data structures.

Returns:
  • IX_SUCCESS, the IxQMgr successfully initialised

  • IX_FAIL, failed to initialize the Qmgr

ixQMgrNotificationCallbackSet IxQMgrQId  qId,
IxQMgrCallback  callback,
IxQMgrCallbackId  callbackId
 

Set the notification callback for a queue.

This function sets the callback for the specified queue. This callback will be called by the dispatcher, and may be called in the context of a interrupt If callback has a value of NULL the previously registered callback, if one exists will be unregistered.

Parameters:
IxQMgrQId(in) qId - the queue idenfifier
IxQMgrCallback(in) callback - the callback registered for this queue
IxQMgrCallbackId(in) callbackid - the callback identifier
Returns:
  • IX_SUCCESS, the callback for the specified queue has been set

  • IX_QMGR_Q_NOT_CONFIGURED, the specified qId has not been configured

ixQMgrNotificationDisable IxQMgrQId  qId  ) 
 

Disable notifications on a queue.

This function is called to disable notifications on a specified queue.

This function is re-entrant. and can be used from an interrupt context

Parameters:
IxQMgrQId(in) qId - the queue identifier
Returns:
  • IX_SUCCESS, the interrupt has been disabled

  • IX_QMGR_Q_NOT_CONFIGURED, the specified qId has not been configured

ixQMgrNotificationEnable IxQMgrQId  qId,
IxQMgrSourceId  sourceId
 

Enable notification on a queue for a specified queue source flag.

This function is called by a client of the QMgr to enable notifications on a specified condition. If the condition for the notification is set after the client has called this function but before the function has enabled the interrupt source, then the notification will not occur. For queues 32-63 the notification source is fixed to the NE(Nearly Empty) flag and cannot be changed so the sourceId parameter is ignored for these queues. The status register is read before the notofication is enabled and is read again after the notification has been enabled, if they differ then the warning status is returned.

This function is re-entrant. and can be used from an interrupt context

Parameters:
IxQMgrQId(in) qId - the queue identifier
IxQMgrSourceId(in) sourceId - the interrupt src condition identifier
Returns:
  • IX_SUCCESS, the interrupt has been enabled for the specified source

  • IX_QMGR_Q_NOT_CONFIGURED, the specified qId has not been configured

  • IX_QMGR_INVALID_INT_SOURCE_ID, interrupt source invalid for this queue

  • IX_QMGR_WARNING, the status register may not be constistent

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQBurstRead IxQMgrQId  qId,
UINT32  numEntries,
UINT32 *  entries
 

Read a number of entries from an AQM queue.

This function will burst read a number of entries from the specified queue. The entry size of queue is auto-detected. The function will attempt to read as many entries as specified by the numEntries parameter and will return an UNDERFLOW if any one of the individual entry reads fail.

Warning:
IX_QMGR_Q_UNDERFLOW is only returned for queues 0-31 as queues 32-63 do not have an underflow status maintained, hence there is a potential for silent failure here. This function must be used with caution.
Note:
This function is intended for fast draining of queues, so to make it as efficient as possible, it has the following features:
  • This function is inlined, to reduce unnecessary function call overhead.
  • It does not perform any parameter checks, or update any statistics.
  • It does not check that the queue specified by qId has been configured.
  • It does not check that the queue has the number of full entries that have been specified to be read. It will read until it finds a NULL entry or until the number of specified entries have been read. It always checks for underflow after all the reads have been performed. Therefore, the client should ensure before calling this function that there are enough entries in the queue to read. ixQMgrQNumEntriesGet() will provide the number of full entries in a queue. ixQMgrQRead() or ixQMgrQReadWithChecks(), which only reads a single queue entry per call, should be used instead if the user requires checks for UNDERFLOW after each entry read.
Parameters:
IxQMgrQId(in) qId - the queue identifier.
unsigned(in) numEntries - the number of entries to read. This number should be greater than 0
UINT32(out) *entries - the word(s) read.
Returns:
  • IX_SUCCESS, entries were successfully read.

  • IX_QMGR_Q_UNDERFLOW, attempt to read from an empty queue

Definition at line 1219 of file IxQMgr.h.

References IX_QMGR_MIN_QUEUPP_QID, IX_QMGR_Q_ENTRY_SIZE1, IX_QMGR_Q_UNDERFLOW, IX_SUCCESS, IxQMgrQEntrySizeInWords, IxQMgrQInlinedReadWriteInfo::qAccRegAddr, IxQMgrQInlinedReadWriteInfo::qEntrySizeInWords, IxQMgrQInlinedReadWriteInfo::qReadCount, IxQMgrQInlinedReadWriteInfo::qUflowStatBitMask, and IxQMgrQInlinedReadWriteInfo::qUOStatRegAddr.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQBurstWrite IxQMgrQId  qId,
unsigned  numEntries,
UINT32 *  entries
 

Write a number of entries to an AQM queue.

This function will burst write a number of entries to the specified queue. The entry size of queue is auto-detected. The function will attempt to write as many entries as specified by the numEntries parameter and will return an OVERFLOW if any one of the individual entry writes fail.

Warning:
IX_QMGR_Q_OVERFLOW is only returned for queues 0-31 as queues 32-63 do not have an overflow status maintained, hence there is a potential for silent failure here. This function must be used with caution.
Note:
This function is intended for fast population of queues, so to make it as efficient as possible, it has the following features:
  • This function is inlined, to reduce unnecessary function call overhead.
  • It does not perform any parameter checks, or update any statistics.
  • It does not check that the queue specified by qId has been configured.
  • It does not check that the queue has enough free space to hold the entries before writing, and only checks for overflow after all writes have been performed. Therefore, the client should ensure before calling this function that there is enough free space in the queue to hold the number of entries to be written. ixQMgrQWrite() or ixQMgrQWriteWithChecks(), which only writes a single queue entry per call, should be used instead if the user requires checks for OVERFLOW after each entry written.
Parameters:
IxQMgrQId(in) qId - the queue identifier.
unsigned(in) numEntries - the number of entries to write.
UINT32(in) *entries - the word(s) to write.
Returns:
  • IX_SUCCESS, value was successfully written.

  • IX_QMGR_Q_OVERFLOW, attempt to write to a full queue

Definition at line 1561 of file IxQMgr.h.

References IX_QMGR_MIN_QUEUPP_QID, IX_QMGR_Q_ENTRY_SIZE1, IX_QMGR_Q_OVERFLOW, IX_SUCCESS, IxQMgrQEntrySizeInWords, IxQMgrQInlinedReadWriteInfo::qAccRegAddr, IxQMgrQInlinedReadWriteInfo::qEntrySizeInWords, IxQMgrQInlinedReadWriteInfo::qOflowStatBitMask, IxQMgrQInlinedReadWriteInfo::qSizeInEntries, IxQMgrQInlinedReadWriteInfo::qUOStatRegAddr, and IxQMgrQInlinedReadWriteInfo::qWriteCount.

ixQMgrQConfig char *  qName,
IxQMgrQId  qId,
IxQMgrQSizeInWords  qSizeInWords,
IxQMgrQEntrySizeInWords  qEntrySizeInWords
 

Configure an AQM queue.

This function is called by a client to setup a queue. The size and entrySize qId and qName(NULL pointer) are checked for valid values. This function must be called for each queue, before any queue accesses are made and after ixQMgrInit() has been called. qName is assumed to be a '' terminated array of 16 charachters or less.

Parameters:
char(in) *qName - is the name provided by the client and is associated with a QId by the QMgr.
IxQMgrQId(in) qId - the qId of this queue
IxQMgrQSize(in) qSizeInWords - the size of the queue can be one of 16,32 64, 128 words.
IxQMgrQEntrySizeInWords(in) qEntrySizeInWords - the size of a queue entry can be one of 1,2,4 words.
Returns:
  • IX_SUCCESS, a specified queue has been successfully configured.

  • IX_FAIL, IxQMgr has not been initialised.

  • IX_QMGR_PARAMETER_ERROR, invalid parameter(s).

  • IX_QMGR_INVALID_QSIZE, invalid queue size

  • IX_QMGR_INVALID_Q_ID, invalid queue id

  • IX_QMGR_INVALID_Q_ENTRY_SIZE, invalid queue entry size

  • IX_QMGR_Q_ALREADY_CONFIGURED, queue already configured

ixQMgrQNumEntriesGet IxQMgrQId  qId,
unsigned *  numEntries
 

Get a snapshot of the number of entries in a queue.

This function gets the number of entries in a queue.

Parameters:
IxQMgrQId(in) qId - the queue idenfifier
unsigned(out) *numEntries - the number of entries in a queue
Returns:
  • IX_SUCCESS, got the number of entries for the queue

  • IX_QMGR_PARAMETER_ERROR, invalid paramter(s).

  • IX_QMGR_Q_NOT_CONFIGURED, the specified qId has not been configured

  • IX_QMGR_WARNING, could not determine num entries at this time

ixQMgrQPeek IxQMgrQId  qId,
unsigned int  entryIndex,
UINT32 *  entry
 

Read an entry from a queue without moving the read pointer.

This function inspects an entry in a queue. The entry is inspected directly in AQM SRAM and is not read from queue access registers. The entry is NOT removed from the queue and the read/write pointers are unchanged. N.B: The queue should not be accessed when this function is called.

Parameters:
IxQMgrQId(in) qId - the queue identifier.
unsigned int(in) entryIndex - index of entry in queue in the range [0].......[current number of entries in queue].
UINT32(out) *entry - pointer to the entry word(s).
Returns:
  • IX_SUCCESS, entry was successfully inspected.

  • IX_QMGR_PARAMETER_ERROR, invalid paramter(s).

  • IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId.

  • IX_QMGR_ENTRY_INDEX_OUT_OF_BOUNDS, an entry does not exist at specified index.

  • IX_FAIL, failed to inpected the queue entry.

ixQMgrQPoke IxQMgrQId  qId,
unsigned int  entryIndex,
UINT32 *  entry
 

Write an entry to a queue without moving the write pointer.

This function modifies an entry in a queue. The entry is modified directly in AQM SRAM and not using the queue access registers. The entry is NOT added to the queue and the read/write pointers are unchanged. N.B: The queue should not be accessed when this function is called.

Parameters:
IxQMgrQId(in) qId - the queue identifier.
unsigned int(in) entryIndex - index of entry in queue in the range [0].......[current number of entries in queue].
UINT32(in) *entry - pointer to the entry word(s).
Returns:
  • IX_SUCCESS, entry was successfully modified.

  • IX_QMGR_PARAMETER_ERROR, invalid paramter(s).

  • IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId.

  • IX_QMGR_ENTRY_INDEX_OUT_OF_BOUNDS, an entry does not exist at specified index.

  • IX_FAIL, failed to modify the queue entry.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQRead IxQMgrQId  qId,
UINT32 *  entryPtr
 

Fast read of an entry from a queue.

This function is a heavily streamlined version of ixQMgrQReadWithChecks(), but performs essentially the same task. It reads an entire entry from a queue, returning it in entry which must be a pointer to a previously allocated array of sufficient size to hold an entry.

Note:
- This function is inlined, to reduce unnecessary function call overhead. It does not perform any parameter checks, or update any statistics. Also, it does not check that the queue specified by qId has been configured. or is in range. It simply reads an entry from the queue, and checks for underflow.

- IX_QMGR_Q_UNDERFLOW is only returned for queues 0-31 as queues 32-63 do not have an underflow status maintained.

Parameters:
IxQMgrQId(in) qId - the queue identifier.
UINT32(out) *entry - pointer to the entry word(s).
Returns:
  • IX_SUCCESS, entry was successfully read.

  • IX_QMGR_Q_UNDERFLOW, attempt to read from an empty queue

Definition at line 1068 of file IxQMgr.h.

References IX_QMGR_MIN_QUEUPP_QID, IX_QMGR_Q_ENTRY_SIZE1, IX_QMGR_Q_UNDERFLOW, IX_SUCCESS, ixQMgrQReadMWordsMinus1(), IxQMgrQInlinedReadWriteInfo::qAccRegAddr, IxQMgrQInlinedReadWriteInfo::qConfigRegAddr, IxQMgrQInlinedReadWriteInfo::qEntrySizeInWords, IxQMgrQInlinedReadWriteInfo::qReadCount, IxQMgrQInlinedReadWriteInfo::qSizeInEntries, IxQMgrQInlinedReadWriteInfo::qUflowStatBitMask, and IxQMgrQInlinedReadWriteInfo::qUOStatRegAddr.

IX_STATUS ixQMgrQReadMWordsMinus1 IxQMgrQId  qId,
UINT32 *  entry
 

This function reads the remaining of the q entry for queues configured with many words. (the first word of the entry is already read in the inlined function and the entry pointer already incremented.

Parameters:
IxQMgrQId(in) qId - the queue identifier.
UINT32(out) *entry - pointer to the entry word(s).
Returns:
  • IX_SUCCESS, entry was successfully read.

  • IX_QMGR_Q_UNDERFLOW, attempt to read from an empty queue

Referenced by ixQMgrQRead().

ixQMgrQReadWithChecks IxQMgrQId  qId,
UINT32 *  entry
 

Read an entry from a queue.

This function reads an entire entry from a queue returning it in entry. The queue configuration word is read to determine what entry size this queue is configured for and then the number of words specified by the entry size is read. entry must be a pointer to a previously allocated array of sufficient size to hold an entry.

Note:
- IX_QMGR_Q_UNDERFLOW is only returned for queues 0-31 as queues 32-63 do not have an underflow status maintained.
Parameters:
IxQMgrQId(in) qId - the queue identifier.
UINT32(out) *entry - pointer to the entry word(s).
Returns:
  • IX_SUCCESS, entry was successfully read.

  • IX_QMGR_PARAMETER_ERROR, invalid paramter(s).

  • IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId

  • IX_QMGR_Q_UNDERFLOW, attempt to read from an empty queue

ixQMgrQShow IxQMgrQId  qId  ) 
 

Display aqueue configuration and statistics for a queue.

This function shows queue configuration and statistics for a queue.

Parameters:
IxQMgrQId (in)qId - the queue identifier.
Returns:
  • IX_SUCCESS, success

  • IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId

ixQMgrQSizeInEntriesGet IxQMgrQId  qId,
unsigned *  qSizeInEntries
 

Return the size of a queue in entries.

This function returns the the size of the queue in entriese.

Parameters:
IxQMgrQId(in) qId - the queue identifier
IxQMgrQSize(out) *qSizeInEntries - queue size in entries
Returns:
  • IX_SUCCESS, successfully retrieved the number of full entrie

  • IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId

  • IX_QMGR_PARAMETER_ERROR, invalid parameter(s).

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQStatusGet IxQMgrQId  qId,
IxQMgrQStatus qStatus
 

Fast get of a queue's status.

This function is a streamlined version of ixQMgrQStatusGetWithChecks(), but performs essentially the same task. It reads the specified queue's status. A queues status is defined by its status flags. For queues 0-31 these flags are E,NE,NF,F. For queues 32-63 these flags are NE and F.

Note:
- This function is inlined, to reduce unnecessary function call overhead. It does not perform any parameter checks, or update any statistics. Also, it does not check that the queue specified by qId has been configured. It simply reads the specified queue's status.
Parameters:
IxQMgrQId(in) qId - the queue identifier.
IxQMgrQStatus(out) *qStatus - the status of the specified queue.
Returns:
  • void.

Definition at line 1756 of file IxQMgr.h.

References IX_QMGR_MIN_QUEUPP_QID, and IX_SUCCESS.

ixQMgrQStatusGetWithChecks IxQMgrQId  qId,
IxQMgrQStatus qStatus
 

Get a queues status.

This function reads the specified queues status. A queues status is defined by its status flags. For queues 0-31 these flags are E,NE,NF,F. For queues 32-63 these flags are NE and F.

Parameters:
IxQMgrQId(in) qId - the queue identifier.
IxQMgrQStatus(out) *qStatus - the status of the specified queue.
Returns:
  • IX_SUCCESS, queue status was successfully read.

  • IX_QMGR_Q_NOT_CONFIGURED, the specified qId has not been configured

  • IX_QMGR_PARAMETER_ERROR, invalid paramter.

IX_QMGR_INLINE PUBLIC IX_STATUS ixQMgrQWrite IxQMgrQId  qId,
UINT32 *  entry
 

Fast write of an entry to a queue.

This function is a heavily streamlined version of ixQMgrQWriteWithChecks(), but performs essentially the same task. It will write the entry size number of words pointed to by entry to the queue specified by qId.

Note:
- This function is inlined, to reduce unnecessary function call overhead. It does not perform any parameter checks, or update any statistics. Also, it does not check that the queue specified by qId has been configured. It simply writes an entry to the queue, and checks for overflow.

- IX_QMGR_Q_OVERFLOW is only returned for queues 0-31 as queues 32-63 do not have an overflow status maintained.

Parameters:
IxQMgrQId(in) qId - the queue identifier.
UINT32(in) *entry - pointer to the entry word(s).
Returns:
  • IX_SUCCESS, entry was successfully read.

  • IX_QMGR_Q_OVERFLOW, attempt to write to a full queue

Definition at line 1414 of file IxQMgr.h.

References IX_QMGR_MIN_QUEUPP_QID, IX_QMGR_Q_ENTRY_SIZE1, IX_QMGR_Q_OVERFLOW, IX_SUCCESS, IxQMgrQInlinedReadWriteInfo::qAccRegAddr, IxQMgrQInlinedReadWriteInfo::qConfigRegAddr, IxQMgrQInlinedReadWriteInfo::qEntrySizeInWords, IxQMgrQInlinedReadWriteInfo::qOflowStatBitMask, IxQMgrQInlinedReadWriteInfo::qSizeInEntries, IxQMgrQInlinedReadWriteInfo::qUOStatRegAddr, and IxQMgrQInlinedReadWriteInfo::qWriteCount.

ixQMgrQWriteWithChecks IxQMgrQId  qId,
UINT32 *  entry
 

Write an entry to an AQM queue.

This function will write the entry size number of words pointed to by entry to the queue specified by qId. The queue configuration word is read to determine the entry size of queue and the corresponding number of words is then written to the queue.

Note:
- IX_QMGR_Q_OVERFLOW is only returned for queues 0-31 as queues 32-63 do not have an overflow status maintained.
Parameters:
IxQMgrQId(in) qId - the queue identifier.
UINT32(in) *entry - the word(s) to write.
Returns:
  • IX_SUCCESS, value was successfully written.

  • IX_QMGR_PARAMETER_ERROR, invalid paramter(s).

  • IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId

  • IX_QMGR_Q_OVERFLOW, attempt to write to a full queue

ixQMgrShow void   ) 
 

Describe queue configuration and statistics for active queues.

This function shows active queues, their configurations and statistics.

Returns:
  • void

ixQMgrStickyInterruptRegEnable void   ) 
 

Enable AQM's sticky interrupt register behaviour only available on B0 Silicon.

When AQM's sticky interrupt register is enabled, interrupt register bit will only be cleared when a '1' is written to interrupt register bit and the interrupting condition is satisfied, i.e.queue condition does not exist.

Note:
This function must be called before any queue is enabled. Calling this function after queue is enabled will cause undefined results.
Returns:
none

ixQMgrUnload void   ) 
 

Uninitialise the QMgr.

This function will perform the tasks required to unload the QMgr component cleanly. This includes unmapping kernel memory. This should be called before a soft reboot or unloading of a kernel module.

Precondition:
It should only be called if ixQMgrInit has already been called.
Postcondition:
No QMgr functions should be called until ixQMgrInit is called again.
Returns:
  • IX_SUCCESS, the IxQMgr successfully uninitialised

  • IX_FAIL, failed to uninitialize the Qmgr

ixQMgrWatermarkSet IxQMgrQId  qId,
IxQMgrWMLevel  ne,
IxQMgrWMLevel  nf
 

Set the Nearly Empty and Nearly Full Watermarks fo a queue.

This function is called by a client to set the watermarks NE and NF for the queue specified by qId. The queue must be empty at the time this function is called, it is the clients responsibility to ensure that the queue is empty. This function will read the status of the queue before the watermarks are set and again after the watermarks are set. If the status register has changed, due to a queue access by an NPE for example, a warning is returned. Queues 32-63 only support the NE flag, therefore the value of nf will be ignored for these queues.

Parameters:
IxQMgrQId(in) qId - the QId of the queue.
IxQMgrWMLevel(in) ne - the NE(Nearly Empty) watermark for this queue. Valid values are 0,1,2,4,8,16,32 and 64 entries.
IxQMgrWMLevel(in) nf - the NF(Nearly Full) watermark for this queue. Valid values are 0,1,2,4,8,16,32 and 64 entries.
Returns:
  • IX_SUCCESS, watermarks have been set for the queu

  • IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId

  • IX_QMGR_INVALID_Q_WM, invalid watermark

  • IX_QMGR_WARNING, the status register may not be constistent

Automatically generated from sources. © Intel Corp. 2003