1 /**************************************************************************** 2 **+-----------------------------------------------------------------------+** 3 **| |** 4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 5 **| All rights reserved. |** 6 **| |** 7 **| Redistribution and use in source and binary forms, with or without |** 8 **| modification, are permitted provided that the following conditions |** 9 **| are met: |** 10 **| |** 11 **| * Redistributions of source code must retain the above copyright |** 12 **| notice, this list of conditions and the following disclaimer. |** 13 **| * Redistributions in binary form must reproduce the above copyright |** 14 **| notice, this list of conditions and the following disclaimer in |** 15 **| the documentation and/or other materials provided with the |** 16 **| distribution. |** 17 **| * Neither the name Texas Instruments nor the names of its |** 18 **| contributors may be used to endorse or promote products derived |** 19 **| from this software without specific prior written permission. |** 20 **| |** 21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 32 **| |** 33 **+-----------------------------------------------------------------------+** 34 ****************************************************************************/ 35 36 /**************************************************************************** 37 * 38 * MODULE: txHwQueue.h 39 * 40 * PURPOSE: hardware Tx queues management object 41 * 42 ****************************************************************************/ 43 44 #ifndef _TX_HW_QUEUE_H 45 #define _TX_HW_QUEUE_H 46 47 48 #include "whalParams.h" 49 #include "TNETW_Driver_types.h" 50 #include "txHwQueue_api.h" 51 52 53 #define MAX_BLKS_PER_PKT 16 /* Max number of Tx HW blocks that may be required for one packet. */ 54 #define MAX_FRAG_THRESHOLD 4096 55 56 57 /* Per Queue HW blocks accounting data: */ 58 typedef struct 59 { 60 UINT8 numBlocksHighThreshold; /* The maximum HW blocks that can be allocated for this Queue. */ 61 UINT8 numBlocksLowThreshold; /* The minimum HW blocks that must be reserved for this Queue. */ 62 UINT8 numBlocksUsed; /* The number of HW blocks that are currently allocated for this Queue. */ 63 UINT8 numBlocksReserved; /* The number of HW blocks currently reserved for this Queue (to guarentee the low threshold). */ 64 UINT8 lowResourceThresh; /* Above this blocks number we need to request tx-complete from FW. */ 65 UINT8 numDescriptors; /* The number of descriptors in the FW per this Queue. */ 66 UINT8 numPackets; /* The current number of packets in the FW per this Queue. */ 67 }txHwQueueInfo_t; 68 69 typedef struct 70 { 71 TI_HANDLE hOs; 72 TI_HANDLE hReport; 73 WhalParams_T *pWhalParams; 74 75 UINT32 NumBlocks; /* The total number of Tx blocks */ 76 UINT32 NumFree; /* Total number of free HW blocks */ 77 UINT32 TotalBlocksReserved; /* Total number of free but reserved HW blocks */ 78 79 txHwQueueInfo_t TxHwQueueInfo[MAX_NUM_OF_TX_QUEUES]; 80 81 } TxHwQueueObj_t; 82 83 84 /* Queue-Calc public functions: */ 85 extern void txHwQueueCalc_BlocksNum(TI_HANDLE hTxHwQueue, txCtrlBlkEntry_t *pPktCtrlBlk); 86 87 88 89 90 #endif /* _TX_HW_QUEUE_H */ 91