|
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().
|
#define | IX_COMPONENT_NAME |
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 [] |
Some functions contained in this module are inline to achieve better data-path performance. For this to work, the function definitions are contained in this header file. The "normal" use of inline functions is to use the inline functions in the module in which they are defined. In this case these inline functions are used in external modules and therefore the use of "inline extern". What this means is as follows: if a function foo is declared as "inline extern" this definition is only used for inlining, in no case is the function compiled on its own. If the compiler cannot inline the function it becomes an external reference. Therefore in IxQMgrQAccess.c all inline functions are defined without the "inline extern" specifier and so define the external references. In all other source files including this header file, these funtions are defined as "inline extern".