Main Page Modules Alphabetical List Data Structures File List Data Fields Globals
IXP425 Queue Manager (IxQMgr) APIThe 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. |
|
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. |
|
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. |
|
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
|
|
#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
|
|
#define IX_QMGR_Q_UNDERFLOW
|
|
#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. |
|
Warning return code.
Execution complete, but there is a special case to handle
Definition at line 209 of file IxQMgr.h. |
#define ixQMgrDispatcherLoopRun
|
|
Typedef Documentation
|
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. |
|
Uniquely identifies a callback function.
A unique callback identifier associated with each callback registered by clients.
Definition at line 687 of file IxQMgr.h. |
|
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. |
|
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
|
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. |
|
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(). |
|
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. |
|
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. |
|
Queue status mask.
Masks for extracting the individual status flags from the IxQMgrStatus word.
Definition at line 536 of file IxQMgr.h. |
|
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. |
|
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.
|
|
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 |
|
|
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:
-
- 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.
|
|
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:
-
- 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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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. |
|
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
|
|
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_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).
|
|
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:
-
Definition at line 1756 of file IxQMgr.h.
References IX_QMGR_MIN_QUEUPP_QID, and IX_SUCCESS. |
|
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
|
|
Describe queue configuration and statistics for active queues.
This function shows active queues, their configurations and statistics.
- Returns:
-
|
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
|
|
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
|
|
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
|
|