summaryrefslogtreecommitdiff
path: root/wl1271/TWD/Data_Service/txCtrlBlk.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/TWD/Data_Service/txCtrlBlk.c')
-rw-r--r--wl1271/TWD/Data_Service/txCtrlBlk.c291
1 files changed, 0 insertions, 291 deletions
diff --git a/wl1271/TWD/Data_Service/txCtrlBlk.c b/wl1271/TWD/Data_Service/txCtrlBlk.c
deleted file mode 100644
index 41b867b..0000000
--- a/wl1271/TWD/Data_Service/txCtrlBlk.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * txCtrlBlk.c
- *
- * 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: txCtrlBlk.c
- *
- * PURPOSE: Maintains active packets Tx attributes table (including descriptor).
- *
- * DESCRIPTION:
- * ============
- * This module allocates and frees table entry for each packet in the Tx
- * process (from sendPkt by upper driver until Tx-complete).
- *
- ****************************************************************************/
-#define __FILE_ID__ FILE_ID_99
-#include "osApi.h"
-#include "tidef.h"
-#include "report.h"
-#include "context.h"
-#include "TWDriver.h"
-#include "txCtrlBlk_api.h"
-
-
-/* The TxCtrlBlk module object - contains the control-block table. */
-typedef struct
-{
- TI_HANDLE hOs;
- TI_HANDLE hReport;
- TI_HANDLE hContext;
-
- TTxCtrlBlk aTxCtrlBlkTbl[CTRL_BLK_ENTRIES_NUM]; /* The table of control-block entries. */
-
-#ifdef TI_DBG /* Just for debug. */
- TI_UINT32 uNumUsedEntries;
-#endif
-
-} TTxCtrlBlkObj;
-
-
-/****************************************************************************
- * txCtrlBlk_Create()
- ****************************************************************************
- * DESCRIPTION: Create the Tx control block table object
- *
- * INPUTS: hOs
- *
- * OUTPUT: None
- *
- * RETURNS: The Created object
- ****************************************************************************/
-TI_HANDLE txCtrlBlk_Create (TI_HANDLE hOs)
-{
- TTxCtrlBlkObj *pTxCtrlBlk;
-
- pTxCtrlBlk = os_memoryAlloc (hOs, sizeof(TTxCtrlBlkObj));
- if (pTxCtrlBlk == NULL)
- return NULL;
-
- os_memoryZero (hOs, pTxCtrlBlk, sizeof(TTxCtrlBlkObj));
-
- pTxCtrlBlk->hOs = hOs;
-
- return( (TI_HANDLE)pTxCtrlBlk );
-}
-
-
-/****************************************************************************
- * txCtrlBlk_Destroy()
- ****************************************************************************
- * DESCRIPTION: Destroy the Tx control block table object
- *
- * INPUTS: hTxCtrlBlk - The object to free
- *
- * OUTPUT: None
- *
- * RETURNS: TI_OK or TI_NOK
- ****************************************************************************/
-TI_STATUS txCtrlBlk_Destroy (TI_HANDLE hTxCtrlBlk)
-{
- TTxCtrlBlkObj *pTxCtrlBlk = (TTxCtrlBlkObj *)hTxCtrlBlk;
-
- if (pTxCtrlBlk)
- os_memoryFree(pTxCtrlBlk->hOs, pTxCtrlBlk, sizeof(TTxCtrlBlkObj));
-
- return TI_OK;
-}
-
-
-/****************************************************************************
- * txCtrlBlk_Init()
- ****************************************************************************
- DESCRIPTION: Initialize the Tx control block module.
- ****************************************************************************/
-TI_STATUS txCtrlBlk_Init (TI_HANDLE hTxCtrlBlk, TI_HANDLE hReport, TI_HANDLE hContext)
-{
- TTxCtrlBlkObj *pTxCtrlBlk = (TTxCtrlBlkObj *)hTxCtrlBlk;
- TTxnStruct *pTxn;
- TI_UINT8 entry;
-
- pTxCtrlBlk->hReport = hReport;
- pTxCtrlBlk->hContext = hContext;
-
- /* For all entries, write the entry index in the descriptor and the next entry address
- in the next free entery pointer. Init also some other fields. */
- for(entry = 0; entry < CTRL_BLK_ENTRIES_NUM; entry++)
- {
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.descID = entry;
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].pNextFreeEntry = &(pTxCtrlBlk->aTxCtrlBlkTbl[entry + 1]);
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.aid = 1; /* The value for infrastructure BSS */
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.reserved = 0;
-
- /* Prepare the Txn fields to the host-slave register (fixed address) */
- pTxn = &(pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxnStruct);
- TXN_PARAM_SET(pTxn, TXN_LOW_PRIORITY, TXN_FUNC_ID_WLAN, TXN_DIRECTION_WRITE, TXN_FIXED_ADDR)
- }
-
- /* Write null in the next-free index of the last entry. */
- pTxCtrlBlk->aTxCtrlBlkTbl[CTRL_BLK_ENTRIES_NUM - 1].pNextFreeEntry = NULL;
-
- #ifdef TI_DBG
- pTxCtrlBlk->uNumUsedEntries = 0;
- #endif
-
- return TI_OK;
-}
-
-
-/****************************************************************************
- * txCtrlBlk_Alloc()
- ****************************************************************************
- * DESCRIPTION:
- Allocate a free control-block entry for the current Tx packet's parameters
- (including the descriptor structure).
- Note that entry 0 in the list is never allocated and points to the
- first free entry.
- ****************************************************************************/
-TTxCtrlBlk *txCtrlBlk_Alloc (TI_HANDLE hTxCtrlBlk)
-{
- TTxCtrlBlkObj *pTxCtrlBlk = (TTxCtrlBlkObj *)hTxCtrlBlk;
- TTxCtrlBlk *pCurrentEntry; /* The pointer of the new entry allocated for the packet. */
- TTxCtrlBlk *pFirstFreeEntry; /* The first entry just points to the first free entry. */
-
- pFirstFreeEntry = &(pTxCtrlBlk->aTxCtrlBlkTbl[0]);
-
- /* Protect block allocation from preemption (may be called from external context) */
- context_EnterCriticalSection (pTxCtrlBlk->hContext);
-
- pCurrentEntry = pFirstFreeEntry->pNextFreeEntry; /* Get free entry. */
-
-#ifdef TI_DBG
- /* If no free entries, print error (not expected to happen) and return NULL. */
- if (pCurrentEntry->pNextFreeEntry == NULL)
- {
-TRACE1(pTxCtrlBlk->hReport, REPORT_SEVERITY_ERROR, "txCtrlBlk_alloc(): No free entry, UsedEntries=%d\n", pTxCtrlBlk->uNumUsedEntries);
- context_LeaveCriticalSection (pTxCtrlBlk->hContext);
- return NULL;
- }
- pTxCtrlBlk->uNumUsedEntries++;
-#endif
-
- /* Link the first entry to the next free entry. */
- pFirstFreeEntry->pNextFreeEntry = pCurrentEntry->pNextFreeEntry;
-
- context_LeaveCriticalSection (pTxCtrlBlk->hContext);
-
- /* Clear the next-free-entry index just as an indication that our entry is not free. */
- pCurrentEntry->pNextFreeEntry = 0;
-
- pCurrentEntry->tTxPktParams.uFlags = 0;
- pCurrentEntry->tTxPktParams.uHeadroomSize = 0;
-
- return pCurrentEntry;
-}
-
-
-/****************************************************************************
- * txCtrlBlk_Free()
- ****************************************************************************
- * DESCRIPTION:
- Link the freed entry after entry 0, so now it is the first free entry to
- be allocated.
- ****************************************************************************/
-void txCtrlBlk_Free (TI_HANDLE hTxCtrlBlk, TTxCtrlBlk *pCurrentEntry)
-{
- TTxCtrlBlkObj *pTxCtrlBlk = (TTxCtrlBlkObj *)hTxCtrlBlk;
- TTxCtrlBlk *pFirstFreeEntry = &(pTxCtrlBlk->aTxCtrlBlkTbl[0]);
-
- if (!pTxCtrlBlk)
- {
- return;
- }
-
-#ifdef TI_DBG
- /* If the pointed entry is already free, print error and exit (not expected to happen). */
- if (pCurrentEntry->pNextFreeEntry != 0)
- {
- TRACE2(pTxCtrlBlk->hReport, REPORT_SEVERITY_ERROR, "txCtrlBlk_free(): Entry %d alredy free, UsedEntries=%d\n", pCurrentEntry->tTxDescriptor.descID, pTxCtrlBlk->uNumUsedEntries);
- return;
- }
- pTxCtrlBlk->uNumUsedEntries--;
-#endif
-
- /* Protect block freeing from preemption (may be called from external context) */
- context_EnterCriticalSection (pTxCtrlBlk->hContext);
-
- /* Link the freed entry between entry 0 and the next free entry. */
- pCurrentEntry->pNextFreeEntry = pFirstFreeEntry->pNextFreeEntry;
- pFirstFreeEntry->pNextFreeEntry = pCurrentEntry;
-
- context_LeaveCriticalSection (pTxCtrlBlk->hContext);
-}
-
-
-/****************************************************************************
- * txCtrlBlk_GetPointer()
- ****************************************************************************
- * DESCRIPTION:
- Return a pointer to the control block entry of the requested packet.
- Used upon tx-complete to retrieve info after getting the descId from the FW.
- ****************************************************************************/
-TTxCtrlBlk *txCtrlBlk_GetPointer (TI_HANDLE hTxCtrlBlk, TI_UINT8 descId)
-{
- TTxCtrlBlkObj *pTxCtrlBlk = (TTxCtrlBlkObj *)hTxCtrlBlk;
- return ( &(pTxCtrlBlk->aTxCtrlBlkTbl[descId]) );
-}
-
-
-/****************************************************************************
- * txCtrlBlk_PrintTable()
- ****************************************************************************
- * DESCRIPTION: Print the txCtrlBlk table main fields.
- ****************************************************************************/
-#ifdef TI_DBG
-void txCtrlBlk_PrintTable (TI_HANDLE hTxCtrlBlk)
-{
-#ifdef REPORT_LOG
- TTxCtrlBlkObj *pTxCtrlBlk = (TTxCtrlBlkObj *)hTxCtrlBlk;
- TI_UINT8 entry;
-
- WLAN_OS_REPORT((" Tx-Control-Block Information, UsedEntries=%d\n", pTxCtrlBlk->uNumUsedEntries));
- WLAN_OS_REPORT(("==============================================\n"));
-
- for(entry = 0; entry < CTRL_BLK_ENTRIES_NUM; entry++)
- {
- WLAN_OS_REPORT(("Entry %d: DescID=%d, Next=0x%x, Len=%d, StartTime=%d, TID=%d, ExtraBlks=%d, TotalBlks=%d, Flags=0x%x\n",
- entry,
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.descID,
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].pNextFreeEntry,
- ENDIAN_HANDLE_WORD(pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.length),
- ENDIAN_HANDLE_LONG(pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.startTime),
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.tid,
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.extraMemBlks,
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxDescriptor.totalMemBlks,
- pTxCtrlBlk->aTxCtrlBlkTbl[entry].tTxPktParams.uFlags));
- }
-#endif
-}
-#endif /* TI_DBG */
-