⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ixethacc_p.h

📁 AMCC POWERPC 44X系列的U-BOOT文件
💻 H
字号:
/** * @file IxEthAcc_p.h * * @author Intel Corporation * @date 12-Feb-2002 * * @brief  Internal Header file for IXP425 Ethernet Access component. * * Design Notes: * *  * @par * IXP400 SW Release version 2.0 *  * -- Copyright Notice -- *  * @par * Copyright 2001-2005, Intel Corporation. * All rights reserved. *  * @par * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the Intel Corporation nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. *  * @par * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *  * @par * -- End of Copyright Notice -- *//** * @addtogroup IxEthAccPri *@{ */#ifndef IxEthAcc_p_H#define IxEthAcc_p_H/* * Os/System dependancies. */#include "IxOsal.h"/* * Intermodule dependancies */#include "IxNpeDl.h"#include "IxQMgr.h"#include "IxEthNpe.h"/*  * Intra module dependancies */#include "IxEthAccDataPlane_p.h"#include "IxEthAccMac_p.h"#define INLINE __inline__#ifdef NDEBUG#define IX_ETH_ACC_PRIVATE static#else#define IX_ETH_ACC_PRIVATE#endif /* ndef NDEBUG */#define IX_ETH_ACC_PUBLIC#define IX_ETH_ACC_IS_PORT_VALID(port) ((port) <  IX_ETH_ACC_NUMBER_OF_PORTS  ? TRUE : FALSE )#ifndef NDEBUG#define IX_ETH_ACC_FATAL_LOG(a,b,c,d,e,f,g)   { ixOsalLog ( IX_OSAL_LOG_LVL_FATAL,IX_OSAL_LOG_DEV_STDOUT,a,b,c,d,e,f,g);}#define IX_ETH_ACC_WARNING_LOG(a,b,c,d,e,f,g) { ixOsalLog ( IX_OSAL_LOG_LVL_WARNING,IX_OSAL_LOG_DEV_STDOUT,a,b,c,d,e,f,g);}#define IX_ETH_ACC_DEBUG_LOG(a,b,c,d,e,f,g)   { ixOsalLog ( IX_OSAL_LOG_LVL_FATAL,IX_OSAL_LOG_DEV_STDOUT,a,b,c,d,e,f,g);}#else#define IX_ETH_ACC_FATAL_LOG(a,b,c,d,e,f,g)   { ixOsalLog ( IX_OSAL_LOG_LVL_FATAL,IX_OSAL_LOG_DEV_STDOUT,a,b,c,d,e,f,g);}#define IX_ETH_ACC_WARNING_LOG(a,b,c,d,e,f,g) { ixOsalLog ( IX_OSAL_LOG_LVL_WARNING,IX_OSAL_LOG_DEV_STDOUT,a,b,c,d,e,f,g);}#define IX_ETH_ACC_DEBUG_LOG(a,b,c,d,e,f,g)   {}#endifIX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccInitDataPlane(void);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccQMgrQueuesConfig(void);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccQMgrRxCallbacksRegister(IxQMgrCallback ixQMgrCallback);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccSingleEthNpeCheck(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC void ixEthAccQMgrRxQEntryGet(UINT32 *numRxQueueEntries);/* prototypes for the private control plane functions (used by the control interface wrapper) */IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortEnablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortDisablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortEnabledQueryPriv(IxEthAccPortId portId, BOOL *enabled);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortPromiscuousModeClearPriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortPromiscuousModeSetPriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortUnicastMacAddressSetPriv(IxEthAccPortId portId, IxEthAccMacAddr *macAddr);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortUnicastMacAddressGetPriv(IxEthAccPortId portId, IxEthAccMacAddr *macAddr);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortMulticastAddressJoinPriv(IxEthAccPortId portId, IxEthAccMacAddr *macAddr);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortMulticastAddressJoinAllPriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortMulticastAddressLeavePriv(IxEthAccPortId portId, IxEthAccMacAddr *macAddr);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortMulticastAddressLeaveAllPriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortUnicastAddressShowPriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC void ixEthAccPortMulticastAddressShowPriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortDuplexModeSetPriv(IxEthAccPortId portId, IxEthAccDuplexMode mode);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortDuplexModeGetPriv(IxEthAccPortId portId, IxEthAccDuplexMode *mode);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortTxFrameAppendPaddingEnablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortTxFrameAppendPaddingDisablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortTxFrameAppendFCSEnablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortTxFrameAppendFCSDisablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortRxFrameAppendFCSEnablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccPortRxFrameAppendFCSDisablePriv(IxEthAccPortId portId);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccTxSchedulingDisciplineSetPriv(IxEthAccPortId portId, IxEthAccSchedulerDiscipline sched);IX_ETH_ACC_PUBLIC IxEthAccStatus ixEthAccRxSchedulingDisciplineSetPriv(IxEthAccSchedulerDiscipline sched);/** * @struct  ixEthAccRxDataStats * @brief   Stats data structures for data path. - Not obtained from h/w * */typedef struct{     UINT32 rxFrameClientCallback;    UINT32 rxFreeRepOK;    UINT32 rxFreeRepDelayed;    UINT32 rxFreeRepFromSwQOK;    UINT32 rxFreeRepFromSwQDelayed;    UINT32 rxFreeLateNotificationEnabled;    UINT32 rxFreeLowCallback;    UINT32 rxFreeOverflow;    UINT32 rxFreeLock;    UINT32 rxDuringDisable;    UINT32 rxSwQDuringDisable;    UINT32 rxUnlearnedMacAddress;    UINT32 rxPriority[IX_ETH_ACC_TX_PRIORITY_7 + 1];    UINT32 rxUnexpectedError;    UINT32 rxFiltered;} IxEthAccRxDataStats;/** * @struct  IxEthAccTxDataStats * @brief   Stats data structures for data path. - Not obtained from h/w * */typedef struct{       UINT32 txQOK;    UINT32 txQDelayed;    UINT32 txFromSwQOK;    UINT32 txFromSwQDelayed;    UINT32 txLowThreshCallback;    UINT32 txDoneClientCallback;    UINT32 txDoneClientCallbackDisable;    UINT32 txOverflow;    UINT32 txLock;    UINT32 txPriority[IX_ETH_ACC_TX_PRIORITY_7 + 1];    UINT32 txLateNotificationEnabled;    UINT32 txDoneDuringDisable;    UINT32 txDoneSwQDuringDisable;    UINT32 txUnexpectedError;} IxEthAccTxDataStats;/* port Disable state machine : list of states */typedef enum{    /* general port states */    DISABLED = 0,    ACTIVE,    /* particular Tx/Rx states */    REPLENISH,    RECEIVE,    TRANSMIT,    TRANSMIT_DONE} IxEthAccPortDisableState;typedef struct{    BOOL fullDuplex;    BOOL rxFCSAppend;    BOOL txFCSAppend;    BOOL txPADAppend;    BOOL enabled;    BOOL promiscuous;    BOOL joinAll;    IxOsalMutex ackMIBStatsLock;    IxOsalMutex ackMIBStatsResetLock;    IxOsalMutex MIBStatsGetAccessLock;    IxOsalMutex MIBStatsGetResetAccessLock;    IxOsalMutex npeLoopbackMessageLock;    IxEthAccMacAddr mcastAddrsTable[IX_ETH_ACC_MAX_MULTICAST_ADDRESSES];    UINT32 mcastAddrIndex;    IX_OSAL_MBUF *portDisableTxMbufPtr;    IX_OSAL_MBUF *portDisableRxMbufPtr;    volatile IxEthAccPortDisableState portDisableState;    volatile IxEthAccPortDisableState rxState;    volatile IxEthAccPortDisableState txState;    BOOL initDone;    BOOL macInitialised;} IxEthAccMacState;/** * @struct  IxEthAccRxInfo * @brief   System-wide data structures associated with the data plane. * */typedef struct{  IxQMgrQId higherPriorityQueue[IX_QMGR_MAX_NUM_QUEUES]; /**< higher priority queue list */  IxEthAccSchedulerDiscipline schDiscipline; /**< Receive Xscale QoS type */} IxEthAccInfo; /** * @struct  IxEthAccRxDataInfo * @brief   Per Port data structures associated with the receive data plane. * */typedef struct{  IxQMgrQId rxFreeQueue; /**< rxFree Queue for this port */  IxEthAccPortRxCallback rxCallbackFn;  UINT32  rxCallbackTag;  IxEthAccDataPlaneQList freeBufferList;  IxEthAccPortMultiBufferRxCallback rxMultiBufferCallbackFn;  UINT32  rxMultiBufferCallbackTag;  BOOL rxMultiBufferCallbackInUse;  IxEthAccRxDataStats stats; /**< Receive s/w stats */} IxEthAccRxDataInfo; /** * @struct  IxEthAccTxDataInfo * @brief   Per Port data structures associated with the transmit data plane. * */typedef struct{  IxEthAccPortTxDoneCallback  txBufferDoneCallbackFn;  UINT32  txCallbackTag;  IxEthAccDataPlaneQList 	txQ[IX_ETH_ACC_NUM_TX_PRIORITIES]; /**< Transmit Q */  IxEthAccSchedulerDiscipline schDiscipline; /**< Transmit Xscale QoS */  IxQMgrQId txQueue; /**< txQueue for this port */  IxEthAccTxDataStats stats; /**< Transmit s/w stats */} IxEthAccTxDataInfo; /** * @struct  IxEthAccPortDataInfo * @brief   Per Port data structures associated with the port data plane. * */typedef struct{    BOOL               portInitialized;    UINT32 npeId; /**< NpeId for this port */    IxEthAccTxDataInfo ixEthAccTxData; /**< Transmit data control structures */    IxEthAccRxDataInfo ixEthAccRxData; /**< Recieve data control structures */} IxEthAccPortDataInfo; extern IxEthAccPortDataInfo  ixEthAccPortData[];#define IX_ETH_IS_PORT_INITIALIZED(port) (ixEthAccPortData[port].portInitialized)extern BOOL ixEthAccServiceInit;#define IX_ETH_ACC_IS_SERVICE_INITIALIZED() (ixEthAccServiceInit == TRUE )/*  * Maximum number of frames to consume from the Rx Frame Q. */#define IX_ETH_ACC_MAX_RX_FRAME_CONSUME_PER_CALLBACK (128)/* * Max number of times to load the Rx Free Q from callback.   */#define IX_ETH_ACC_MAX_RX_FREE_BUFFERS_LOAD (256)  /* Set greater than depth of h/w Q + drain time at line rate *//* *  Max number of times to read from the Tx Done Q in one sitting. */#define IX_ETH_ACC_MAX_TX_FRAME_DONE_CONSUME_PER_CALLBACK (256)/* *  Max number of times to take buffers from S/w queues and write them to the H/w Tx *  queues on receipt of a Tx low threshold callback  */#define IX_ETH_ACC_MAX_TX_FRAME_TX_CONSUME_PER_CALLBACK (16)#define IX_ETH_ACC_FLUSH_CACHE(addr,size)  IX_OSAL_CACHE_FLUSH((addr),(size))#define IX_ETH_ACC_INVALIDATE_CACHE(addr,size)  IX_OSAL_CACHE_INVALIDATE((addr),(size))#define IX_ETH_ACC_MEMSET(start,value,size) memset(start,value,size)#endif /* ndef IxEthAcc_p_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -