| /* |
| * txDataQueue.h |
| * |
| * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * 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. |
| * * Neither the name Texas Instruments nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * 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. |
| */ |
| |
| |
| /***************************************************************************/ |
| /* */ |
| /* MODULE: TxDataQueue.h */ |
| /* PURPOSE: Tx Data Queue module Header file */ |
| /* */ |
| /***************************************************************************/ |
| #ifndef _TX_DATA_QUEUE_H_ |
| #define _TX_DATA_QUEUE_H_ |
| |
| |
| #include "TWDriver.h" |
| #include "DataCtrl_Api.h" |
| |
| |
| #define TX_SEND_PACE_TIMEOUT_MSEC 1 |
| |
| /* Max number of packets in each queue */ |
| #define DATA_QUEUE_DEPTH_BE 60 |
| #define DATA_QUEUE_DEPTH_BK 10 |
| #define DATA_QUEUE_DEPTH_VI 32 |
| #define DATA_QUEUE_DEPTH_VO 10 |
| #define DATA_QUEUE_DEPTH_TOTAL (DATA_QUEUE_DEPTH_BE + DATA_QUEUE_DEPTH_BK + DATA_QUEUE_DEPTH_VI + DATA_QUEUE_DEPTH_VO) |
| |
| /* Verify that there are enough TxCtrlBlks for all users that are queueing packets (driver + FW) */ |
| #if ((DATA_QUEUE_DEPTH_TOTAL + (MGMT_QUEUES_DEPTH * 2) + NUM_TX_DESCRIPTORS) > (CTRL_BLK_ENTRIES_NUM - 2)) |
| #error Not enough TxCtrlBlks for all users !! |
| #endif |
| |
| /* Tx packets handling statistics */ |
| typedef struct |
| { |
| TI_UINT32 uEnqueuePacket; |
| TI_UINT32 uDequeuePacket; |
| TI_UINT32 uRequeuePacket; |
| TI_UINT32 uXmittedPacket; |
| TI_UINT32 uDroppedPacket; |
| } TTxDataQueueDebugCnt; |
| |
| /* The module's object */ |
| typedef struct |
| { |
| TI_HANDLE hContext; |
| TI_HANDLE hTxCtrl; |
| TI_HANDLE hOs; |
| TI_HANDLE hReport; |
| TI_HANDLE hTxMgmtQ; |
| TI_HANDLE hTWD; |
| |
| TClsfrParams tClsfrParams; /* The classifier sub-module parameters */ |
| |
| TI_BOOL bDataPortEnable; /* Data port open or not */ |
| TI_UINT32 uContextId; /* ID allocated to this module on registration to context module */ |
| TI_HANDLE hTxSendPaceTimer; /* If queued packets number doesn't reach threshold within timeout, Tx handling is started */ |
| |
| /* Tx aQueues */ |
| TI_UINT32 uNumQueues; /* Indicates the number of allocated aQueues */ |
| TI_UINT32 aQueueMaxSize[MAX_NUM_OF_AC]; /* indicates the max size of each Data queue */ |
| TI_UINT32 aTxSendPaceThresh[MAX_NUM_OF_AC]; /* Number of packets to queue before scheduling Tx handling */ |
| TI_HANDLE aQueues[MAX_NUM_OF_AC]; /* The Tx aQueues handles */ |
| TI_BOOL aQueueBusy[MAX_NUM_OF_AC]; /* per queue busy indication */ |
| TI_UINT32 uLastQueId; /* the last queue processed by the scheduler */ |
| TI_BOOL aNetStackQueueStopped[MAX_NUM_OF_AC];/*indicate if the current queue was full and caused Tx network stack stop*/ |
| TI_BOOL bStopNetStackTx;/*Flag to enable/disable Tx stop*/ |
| |
| /* Counters */ |
| TTxDataQueueDebugCnt aQueueCounters[MAX_NUM_OF_AC]; /* Save Tx statistics per Tx-queue. */ |
| TI_UINT32 uClsfrMismatchCount; |
| TI_UINT32 uTxSendPaceTimeoutsCount; |
| |
| } TTxDataQ; |
| |
| |
| /* TIDs Mapping to Queues */ |
| static const TI_UINT32 aTidToQueueTable[MAX_NUM_OF_802_1d_TAGS] = {0, 1, 1, 0, 2, 2, 3, 3}; |
| |
| |
| #endif /* _TX_DATA_QUEUE_H_ */ |