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

📄 ixatmdtxtransport_p.h

📁 有关ARM开发板上的IXP400网络驱动程序的源码以。
💻 H
📖 第 1 页 / 共 2 页
字号:
/*** @def IX_ATMDACC_TXQ_MID_DECR* @brief Rollback a PDU submit from a software TX Queue** @note - This action is done during a TxPduSubmit rollback*/#define IX_ATMDACC_TXQ_MID_DECR(queue) \    IX_ATMDACC_SWQ_MID_DECR(queue)/*** @def IX_ATMDACC_TXQ_OVERLOADED* @brief Check if a software TX Queue is overloaded*/#define IX_ATMDACC_TXQ_OVERLOADED(queue) \        ((queue)->head == (queue)->mid)/*** @def IX_ATMDACC_TXQ_SCHEDULE_PENDING* @brief Check if elements are waiting for scheduling in a software TX Queue*/#define IX_ATMDACC_TXQ_SCHEDULE_PENDING(queue) \        ((queue)->tail != (queue)->mid)/*** @def IX_ATMDACC_TXQ_RECYCLE_PENDING* @brief Check in a software TX Queue if descriptors are still used by the Npe or waiting in the txDone queue*/#define IX_ATMDACC_TXQ_RECYCLE_PENDING(queue) \        (((queue)->head - (queue)->tail) != (queue)->size)/*** @def IX_ATMDACC_TXQ_TAIL_ENTRY_GET* @brief Get a @a IxAtmdAccNpeDescriptor at the tail of a software TX Queue*/#define IX_ATMDACC_TXQ_TAIL_ENTRY_GET(queue) \    IX_ATMDACC_SWQ_TAIL_ENTRY_GET(queue)/*** @def IX_ATMDACC_TXQ_HEAD_ENTRY_GET* @brief Get a @a IxAtmdAccNpeDescriptor at the head of a software TX Queue*/#define IX_ATMDACC_TXQ_HEAD_ENTRY_GET(queue) \    IX_ATMDACC_SWQ_HEAD_ENTRY_GET(queue)/*** @def IX_ATMDACC_TXQ_MID_ENTRY_GET* @brief Get a @a IxAtmdAccNpeDescriptor inside a software TX Queue*/#define IX_ATMDACC_TXQ_MID_ENTRY_GET(queue) \    IX_ATMDACC_SWQ_MID_ENTRY_GET(queue)/*** @def IX_ATMDACC_TX_SCHEDULE_TABLE_SIZE* @brief schedule table size used to build the entries needed* to fill the tx vc queue over the threshold level. This is set* to the maximum queue size.*/#define IX_ATMDACC_TX_SCHEDULE_TABLE_SIZE  (IX_QMGR_Q_SIZE_INVALID - 1)/**** @brief IxAtmdAcc Tx channel information** The information in this structure is used on a per-channel basis.** This structure contains* @li The channel characteristics (port/vpi/vci ..)* @li The user callback functions and Id to be used when a mbuf is transmitted* @li An internal software queue to store incoming Pdus, process TX schedule and TX done recycling* @li The current information about the pdu being transmitted**/typedef struct{    IxAtmConnId connId;                         /**< channel Connection Id */    IxAtmLogicalPort port;                      /**< channel port */    unsigned int vpi;                           /**< channel vpi */    unsigned int vci;                           /**< channel vci */    IxNpeA_AalType npeAalType;                  /**< the npe service type for this connection */    unsigned int cellSize;                      /**< the cell size 48/52 for this connection */    IxAtmSchedulerVcId schedulerVcId;           /**< scheduler Id for this channel */    IxQMgrCallbackId callbackId;                /**< userId passed in a callback */    IxAtmdAccTxVcBufferReturnCallback txDoneCallback; /**< user callback */    IxAtmdAccNpeDescriptor *currentNpeDesc;     /**< current entry being scheduled */    unsigned int remainingPduCellCount;         /**< counter of remaining cells for this PDU */    volatile BOOL pduTransmitInProgress;        /**< This flag is set when                                                            a pdu is being submitted. When                                                            set, it is not safe to                                                            force the data recycling during a                                                            @a ixAtmdAccTxDisconnect() step */    void * swQueueBuffer[IX_NPE_A_CHAIN_DESC_COUNT_MAX]; /**< data space for a sw queue. The maximum                                                         * size of the queue is driven by the number of PDUs                                                         * the NPE can chain */    IX_ATMDACC_TX_QUEUE queue;                  /**< Transmit s/w queue */#ifndef NDEBUG    unsigned int txSubmitOverloadedCount;       /**< Counter of overloaded conditions */    unsigned int txVcPduSubmitFailureCount;     /**< failures during txvcPduSubmit */#endif} IxAtmdAccTxVcDescriptor;/*** @enum IxAtmdAccPortStatus* @brief Logical Port status*/typedef enum{    IX_ATMDACC_PORT_DOWN = 0,    IX_ATMDACC_PORT_UP,    IX_ATMDACC_PORT_DOWN_PENDING} IxAtmdAccPortStatus;/**** @brief AtmdAcc port information** The information in this structure is used on a per-port basis.** This structure contains* @li The user callback functions and Id to be used during an event notification* @li The current information about the queue setup* @li Flags to avoid reentrancy in Critical code**/typedef struct{    IxAtmdAccPortTxLowCallback txLowCallback; /**< User callback                                     * invoked when the queue level is going                                     * low                                     */    IxQMgrQId txQueueId;             /**< Tx queue associated                                     *     with this port                                     */    unsigned int txQueueSize;        /**< Tx queue size                                     */    unsigned int txQueueThreshold;   /**< Tx queue threshold (0 if not used)                                     */    IxAtmScheduleTableEntry scheduleTable[IX_ATMDACC_TX_SCHEDULE_TABLE_SIZE]; /**<                                      * schedule table used to build the last entries                                     * to be filled up to the threshold level                                     */    IxAtmdAccPortStatus status;     /**< Logical port status (down or up)                                     */    IxAtmdAccTxVcDemandUpdateCallback schDemandUpdate; /**< Atm Scheduling entity                                     * associated with this port                                     */    IxAtmdAccTxVcDemandClearCallback schDemandClear;   /**< Atm Scheduling entity                                     * associated with this port                                     */    IxAtmdAccTxSchVcIdGetCallback schVcIdGet;  /**< Atm Scheduling entity                                     * associated with this port                                     */    volatile BOOL schedulingInProgress;  /**< This flag is set when                                     * a schedule table is being processed. When                                     * set, it is not safe to                                     * force the data recycling during a                                     * @a ixAtmdAccTxVcTryDisconnect() step                                     */    UINT32 qMgrEntries[IX_ATMDACC_TX_SCHEDULE_TABLE_SIZE]; /**<                                     * array of entries for qMgr burst write                                      */} IxAtmdAccPortDescriptor;#ifndef NDEBUG/**** @brief AtmdAcc Tx transport stats** The information in this structure is used to log possible* runTime errors.**/typedef struct{    unsigned int txProcessInvokeCount;       /**< schedule table submitted */    unsigned int txProcessFailedCount;       /**< schedule table failure */    unsigned int idleCellScheduledCount;     /**< idle cells scheduled */    unsigned int dataCellScheduledCount;     /**< data cells scheduled */    unsigned int pduScheduledCount;          /**< pdu scheduled */    unsigned int overScheduledCellCount;     /**< Number of overscheduled cells */    unsigned int wrongConnIdScheduledCount;  /**< wrong connId scheduled */    unsigned int disconnectScheduledCount;   /**< scheduled during diconnect */    unsigned int txProcessUnderscheduledCount; /**< underscheduled */    unsigned int zeroCellCount; /**< Number of times 0 cells are scheduled by the                                scheduler */} IxAtmdAccTxTransportStats;/**** @brief AtmdAcc txDone transport stats** The information in this structure is used to log possible* runTime errors.**/typedef struct{    unsigned int invokeCount;        /**< txDone invoke */    unsigned int failedCount;        /**< txDone failures */    unsigned int pduCount;           /**< txDone pdu received */    unsigned int ackCount;           /**< txDone disable ack received */    unsigned int maxPduPerDispatch;  /**< Maximum number of PDus per dispatch */    unsigned int descriptorOrderErrorCount; /**< descriptors out of order from npe */} IxAtmdAccTxDoneDispatchStats;/*** @brief txDone stats informations*/IX_ATMDACC_TX_TRANSPORT_EXTERN IxAtmdAccTxDoneDispatchStats ixAtmdAccTxDoneDispatchStats;/*** @brief tx stats informations*/IX_ATMDACC_TX_TRANSPORT_EXTERN IxAtmdAccTxTransportStats ixAtmdAccTxTransportStats[IX_UTOPIA_MAX_PORTS];#endif /* NDEBUG *//*** @brief pool of port information*/IX_ATMDACC_TX_TRANSPORT_EXTERN IxAtmdAccPortDescriptor ixAtmdAccPortDescriptor[IX_UTOPIA_MAX_PORTS];/*** @brief pool of channel slots*/IX_ATMDACC_TX_TRANSPORT_EXTERN IxAtmdAccTxVcDescriptor ixAtmdAccTxVcDescriptor[IX_ATM_MAX_NUM_AAL_OAM_TX_VCS];/*** @brief user callback to be used when the threshold level of the txdone queue is reached*/IX_ATMDACC_TX_TRANSPORT_EXTERN IxAtmdAccTxDoneDispatcher ixAtmdAccTxDoneDispatcher;/*** @brief buffer used to dump the contents of the tx done queue**  This buffer is done to accomodate the tx done burst read. There is an extra entry*  which is used as a null pointer to mark the end of the data when the full queue* is read.*/IX_ATMDACC_TX_TRANSPORT_EXTERN UINT32 ixAtmdAccTxDoneDispatchBuffer[IX_ATMDACC_TXDONE_QUEUE_SIZE + 1];/*** @brief number of ports configured in the system*/IX_ATMDACC_TX_TRANSPORT_EXTERN IxAtmLogicalPort ixAtmdAccTxNumPortConfigured;#endif /* IX_ATMDACC_TX_TRANSPORT_P_H */

⌨️ 快捷键说明

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