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

IxQMgr.h File Reference

This file contains the public API of IxQMgr component. More...

Go to the source code of this file.

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 []


Detailed Description

This file contains the public API of IxQMgr component.

Date:
30-Oct-2001

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".

Version:
Revision
1.54
-- Intel Copyright Notice --
Copyright 2001-2003 Intel Corporation All Rights Reserved.
The source code contained or described herein and all documents related to the source code ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or its suppliers and licensors.
The Material is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way except in accordance with the applicable license agreement .
No license under any patent, copyright, trade secret or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel, except in accordance with the applicable license agreement.
Unless otherwise agreed by Intel in writing, you may not remove or alter this notice or any other notice embedded in Materials by Intel or Intel's suppliers or licensors in any way.
For further details, please see the file README.TXT distributed with this software.
-- End Intel Copyright Notice --

Definition in file IxQMgr.h.

Automatically generated from sources. © Intel Corp. 2003