Home | History | Annotate | Download | only in Tx_HW_Queue
      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