diff options
Diffstat (limited to 'wl1271/TWD/TWDriver/TWDriver.c')
-rw-r--r-- | wl1271/TWD/TWDriver/TWDriver.c | 1808 |
1 files changed, 0 insertions, 1808 deletions
diff --git a/wl1271/TWD/TWDriver/TWDriver.c b/wl1271/TWD/TWDriver/TWDriver.c deleted file mode 100644 index eebfceed..00000000 --- a/wl1271/TWD/TWDriver/TWDriver.c +++ /dev/null @@ -1,1808 +0,0 @@ -/* - * TWDriver.c - * - * Copyright(c) 1998 - 2010 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. - */ - - -/** \file TWDriver.c - * \brief TI WLAN Hardware Access Driver - * - * \see TWDriver.h - */ - -#define __FILE_ID__ FILE_ID_117 -#include "report.h" -#include "TWDriver.h" -#include "MacServices_api.h" -#include "txCtrlBlk_api.h" -#include "txHwQueue_api.h" -#include "txXfer_api.h" -#include "txResult_api.h" -#include "rxXfer_api.h" -#include "TwIf.h" -#include "FwEvent_api.h" -#include "CmdMBox_api.h" -#include "CmdQueue_api.h" -#include "eventMbox_api.h" -#include "fwDebug_api.h" -#include "osApi.h" -#include "TWDriverInternal.h" -#include "HwInit_api.h" -#include "CmdBld.h" -#include "RxQueue_api.h" - - - -#define TWD_CB_MODULE_OWNER_MASK 0xff00 -#define TWD_CB_TYPE_MASK 0x00ff - - - - -TI_HANDLE TWD_Create (TI_HANDLE hOs) -{ - TTwd *pTWD; - - /* Allocate the TNETW_Driver module */ - pTWD = (TTwd *)os_memoryAlloc (hOs, sizeof(TTwd)); - if (pTWD == NULL) - { - return NULL; - } - - os_memoryZero (hOs, pTWD, sizeof(TTwd)); - - pTWD->hOs = hOs; - - /* Create TwIf module */ - pTWD->hTwIf = twIf_Create (hOs); - if (pTWD->hTwIf == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"twIf_Create failed\n"); - WLAN_OS_REPORT(("twIf_Create failed\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - /* Create command builder module */ - pTWD->hCmdBld = cmdBld_Create (hOs); - if (pTWD->hCmdBld == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"cmdBld_Create failed\n"); - WLAN_OS_REPORT(("cmdBld_Create failed\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - /* Create the MAC Services module */ - pTWD->hMacServices = MacServices_create (hOs); - if (pTWD->hMacServices == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE, "TWD MacServices_create failed!!!\n"); - WLAN_OS_REPORT(("TWD MacServices_create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - /* Create the Ctrl module */ - pTWD->hCmdQueue = cmdQueue_Create (hOs); - if (pTWD->hCmdQueue == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE, "TWD cmdQueue_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD cmdQueue_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - /* - * Create the FW-Transfer modules: - */ - - pTWD->hTxXfer = txXfer_Create (hOs); - if (pTWD->hTxXfer == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"TWD txXfer_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD txXfer_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - pTWD->hTxResult = txResult_Create (hOs); - if (pTWD->hTxResult == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"TWD txResult_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD txResult_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - pTWD->hRxXfer = rxXfer_Create (hOs); - if (pTWD->hRxXfer == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"TWD rxXfer_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD rxXfer_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - pTWD->hFwEvent = fwEvent_Create (hOs); - if (pTWD->hFwEvent == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE, "TWD fwEvent_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD fwEvent_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - pTWD->hEventMbox = eventMbox_Create (hOs); - if (pTWD->hEventMbox == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE, "TWD eventMbox_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD eventMbox_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - -#ifdef TI_DBG - pTWD->hFwDbg = fwDbg_Create (hOs); - if (pTWD->hFwDbg == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"TWD fwDbg_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD fwDbg_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } -#endif /* TI_DBG */ - - pTWD->hCmdMbox = cmdMbox_Create (hOs); - if (pTWD->hCmdMbox == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"TWD cmdMbox_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD cmdMbox_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - pTWD->hRxQueue = RxQueue_Create (hOs); - if (pTWD->hRxQueue == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE, "TWD RxQueue_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD RxQueue_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - - /* - * Create the Data-Services modules: - */ - - pTWD->hTxCtrlBlk = txCtrlBlk_Create (hOs); - if (pTWD->hTxCtrlBlk == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE, "TWD txCtrlBlk_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD txCtrlBlk_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - pTWD->hTxHwQueue = txHwQueue_Create (hOs); - if (pTWD->hTxHwQueue == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE, "TWD txHwQueue_Create failed!!!\n"); - WLAN_OS_REPORT(("TWD txHwQueue_Create failed!!!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - pTWD->hHwInit = hwInit_Create (hOs); - if (pTWD->hHwInit == NULL) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_CONSOLE,"wInit_Create failed!\n"); - WLAN_OS_REPORT (("wInit_Create failed!\n")); - TWD_Destroy ((TI_HANDLE)pTWD); - return NULL; - } - - WLAN_INIT_REPORT (("TWD_Create: CREATED !!!\n")); - - return (TI_HANDLE)pTWD; -} - -TI_STATUS TWD_Destroy (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - WLAN_INIT_REPORT(("TWD_Destroy: called\n")); - if (pTWD == NULL) - { - return TI_NOK; - } - - if (pTWD->hTwIf != NULL) - { - twIf_Destroy (pTWD->hTwIf); - pTWD->hTwIf = NULL; - } - - /* Free the Command Builder */ - if (pTWD->hCmdBld != NULL) - { - cmdBld_Destroy (pTWD->hCmdBld); - pTWD->hCmdBld = NULL; - } - WLAN_INIT_REPORT(("TWD_Destroy: Command Builder released\n")); - - /* Free the MAC Services */ - if (pTWD->hMacServices != NULL) - { - MacServices_destroy(pTWD->hMacServices); - pTWD->hMacServices = NULL; - } - WLAN_INIT_REPORT(("TWD_Destroy: Mac Services released\n")); - - /* - * Free the Ctrl modules - */ - if (pTWD->hCmdQueue != NULL) - { - cmdQueue_Destroy(pTWD->hCmdQueue); - pTWD->hCmdQueue = NULL; - } - - /* - * Free the FW-Transfer modules: - */ - if (pTWD->hTxXfer != NULL) - { - txXfer_Destroy (pTWD->hTxXfer); - pTWD->hTxXfer = NULL; - } - - if (pTWD->hTxResult != NULL) - { - txResult_Destroy (pTWD->hTxResult); - pTWD->hTxResult = NULL; - } - - if (pTWD->hRxXfer != NULL) - { - rxXfer_Destroy (pTWD->hRxXfer); - pTWD->hRxXfer = NULL; - } - - if (pTWD->hEventMbox != NULL) - { - eventMbox_Destroy (pTWD->hEventMbox); - pTWD->hEventMbox = NULL; - } - -#ifdef TI_DBG - if (pTWD->hFwDbg != NULL) - { - fwDbg_Destroy (pTWD->hFwDbg); - pTWD->hFwDbg = NULL; - } -#endif /* TI_DBG */ - - if (pTWD->hFwEvent != NULL) - { - fwEvent_Destroy (pTWD->hFwEvent); - pTWD->hFwEvent = NULL; - } - - if (pTWD->hCmdMbox != NULL) - { - cmdMbox_Destroy (pTWD->hCmdMbox); - pTWD->hCmdMbox = NULL; - } - - if (pTWD->hRxQueue != NULL) - { - RxQueue_Destroy (pTWD->hRxQueue); - pTWD->hRxQueue = NULL; - } - - /* - * Free the Data-Services modules: - */ - - if (pTWD->hTxCtrlBlk != NULL) - { - txCtrlBlk_Destroy (pTWD->hTxCtrlBlk); - pTWD->hTxCtrlBlk = NULL; - } - - if (pTWD->hTxHwQueue != NULL) - { - txHwQueue_Destroy (pTWD->hTxHwQueue); - pTWD->hTxHwQueue = NULL; - } - - if (pTWD->hHwInit != NULL) - { - hwInit_Destroy (pTWD->hHwInit); - pTWD->hHwInit = NULL; - } - - os_memoryFree (pTWD->hOs, (TI_HANDLE)pTWD, sizeof(TTwd)); - - WLAN_INIT_REPORT(("TWD_Destroy pTNETW_Driver released!!!\n")); - - return TI_OK; -} - - -/** - * \brief HW Init Callback - * - * \param hTWD - TWD module object handle - * \return void - * - * \par Description - * Static CB function - * Called during TWD Module Init by hwInit_Init in order to complete the HW Configuration init - * - * \sa TWD_InitHw - */ -static void TWD_InitHwCb (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_InitHwCb: call fInitHwCb CB. In std drvMain_InitHwCb()\n"); - - hwInit_InitPolarity(pTWD->hHwInit); - -} - -void TWD_Init (TI_HANDLE hTWD, - TI_HANDLE hReport, - TI_HANDLE hUser, - TI_HANDLE hTimer, - TI_HANDLE hContext, - TI_HANDLE hTxnQ, - TTwdCallback fInitHwCb, - TTwdCallback fInitFwCb, - TTwdCallback fConfigFwCb, - TTwdCallback fStopCb, - TTwdCallback fInitFailCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - pTWD->bInitSuccess = TI_FALSE; - pTWD->bRecoveryEnabled = TI_FALSE; - pTWD->hReport = hReport; - pTWD->hUser = hUser; - pTWD->hTimer = hTimer; - pTWD->hContext = hContext; - pTWD->hTxnQ = hTxnQ; - pTWD->fInitHwCb = fInitHwCb; - pTWD->fInitFwCb = fInitFwCb; - pTWD->fConfigFwCb = fConfigFwCb; - pTWD->fStopCb = fStopCb; - pTWD->fInitFailCb = fInitFailCb; - - TRACE1(pTWD->hReport, REPORT_SEVERITY_INIT , "TWD_Init: %x\n", hTWD); - - /* FwEvent should be configured first */ - fwEvent_Init (pTWD->hFwEvent, hTWD); - - eventMbox_Config (pTWD->hEventMbox, pTWD->hTwIf, pTWD->hReport, pTWD->hFwEvent, pTWD->hCmdBld); - - cmdQueue_Init (pTWD->hCmdQueue, - pTWD->hCmdMbox, - pTWD->hReport, - pTWD->hTwIf, - pTWD->hTimer); - - /* Configure Command Builder */ - cmdBld_Config (pTWD->hCmdBld, - pTWD->hReport, - (void *)TWD_FinalizeDownload, - hTWD, - pTWD->hEventMbox, - pTWD->hCmdQueue, - pTWD->hTwIf); - - hwInit_Init (pTWD->hHwInit, - pTWD->hReport, - pTWD->hTimer, - hTWD, - hTWD, - (TFinalizeCb)TWD_FinalizeDownload, - TWD_InitHwCb); - - /* - * Initialize the FW-Transfer modules - */ - txXfer_Init (pTWD->hTxXfer, pTWD->hReport, pTWD->hTwIf); - - txResult_Init (pTWD->hTxResult, pTWD->hReport, pTWD->hTwIf); - - rxXfer_Init (pTWD->hRxXfer, pTWD->hFwEvent, pTWD->hReport, pTWD->hTwIf, pTWD->hRxQueue); - - RxQueue_Init (pTWD->hRxQueue, pTWD->hReport, pTWD->hTimer); - -#ifdef TI_DBG - fwDbg_Init (pTWD->hFwDbg, pTWD->hReport, pTWD->hTwIf); -#endif /* TI_DBG */ - - /* Initialize the MAC Services */ - MacServices_init (pTWD->hMacServices, - pTWD->hReport, - hTWD, - pTWD->hCmdBld, - pTWD->hEventMbox, - pTWD->hTimer); - - /* - * Initialize the Data-Services modules - */ - txCtrlBlk_Init (pTWD->hTxCtrlBlk, pTWD->hReport, pTWD->hContext); - txHwQueue_Init (pTWD->hTxHwQueue, pTWD->hReport); - - /* Initialize the TwIf module */ - twIf_Init (pTWD->hTwIf, - pTWD->hReport, - pTWD->hContext, - pTWD->hTimer, - pTWD->hTxnQ, - (TRecoveryCb)TWD_StopComplete, - hTWD); -} - - TI_STATUS TWD_InitHw (TI_HANDLE hTWD, - TI_UINT8 *pbuf, - TI_UINT32 length, - TI_UINT32 uRxDmaBufLen, - TI_UINT32 uTxDmaBufLen) -{ - TTwd *pTWD = (TTwd *)hTWD; - TI_STATUS eStatus; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INIT , "TWD_InitHw: called\n"); - - /* Provide bus related parameters to Xfer modules before any usage of the bus! */ - rxXfer_SetBusParams (pTWD->hRxXfer, uRxDmaBufLen); - txXfer_SetBusParams (pTWD->hTxXfer, uTxDmaBufLen); - - hwInit_SetNvsImage (pTWD->hHwInit, pbuf, length); - - /* - * Update the TwIf that the HW is awake - * This will protect the initialization process from going to sleep - * After the firmware initializations completed (TWD_EnableExternalEvents), the sleep will be enabled - */ - twIf_Awake (pTWD->hTwIf); - twIf_HwAvailable (pTWD->hTwIf); - - /* This initiates the HW init sequence */ - eStatus = hwInit_Boot(pTWD->hHwInit); - if (eStatus == TXN_STATUS_ERROR) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR , "TWD_InitHw: hwInit_Boot failed\n"); - return TI_NOK; - } - - return TI_OK; -} - -TI_STATUS TWD_BusOpen (TI_HANDLE hTWD, void* pParams) -{ - TTwd *pTWD = (TTwd *)hTWD; - TI_STATUS uStatus; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INIT , "TWD_BusOpen: called\n"); - - /*uStatus = TNETWIF_Open(pTWD->hTNETWIF, pParams);*/ - uStatus = TI_OK; - - return uStatus; -} - -TI_STATUS TWD_BusClose (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - TI_STATUS uStatus; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_BusClose: called\n"); - - /*uStatus = TNETWIF_Close(pTWD->hTNETWIF);*/ - uStatus = TI_OK; - - return uStatus; -} - -TI_STATUS TWD_InitFw (TI_HANDLE hTWD, TFileInfo *pFileInfo) -{ - TTwd *pTWD = (TTwd *)hTWD; - TI_STATUS status; - - /* check Parameters */ - if (( pTWD == NULL ) || ( pFileInfo == NULL )) - { - return (TI_NOK); - } - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INIT , "TWD_InitFw: called\n"); - - hwInit_SetFwImage (pTWD->hHwInit, pFileInfo); - - /* This will initiate the download to the FW */ - status = hwInit_LoadFw(pTWD->hHwInit); - - if (status == TXN_STATUS_ERROR) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR , "TWD_InitFw: failed to initialize FW\n"); - - return TI_NOK; - } - - return TI_OK; -} - -/** - * \brief Propagate interrogate results - * - * \param hTWD - TWD module object handle - * \param status - callback status - * \return TI_OK on success or TI_NOK on failure - * - * \par Description - * Static CB function - * Propagate interrogate results between TX and RX modules - * Called by TWD_ConfigFw - * - * \sa - */ -static TI_STATUS TWD_ConfigFwCb (TI_HANDLE hTWD, TI_STATUS status) -{ - TTwd *pTWD = (TTwd *)hTWD; - TDmaParams *pDmaParams = &DB_DMA(pTWD->hCmdBld); - - /* - * Store the addresses of the cyclic buffer (Rx/Tx) - * and the path status and control (Tx/Rx) in the corresponding modules - */ - txResult_setHwInfo (pTWD->hTxResult, pDmaParams); - - rxXfer_Restart (pTWD->hRxXfer); - txXfer_Restart (pTWD->hTxXfer); - - rxXfer_SetRxDirectAccessParams (pTWD->hRxXfer, pDmaParams); - - /* Provide number of HW Tx-blocks and descriptors to Tx-HW-Queue module */ - txHwQueue_SetHwInfo (pTWD->hTxHwQueue, pDmaParams); - - /* If the configure complete function was registered, we call it here - end of TWD_Configure stage */ - if (pTWD->fConfigFwCb) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ConfigFwCb: call TWD_OWNER_SELF_CONFIG CB. In std drvMain_ConfigFwCb()\n"); - - pTWD->fConfigFwCb (pTWD->hUser, TI_OK); - } - - return TI_OK; -} - - -TI_STATUS TWD_SetDefaults (TI_HANDLE hTWD, TTwdInitParams *pInitParams) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TWlanParams *pWlanParams = &DB_WLAN(pTWD->hCmdBld); - TKeepAliveList *pKlvParams = &DB_KLV(pTWD->hCmdBld); - IniFileRadioParam *pRadioParams = &DB_RADIO(pTWD->hCmdBld); - IniFileExtendedRadioParam *pExtRadioParams = &DB_EXT_RADIO(pTWD->hCmdBld); - IniFileGeneralParam *pGenParams = &DB_GEN(pTWD->hCmdBld); - TRateMngParams *pRateMngParams = &DB_RM(pTWD->hCmdBld); - TDmaParams *pDmaParams = &DB_DMA(pTWD->hCmdBld); - - TI_UINT32 k, uIndex; - int iParam; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INIT , "TWD_SetDefaults: called\n"); - - pTWD->bRecoveryEnabled = pInitParams->tGeneral.halCtrlRecoveryEnable; - - pWlanParams->PacketDetectionThreshold = pInitParams->tGeneral.packetDetectionThreshold; - pWlanParams->qosNullDataTemplateSize = pInitParams->tGeneral.qosNullDataTemplateSize; - pWlanParams->PsPollTemplateSize = pInitParams->tGeneral.PsPollTemplateSize; - pWlanParams->probeResponseTemplateSize = pInitParams->tGeneral.probeResponseTemplateSize; - pWlanParams->probeRequestTemplateSize = pInitParams->tGeneral.probeRequestTemplateSize; - pWlanParams->beaconTemplateSize = pInitParams->tGeneral.beaconTemplateSize; - pWlanParams->nullTemplateSize = pInitParams->tGeneral.nullTemplateSize; - pWlanParams->disconnTemplateSize = pInitParams->tGeneral.disconnTemplateSize; - pWlanParams->ArpRspTemplateSize = pInitParams->tGeneral.ArpRspTemplateSize; - - /* Beacon broadcast options */ - pWlanParams->BcnBrcOptions.BeaconRxTimeout = pInitParams->tGeneral.BeaconRxTimeout; - pWlanParams->BcnBrcOptions.BroadcastRxTimeout = pInitParams->tGeneral.BroadcastRxTimeout; - pWlanParams->BcnBrcOptions.RxBroadcastInPs = pInitParams->tGeneral.RxBroadcastInPs; - pWlanParams->ConsecutivePsPollDeliveryFailureThreshold = pInitParams->tGeneral.ConsecutivePsPollDeliveryFailureThreshold; - - pWlanParams->RxDisableBroadcast = pInitParams->tGeneral.halCtrlRxDisableBroadcast; - pWlanParams->calibrationChannel2_4 = pInitParams->tGeneral.halCtrlCalibrationChannel2_4; - pWlanParams->calibrationChannel5_0 = pInitParams->tGeneral.halCtrlCalibrationChannel5_0; - - /* Not used but need by Palau */ - pWlanParams->RtsThreshold = pInitParams->tGeneral.halCtrlRtsThreshold; - pWlanParams->CtsToSelf = CTS_TO_SELF_DISABLE; - - pWlanParams->WiFiWmmPS = pInitParams->tGeneral.WiFiWmmPS; - - pWlanParams->MaxTxMsduLifetime = pInitParams->tGeneral.halCtrlMaxTxMsduLifetime; - pWlanParams->MaxRxMsduLifetime = pInitParams->tGeneral.halCtrlMaxRxMsduLifetime; - - pWlanParams->rxTimeOut.psPoll = pInitParams->tGeneral.rxTimeOut.psPoll; - pWlanParams->rxTimeOut.UPSD = pInitParams->tGeneral.rxTimeOut.UPSD; - - /* RSSI/SNR Weights for Average calculations */ - pWlanParams->tRssiSnrWeights.rssiBeaconAverageWeight = pInitParams->tGeneral.uRssiBeaconAverageWeight; - pWlanParams->tRssiSnrWeights.rssiPacketAverageWeight = pInitParams->tGeneral.uRssiPacketAverageWeight; - pWlanParams->tRssiSnrWeights.snrBeaconAverageWeight = pInitParams->tGeneral.uSnrBeaconAverageWeight ; - pWlanParams->tRssiSnrWeights.snrPacketAverageWeight = pInitParams->tGeneral.uSnrPacketAverageWeight ; - - /* PM config params */ - pWlanParams->uHostClkSettlingTime = pInitParams->tGeneral.uHostClkSettlingTime; - pWlanParams->uHostFastWakeupSupport = pInitParams->tGeneral.uHostFastWakeupSupport; - - /* No used */ - pWlanParams->FragmentThreshold = pInitParams->tGeneral.halCtrlFragThreshold; - pWlanParams->ListenInterval = (TI_UINT8)pInitParams->tGeneral.halCtrlListenInterval; - pWlanParams->RateFallback = pInitParams->tGeneral.halCtrlRateFallbackRetry; - pWlanParams->MacClock = pInitParams->tGeneral.halCtrlMacClock; - pWlanParams->ArmClock = pInitParams->tGeneral.halCtrlArmClock; - - pWlanParams->ch14TelecCca = pInitParams->tGeneral.halCtrlCh14TelecCca; - - /* Data interrupts pacing */ - pWlanParams->TxCompletePacingThreshold = pInitParams->tGeneral.TxCompletePacingThreshold; - pWlanParams->TxCompletePacingTimeout = pInitParams->tGeneral.TxCompletePacingTimeout; - pWlanParams->RxIntrPacingThreshold = pInitParams->tGeneral.RxIntrPacingThreshold; - pWlanParams->RxIntrPacingTimeout = pInitParams->tGeneral.RxIntrPacingTimeout; - - /* Number of Rx mem-blocks to allocate in FW */ - pDmaParams->NumRxBlocks = pInitParams->tGeneral.uRxMemBlksNum; - - - /* Configure ARP IP */ - pWlanParams->arpFilterType = pInitParams->tArpIpFilter.filterType; - IP_COPY (pWlanParams->arp_IP_addr, pInitParams->tArpIpFilter.addr); - - /* Configure address group */ - pWlanParams->numGroupAddrs = pInitParams->tMacAddrFilter.numOfMacAddresses; - pWlanParams->isMacAddrFilteringnabled = pInitParams->tMacAddrFilter.isFilterEnabled; - - for (k = 0; k < pWlanParams->numGroupAddrs; k++) - { - MAC_COPY (pWlanParams->aGroupAddr[k], pInitParams->tMacAddrFilter.macAddrTable[k]); - } - - - /* CoexActivity Table */ - TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetDefaults: coex numOfElements %d\n", pInitParams->tGeneral.halCoexActivityTable.numOfElements); - - pWlanParams->tWlanParamsCoexActivityTable.numOfElements = 0; - for (iParam=0; iParam < (int)pInitParams->tGeneral.halCoexActivityTable.numOfElements; iParam++) - { - TCoexActivity *pSaveCoex = &pWlanParams->tWlanParamsCoexActivityTable.entry[0]; - TCoexActivity *pParmCoex = &pInitParams->tGeneral.halCoexActivityTable.entry[0]; - int i, saveIndex; - - /* Check if to overwrite existing entry or put on last index */ - for (i=0; i<iParam; i++) - { - if ((pSaveCoex[i].activityId == pParmCoex[iParam].activityId) && (pSaveCoex[i].coexIp == pParmCoex[iParam].coexIp)) - { - break; - } - } - - if (i == iParam) - { - /* new entry */ - saveIndex = pWlanParams->tWlanParamsCoexActivityTable.numOfElements; - pWlanParams->tWlanParamsCoexActivityTable.numOfElements++; - } - else - { - /* overwrite existing */ - saveIndex = i; - } - - TRACE4(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetDefaults: save coex Param %d in index %d, %d %d\n", iParam, saveIndex, pParmCoex[iParam].coexIp, pParmCoex[iParam].activityId); - - pSaveCoex[saveIndex].coexIp = pParmCoex[iParam].coexIp; - pSaveCoex[saveIndex].activityId = pParmCoex[iParam].activityId; - pSaveCoex[saveIndex].defaultPriority = pParmCoex[iParam].defaultPriority; - pSaveCoex[saveIndex].raisedPriority = pParmCoex[iParam].raisedPriority; - pSaveCoex[saveIndex].minService = pParmCoex[iParam].minService; - pSaveCoex[saveIndex].maxService = pParmCoex[iParam].maxService; - } - - /* configure keep-alive default mode to enabled */ - pKlvParams->enaDisFlag = TI_TRUE; - for (uIndex = 0; uIndex < KLV_MAX_TMPL_NUM; uIndex++) - { - pKlvParams->keepAliveParams[ uIndex ].enaDisFlag = TI_FALSE; - } - - /* Configure the TWD modules */ - rxXfer_SetDefaults (pTWD->hRxXfer, pInitParams); - txXfer_SetDefaults (pTWD->hTxXfer, pInitParams); - txHwQueue_Config (pTWD->hTxHwQueue, pInitParams); - MacServices_config (pTWD->hMacServices, pInitParams); - - /* - * 802.11n - */ - pWlanParams->tTwdHtCapabilities.b11nEnable = pInitParams->tGeneral.b11nEnable; - - /* Configure HT capabilities setting */ - pWlanParams->tTwdHtCapabilities.uChannelWidth = CHANNEL_WIDTH_20MHZ; - pWlanParams->tTwdHtCapabilities.uRxSTBC = RXSTBC_NOT_SUPPORTED; - pWlanParams->tTwdHtCapabilities.uMaxAMSDU = MAX_MSDU_3839_OCTETS; - pWlanParams->tTwdHtCapabilities.uMaxAMPDU = pInitParams->tGeneral.uMaxAMPDU; - - pWlanParams->tTwdHtCapabilities.uAMPDUSpacing = AMPDU_SPC_8_MICROSECONDS; - pWlanParams->tTwdHtCapabilities.aRxMCS[0] = (MCS_SUPPORT_MCS_0 | - MCS_SUPPORT_MCS_1 | - MCS_SUPPORT_MCS_2 | - MCS_SUPPORT_MCS_3 | - MCS_SUPPORT_MCS_4 | - MCS_SUPPORT_MCS_5 | - MCS_SUPPORT_MCS_6 | - MCS_SUPPORT_MCS_7); - os_memoryZero (pTWD->hOs, pWlanParams->tTwdHtCapabilities.aRxMCS + 1, RX_TX_MCS_BITMASK_SIZE - 1); - pWlanParams->tTwdHtCapabilities.aTxMCS[0] = (MCS_SUPPORT_MCS_0 | - MCS_SUPPORT_MCS_1 | - MCS_SUPPORT_MCS_2 | - MCS_SUPPORT_MCS_3 | - MCS_SUPPORT_MCS_4 | - MCS_SUPPORT_MCS_5 | - MCS_SUPPORT_MCS_6 | - MCS_SUPPORT_MCS_7); - os_memoryZero (pTWD->hOs, pWlanParams->tTwdHtCapabilities.aTxMCS + 1, RX_TX_MCS_BITMASK_SIZE - 1); - pWlanParams->tTwdHtCapabilities.uRxMaxDataRate = MCS_HIGHEST_SUPPORTED_RECEPTION_DATA_RATE_IN_MBIT_S; - pWlanParams->tTwdHtCapabilities.uPCOTransTime = PCO_TRANS_TIME_NO_TRANSITION; - pWlanParams->tTwdHtCapabilities.uHTCapabilitiesBitMask = (CAP_BIT_MASK_GREENFIELD_FRAME_FORMAT | - CAP_BIT_MASK_SHORT_GI_FOR_20MHZ_PACKETS); - pWlanParams->tTwdHtCapabilities.uMCSFeedback = MCS_FEEDBACK_NO; - - os_memoryCopy(pTWD->hOs, (void*)pRadioParams, (void*)&pInitParams->tIniFileRadioParams, sizeof(IniFileRadioParam)); - os_memoryCopy(pTWD->hOs, (void*)pExtRadioParams, (void*)&pInitParams->tIniFileExtRadioParams, sizeof(IniFileExtendedRadioParam)); - os_memoryCopy(pTWD->hOs, (void*)pGenParams, (void*)&pInitParams->tPlatformGenParams, sizeof(IniFileGeneralParam)); - - os_memoryCopy (pTWD->hOs, - (void*)&(pWlanParams->tFmCoexParams), - (void*)&(pInitParams->tGeneral.tFmCoexParams), - sizeof(TFmCoexParams)); - - /* Rate management params */ - pRateMngParams->rateMngParams.InverseCuriosityFactor = pInitParams->tRateMngParams.InverseCuriosityFactor; - pRateMngParams->rateMngParams.MaxPer = pInitParams->tRateMngParams.MaxPer; - pRateMngParams->rateMngParams.PerAdd = pInitParams->tRateMngParams.PerAdd; - pRateMngParams->rateMngParams.PerAddShift = pInitParams->tRateMngParams.PerAddShift; - pRateMngParams->rateMngParams.PerAlphaShift = pInitParams->tRateMngParams.PerAlphaShift; - pRateMngParams->rateMngParams.PerBeta1Shift = pInitParams->tRateMngParams.PerBeta1Shift; - pRateMngParams->rateMngParams.PerBeta2Shift = pInitParams->tRateMngParams.PerBeta2Shift; - pRateMngParams->rateMngParams.PerTh1 = pInitParams->tRateMngParams.PerTh1; - pRateMngParams->rateMngParams.PerTh2 = pInitParams->tRateMngParams.PerTh2; - pRateMngParams->rateMngParams.RateCheckDown = pInitParams->tRateMngParams.RateCheckDown; - pRateMngParams->rateMngParams.RateCheckUp = pInitParams->tRateMngParams.RateCheckUp; - pRateMngParams->rateMngParams.RateRetryScore = pInitParams->tRateMngParams.RateRetryScore; - pRateMngParams->rateMngParams.TxFailHighTh = pInitParams->tRateMngParams.TxFailHighTh; - pRateMngParams->rateMngParams.TxFailLowTh = pInitParams->tRateMngParams.TxFailLowTh; - - /* RATE_MNG_MAX_RETRY_POLICY_PARAMS_LEN */ - for (uIndex = 0; uIndex < 13; uIndex++) - { - pRateMngParams->rateMngParams.RateRetryPolicy[uIndex] = pInitParams->tRateMngParams.RateRetryPolicy[uIndex]; - } - - /* DCO Itrim params */ - pWlanParams->dcoItrimEnabled = pInitParams->tDcoItrimParams.enable; - pWlanParams->dcoItrimModerationTimeoutUsec = pInitParams->tDcoItrimParams.moderationTimeoutUsec; - - return TI_OK; -} - -TI_STATUS TWD_ConfigFw (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INIT , "TWD_ConfigFw: called\n"); - - /* - * Configure the WLAN firmware after config all the hardware objects - */ - if (cmdBld_ConfigFw (pTWD->hCmdBld, (void *)TWD_ConfigFwCb, hTWD) != TI_OK) - { - return TI_NOK; - } - - return TI_OK; -} - -void TWD_FinalizeDownload (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INIT , "TWD_FinalizeDownload: called\n"); - - if ( pTWD == NULL ) - { - return; - } - /* Here at the end call the Initialize Complete callback that will release the user Init semaphore */ - TRACE0(pTWD->hReport, REPORT_SEVERITY_INIT, "Before sending the Init Complet callback !!!!!\n"); - - /* Sign that init has succeeded */ - pTWD->bInitSuccess = TI_TRUE; - - /* Call user application configuration callback */ - if (pTWD->fInitFwCb) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_FinalizeDownload: call fInitFwCb CB. In std drvMain_InitFwCb()\n"); - - (*pTWD->fInitFwCb) (pTWD->hUser, TI_OK); - } -} - -void TWD_FinalizeOnFailure (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_FinalizeOnFailure: called\n"); - - /* Call the upper layer callback for init failure case */ - if (pTWD->fInitFailCb) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_FinalizeOnFailure: call fInitFailCb CB. In std drvMain_InitFailCb()\n"); - - pTWD->fInitFailCb (pTWD->hUser, TI_OK); - } -} - -TI_STATUS TWD_CheckMailboxCb (TI_HANDLE hTWD, TI_UINT16 uMboxStatus, void *pItrParamBuf) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CheckMailboxCb: called\n"); - - if (uMboxStatus != TI_OK) - { - ++pTWD->uNumMboxFailures; - TRACE1(pTWD->hReport, REPORT_SEVERITY_WARNING, "TWD_CheckMailboxCb: Periodic intorregate check - Command mailbox failure was occur \n errors failure # %d", pTWD->uNumMboxFailures); - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CheckMailboxCb: call TWD_INT_EVENT_FAILURE CB. In std healthMonitor_sendFailureEvent()\n"); - - /* Indicating Upper Layer about Mbox Error */ - pTWD->fFailureEventCb (pTWD->hFailureEventCb, MBOX_FAILURE); - } - - return TI_OK; -} -#ifdef RS_OVER_TWD -extern void (*gBusTxn_ErrorCb)(TI_HANDLE , int); -extern void *gBusTxn_ErrorHndle; -#endif - -/** - * \brief Registers TWD Module Callbacks - * - * \param hTWD - TWD module object handle - * \param uCallBackID - Registered Callback ID - * \param fCb - Pointer to Input Registered CB function - * \param hCb - Handle to Input Registered CB parameters - * \return void - * - * \par Description - * Static CB function - * This CB Registers TWD CB functions for future use: - * CB which handles failure to the CMD Queue, MAC Service and TwIf - * CB which handles Command Complete for the CMD Queue - * Called by TWD_RegisterCb - * - * \sa TWD_RegisterCb - */ -static void TWD_RegisterOwnCb (TI_HANDLE hTWD, TI_UINT32 uCallBackID, void *fCb, TI_HANDLE hCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_RegisterOwnCB: callback ID=0x%x\n", uCallBackID); - - switch (uCallBackID) - { - case TWD_INT_EVENT_FAILURE: - /* Save Health-Moitor callback */ - pTWD->fFailureEventCb = (TFailureEventCb)fCb; - pTWD->hFailureEventCb = hCb; - - /* Register For Error Of Mailbox in case of timeout */ - cmdQueue_RegisterForErrorCb (pTWD->hCmdQueue, (void *)TWD_CheckMailboxCb, hTWD); - - /* Forward the Health-Moitor callback to the MAC-Services modules */ - MacServices_registerFailureEventCB(pTWD->hMacServices, fCb, hCb); - - /* Forward the Health-Moitor callback to the TwIf for bus errors */ - twIf_RegisterErrCb (pTWD->hTwIf, fCb, hCb); - - /* Forward the Health-Moitor callback to the RxXfer for Rx packet errors */ - rxXfer_RegisterErrCb (pTWD->hRxXfer, fCb, hCb); - break; - - case TWD_INT_COMMAND_COMPLETE: - cmdQueue_RegisterCmdCompleteGenericCb (pTWD->hCmdQueue, fCb, hCb); - break; - - default: - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_RegisterOwnCb - Illegal value\n"); - } -} - -TI_STATUS TWD_RegisterCb (TI_HANDLE hTWD, TI_UINT32 event, TTwdCB *fCb, void *pData) -{ - TTwd *pTWD = (TTwd *)hTWD; - TI_UINT32 uModuleId = event & TWD_CB_MODULE_OWNER_MASK; - TI_UINT32 uCallbackId = event & TWD_CB_TYPE_MASK; - - if ((fCb == NULL) || (pData == NULL)) - { -TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_Register_CB: Invalid NULL Parameter\n"); - - } - - TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: (Value = 0x%x)\n", event); - - /* First detect which module is the owner */ - - switch (uModuleId) - { - case TWD_OWNER_TX_HW_QUEUE: - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: TWD_OWNER_TX_HW_QUEUE\n"); - txHwQueue_RegisterCb (pTWD->hTxHwQueue, uCallbackId, fCb, pData); - break; - - case TWD_OWNER_DRIVER_TX_XFER: - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: TWD_OWNER_DRIVER_TX_XFER\n"); - txXfer_RegisterCb (pTWD->hTxXfer, uCallbackId, fCb, pData); - break; - - case TWD_OWNER_TX_RESULT: - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: TWD_OWNER_TX_RESULT\n"); - txResult_RegisterCb (pTWD->hTxResult, uCallbackId, fCb, pData); - break; - - case TWD_OWNER_RX_XFER: - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: TWD_OWNER_RX_XFER\n"); - rxXfer_Register_CB(pTWD->hRxXfer, uCallbackId, fCb, pData); - break; - - case TWD_OWNER_RX_QUEUE: - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: TWD_OWNER_RX_QUEUE\n"); - RxQueue_Register_CB(pTWD->hRxQueue, uCallbackId, fCb, pData); - break; - - case TWD_OWNER_SELF: - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: TWD_OWNER_SELF\n"); - TWD_RegisterOwnCb (hTWD, uCallbackId, fCb, pData); - break; - - case TWD_OWNER_MAC_SERVICES: - switch (uCallbackId) - { - case TWD_OWN_EVENT_SCAN_CMPLT: - MacServices_scanSRV_registerScanCompleteCB (pTWD->hMacServices, (TScanSrvCompleteCb)fCb, pData); - break; - default: - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_Register_CB: TWD_OWNER_MAC_SERVICES - Illegal value\n"); - } - break; - - case TWD_OWNER_SELF_CONFIG: - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_Register_CB: TWD_OWNER_SELF_CONFIG\n"); - pTWD->fConfigFwCb = (TTwdCallback)fCb; - break; - - default: - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_Register_CB - Illegal value\n"); - } - - return TI_OK; -} - -TI_STATUS TWD_ExitFromInitMode (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ExitFromInitMode: called\n"); - - /* Notify Event MailBox about init complete */ - eventMbox_InitComplete (pTWD->hEventMbox); - - /* Enable Mailbox */ - cmdQueue_EnableMbox (pTWD->hCmdQueue); - - return TI_OK; -} - - -#ifdef TI_DBG -TI_STATUS TWD_PrintTxInfo (TI_HANDLE hTWD, ETwdPrintInfoType ePrintInfo) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_PrintTxInfo: called\n"); - - switch (ePrintInfo) - { - case TWD_PRINT_TX_CTRL_BLK_TBL: - txCtrlBlk_PrintTable (pTWD->hTxCtrlBlk); - break; - - case TWD_PRINT_TX_HW_QUEUE_INFO: - txHwQueue_PrintInfo (pTWD->hTxHwQueue); - break; - - case TWD_PRINT_TX_XFER_INFO: - txXfer_PrintStats (pTWD->hTxXfer); - break; - - case TWD_PRINT_TX_RESULT_INFO: - txResult_PrintInfo (pTWD->hTxResult); - break; - - case TWD_CLEAR_TX_RESULT_INFO: - txResult_ClearInfo (pTWD->hTxResult); - break; - - case TWD_CLEAR_TX_XFER_INFO: - txXfer_ClearStats (pTWD->hTxXfer); - break; - - default: - TRACE1(pTWD->hReport, REPORT_SEVERITY_ERROR, ": invalid print info request code: %d\n", ePrintInfo); - } - - return TI_OK; -} - -#endif /* TI_DBG */ - -TI_STATUS TWD_InterruptRequest (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_InterruptRequest: called\n"); - - fwEvent_InterruptRequest (pTWD->hFwEvent); - - return TI_OK; -} - -TI_STATUS TWD_RegisterEvent (TI_HANDLE hTWD, TI_UINT32 event, void *fCb, TI_HANDLE hCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_RegisterEvent: called\n"); - - return eventMbox_RegisterEvent (pTWD->hEventMbox, event, fCb, hCb); -} - -TI_STATUS TWD_DisableEvent (TI_HANDLE hTWD, TI_UINT32 event) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_DisableEvent: called\n"); - - return eventMbox_MaskEvent (pTWD->hEventMbox, event, NULL, NULL); -} - -TI_STATUS TWD_EnableEvent (TI_HANDLE hTWD, TI_UINT32 event) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_EnableEvent: called\n"); - - return eventMbox_UnMaskEvent (pTWD->hEventMbox, event, NULL, NULL); -} - -void TWD_StopComplete (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StopComplete: called\n"); - - - /* reinit last ELP mode flag in recovery */ - cmdBld_Restart(pTWD->hCmdBld); - - /* Call upper layer callback */ - if (pTWD->fStopCb) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StopComplete: call fStopCb CB. In std drvMain_TwdStopCb()\n"); - - (*pTWD->fStopCb) (pTWD->hUser, TI_OK); - } -} - -TI_STATUS TWD_Stop (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - ETxnStatus status; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_Stop: called\n"); - - fwEvent_Stop (pTWD->hFwEvent); - - - /* close all BA sessions */ - TWD_CloseAllBaSessions(hTWD); - - cmdMbox_Restart (pTWD->hCmdMbox); - cmdQueue_Restart (pTWD->hCmdQueue); - cmdQueue_DisableMbox (pTWD->hCmdQueue); - eventMbox_Stop (pTWD->hEventMbox); - MacServices_restart (pTWD->hMacServices); - - status = twIf_Restart(pTWD->hTwIf); - - /* Call user stop callback */ - if (status != TXN_STATUS_PENDING) - { - TWD_StopComplete (hTWD); - } - - return TI_OK; -} - -void TWD_EnableExternalEvents (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_EnableExternalEvents: called\n"); - - /* - * Enable sleep after all firmware initializations completed - * The awake was in the TWD_initHw phase - */ - twIf_Sleep (pTWD->hTwIf); - - fwEvent_EnableExternalEvents (pTWD->hFwEvent); -} - -TI_BOOL TWD_RecoveryEnabled (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_RecoveryEnabled: called\n"); - - return pTWD->bRecoveryEnabled; -} - -TI_UINT32 TWD_GetMaxNumberOfCommandsInQueue (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetMaxNumberOfCommandsInQueue: called\n"); - - return cmdQueue_GetMaxNumberOfCommands (pTWD->hCmdQueue); -} - -TI_STATUS TWD_SetPsMode (TI_HANDLE hTWD, - E80211PsMode ePsMode, - TI_BOOL bSendNullDataOnExit, - TI_HANDLE hPowerSaveCompleteCb, - TPowerSaveCompleteCb fPowerSaveCompleteCb, - TPowerSaveResponseCb fPowerSaveResponseCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetPsMode: called\n"); - - return MacServices_powerSrv_SetPsMode (pTWD->hMacServices, - ePsMode, - bSendNullDataOnExit, - hPowerSaveCompleteCb, - fPowerSaveCompleteCb, - fPowerSaveResponseCb); -} - -TI_BOOL TWD_GetPsStatus (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetPsStatus: called\n"); - - return MacServices_powerSrv_getPsStatus (pTWD->hMacServices); -} - -TI_STATUS TWD_SetNullRateModulation (TI_HANDLE hTWD, TI_UINT16 rate) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetRateModulation: called\n"); - - MacServices_powerSrv_SetRateModulation (pTWD->hMacServices, rate); - - return TI_OK; -} - -void TWD_UpdateDtimTbtt (TI_HANDLE hTWD, TI_UINT8 uDtimPeriod, TI_UINT16 uBeaconInterval) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_UpdateDtimTbtt: called\n"); - - MacServices_scanSrv_UpdateDtimTbtt (pTWD->hMacServices, uDtimPeriod, uBeaconInterval); -} - -TI_STATUS TWD_StartMeasurement (TI_HANDLE hTWD, - TMeasurementRequest *pMsrRequest, - TI_UINT32 uTimeToRequestExpiryMs, - TCmdResponseCb fResponseCb, - TI_HANDLE hResponseCb, - TMeasurementSrvCompleteCb fCompleteCb, - TI_HANDLE hCompleteCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StartMeasurement: called\n"); - - return MacServices_measurementSRV_startMeasurement (pTWD->hMacServices, - pMsrRequest, - uTimeToRequestExpiryMs, - fResponseCb, - hResponseCb, - fCompleteCb, - hCompleteCb); -} - -TI_STATUS TWD_StopMeasurement (TI_HANDLE hTWD, - TI_BOOL bSendNullData, - TCmdResponseCb fResponseCb, - TI_HANDLE hResponseCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StopMeasurement: called\n"); - - return MacServices_measurementSRV_stopMeasurement (pTWD->hMacServices, - bSendNullData, - fResponseCb, - hResponseCb); -} - -TI_STATUS TWD_RegisterScanCompleteCb (TI_HANDLE hTWD, - TScanSrvCompleteCb fScanCompleteCb, - TI_HANDLE hScanCompleteCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_RegisterScanCompleteCb: called\n"); - - MacServices_scanSRV_registerScanCompleteCB (pTWD->hMacServices, - fScanCompleteCb, - hScanCompleteCb); - - return TI_OK; -} - -#ifdef TI_DBG -TI_STATUS TWD_PrintMacServDebugStatus (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_PrintMacServDebugStatus: called\n"); - - MacServices_scanSrv_printDebugStatus (pTWD->hMacServices); - - return TI_OK; -} -#endif - -TI_STATUS TWD_Scan (TI_HANDLE hTWD, - TScanParams *pScanParams, - EScanResultTag eScanTag, - TI_BOOL bHighPriority, - TI_BOOL bDriverMode, - TI_BOOL bScanOnDriverModeError, - E80211PsMode ePsRequest, - TI_BOOL bSendNullData, - TCmdResponseCb fResponseCb, - TI_HANDLE hResponseCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_Scan: called\n"); - - return MacServices_scanSRV_scan (pTWD->hMacServices, - pScanParams, - eScanTag, - bHighPriority, - bDriverMode, - bScanOnDriverModeError, - ePsRequest, - bSendNullData, - fResponseCb, - hResponseCb); -} - -TI_STATUS TWD_StopScan (TI_HANDLE hTWD, - EScanResultTag eScanTag, - TI_BOOL bSendNullData, - TCmdResponseCb fScanCommandResponseCb, - TI_HANDLE hCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StopScan: called\n"); - - return MacServices_scanSRV_stopScan (pTWD->hMacServices, - eScanTag, - bSendNullData, - fScanCommandResponseCb, - hCb); -} - -TI_STATUS TWD_StopScanOnFWReset (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StopScanOnFWReset: called\n"); - - return MacServices_scanSRV_stopOnFWReset (pTWD->hMacServices); -} - -TI_STATUS TWD_StartConnectionScan (TI_HANDLE hTWD, - TPeriodicScanParams *pPeriodicScanParams, - EScanResultTag eScanTag, - TI_UINT32 uPassiveScanDfsDwellTimeMs, - TCmdResponseCb fResponseCb, - TI_HANDLE hResponseCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StartConnectionScan: called\n"); - - return cmdBld_StartPeriodicScan (pTWD->hCmdBld, pPeriodicScanParams, eScanTag, uPassiveScanDfsDwellTimeMs, - (void*)fResponseCb, hResponseCb); -} - -TI_STATUS TWD_StopPeriodicScan (TI_HANDLE hTWD, - EScanResultTag eScanTag, - TCmdResponseCb fResponseCb, - TI_HANDLE hResponseCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_StopPeriodicScan: called\n"); - - return cmdBld_StopPeriodicScan (pTWD->hCmdBld, eScanTag, (void*)fResponseCb, hResponseCb); -} - -TI_STATUS TWD_readMem (TI_HANDLE hTWD, TFwDebugParams* pMemDebug, void* fCb, TI_HANDLE hCb) -{ - if (hTWD == NULL || pMemDebug == NULL) - { - return (TI_NOK); - } - - TRACE0(((TTwd *)hTWD)->hReport, REPORT_SEVERITY_INFORMATION , "TWD_readMem: called\n"); - - if (fwDbg_ReadAddr(((TTwd *)hTWD)->hFwDbg,pMemDebug->addr,pMemDebug->length,pMemDebug->UBuf.buf8,(TFwDubCallback)fCb,hCb) == TI_NOK) - { - TRACE0(((TTwd *)hTWD)->hReport, REPORT_SEVERITY_CONSOLE ,"TWD_readMem Error: fwDbg_handleCommand failed\n"); - WLAN_OS_REPORT(("TWD_readMem Error: fwDbg_handleCommand failed\n")); - return TI_NOK; - } - - return (TI_OK); -} - -TI_STATUS TWD_writeMem (TI_HANDLE hTWD, TFwDebugParams* pMemDebug, void* fCb, TI_HANDLE hCb) -{ - if (hTWD == NULL || pMemDebug == NULL) - { - return (TI_NOK); - } - - TRACE0(((TTwd *)hTWD)->hReport, REPORT_SEVERITY_INFORMATION , "TWD_writeMem: called\n"); - - if (fwDbg_WriteAddr(((TTwd *)hTWD)->hFwDbg,pMemDebug->addr,pMemDebug->length,pMemDebug->UBuf.buf8,(TFwDubCallback)fCb,hCb) == TI_NOK) - { - TRACE0(((TTwd *)hTWD)->hReport, REPORT_SEVERITY_CONSOLE ,"TWD_writeMem Error: fwDbg_handleCommand failed\n"); - WLAN_OS_REPORT(("TWD_writeMem Error: fwDbg_handleCommand failed\n")); - return TI_NOK; - } - - return(TI_OK); -} - -TI_BOOL TWD_isValidMemoryAddr (TI_HANDLE hTWD, TFwDebugParams* pMemDebug) -{ - if (hTWD == NULL || pMemDebug == NULL) - { - return TI_FALSE; - } - - TRACE0(((TTwd *)hTWD)->hReport, REPORT_SEVERITY_INFORMATION , "TWD_isValidMemoryAddr: called\n"); - - return fwDbg_isValidMemoryAddr(((TTwd *)hTWD)->hFwDbg,pMemDebug->addr,pMemDebug->length); -} - -TI_BOOL TWD_isValidRegAddr (TI_HANDLE hTWD, TFwDebugParams* pMemDebug) -{ - if (hTWD == NULL || pMemDebug == NULL ) - { - return TI_FALSE; - } - - TRACE0(((TTwd *)hTWD)->hReport, REPORT_SEVERITY_INFORMATION , "TWD_isValidRegAddr: called\n"); - - return fwDbg_isValidRegAddr(((TTwd *)hTWD)->hFwDbg,pMemDebug->addr,pMemDebug->length); -} - -/** - * \brief Set Template Frame - * - * \param hTWD - TWD module object handle - * \param pMib - Pointer to Input MIB Structure - * \return TI_OK on success or TI_NOK on failure - * - * \par Description - * Static function - * Configure/Interrogate/Modulate the Frame Rate if needed (according to Templete Type) - * and then write the MIB TemplateFrame to the FW - * - * \sa - */ -static TI_STATUS TWD_WriteMibTemplateFrame (TI_HANDLE hTWD, TMib* pMib) -{ - TTwd *pTWD = (TTwd *)hTWD; - TSetTemplate tSetTemplate; - TI_UINT32 uRateMask = RATE_TO_MASK(pMib->aData.TemplateFrame.Rate); - - /* - * Construct the template MIB element - */ - switch(pMib->aData.TemplateFrame.FrameType) - { - case TEMPLATE_TYPE_BEACON: - tSetTemplate.type = BEACON_TEMPLATE; - break; - - case TEMPLATE_TYPE_PROBE_REQUEST: - tSetTemplate.type = PROBE_REQUEST_TEMPLATE; - tSetTemplate.eBand = RADIO_BAND_2_4_GHZ; /* needed for GWSI, if so band must also be passed to choose correct template (G or A) */ - break; - - case TEMPLATE_TYPE_NULL_FRAME: - tSetTemplate.type = NULL_DATA_TEMPLATE; - MacServices_powerSrv_SetRateModulation (pTWD->hMacServices, (TI_UINT16)uRateMask); - break; - - case TEMPLATE_TYPE_PROBE_RESPONSE: - tSetTemplate.type = PROBE_RESPONSE_TEMPLATE; - break; - - case TEMPLATE_TYPE_QOS_NULL_FRAME: - tSetTemplate.type = QOS_NULL_DATA_TEMPLATE; - break; - - case TEMPLATE_TYPE_PS_POLL: - tSetTemplate.type = PS_POLL_TEMPLATE; - break; - - default: - TRACE1(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_WriteMibTemplateFrame - ERROR - template is not supported, %d\n", pMib->aData.TemplateFrame.FrameType); - return PARAM_NOT_SUPPORTED; - } - - tSetTemplate.len = pMib->aData.TemplateFrame.Length; - tSetTemplate.ptr = (TI_UINT8 *) &(pMib->aData.TemplateFrame.Data); - tSetTemplate.uRateMask = uRateMask; - - return TWD_CmdTemplate (hTWD, &tSetTemplate, NULL, NULL); -} - -/** - * \brief Set Beacon Filter IE Table - * - * \param hTWD - TWD module object handle - * \param pMib - Pointer to Input MIB Structure - * \return TI_OK on success or TI_NOK on failure - * - * \par Description - * Static function - * Configure the MIB Beacon Filter IE table - * - * \sa - */ -static TI_STATUS TWD_WriteMibBeaconFilterIETable (TI_HANDLE hTWD, TMib *pMib) -{ - TTwd *pTWD = (TTwd *)hTWD; - TI_UINT8 numOf221IE = 0; - TI_UINT8 i = 0; - TI_UINT8 IETableLen = 0; - TI_UINT8 numOfIEs = 0; - TI_UINT8 *IETable = NULL; - - numOfIEs = pMib->aData.BeaconFilter.iNumberOfIEs; - IETable = pMib->aData.BeaconFilter.iIETable; - /* Find the actual IETableLen */ - for (i = 0; i < numOfIEs; i++) - { - if (IETable[IETableLen] == 0xdd) - { - IETableLen += 8; - numOf221IE++; - } - else - { - IETableLen += 2; - } - } - - TRACE4(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_WriteMibBeaconFilterIETable: IETable=0x%x Num Of IE=%d ( including %d 221 ) - Table Len=%d\n", IETable, numOfIEs, numOf221IE, IETableLen); - - return TWD_CfgBeaconFilterTable (hTWD, numOfIEs, IETable, IETableLen); -} - -/** - * \brief Set Tx Rate Policy - * - * \param hTWD - TWD module object handle - * \param pMib - Pointer to Input MIB Structure - * \return TI_OK on success or TI_NOK on failure - * - * \par Description - * Static function - * Coordinates between legacy TxRatePolicy implementation and the MIB format: - * Converts the pGwsi_txRatePolicy back to command builder commands. - * Activates the TWD_set function. - * - * \sa - */ -static TI_STATUS TWD_WriteMibTxRatePolicy (TI_HANDLE hTWD, TMib* pMib) -{ - TTwd *pTWD = (TTwd *)hTWD; - -#ifdef TI_DBG - if (NULL == pMib) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR, "ERROR: TWD_WriteMibTxRatePolicy pMib=NULL !!!"); - return TI_NOK; - } -#endif /* TI_DBG */ - - return cmdBld_CfgTxRatePolicy (pTWD->hCmdBld, &pMib->aData.txRatePolicy, NULL, NULL); -} - -TI_STATUS TWD_WriteMib (TI_HANDLE hTWD, TMib *pMib) -{ - TTwd *pTWD = (TTwd *)hTWD; - -#ifdef TI_DBG - TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_WriteMib :pMib %p:\n",pMib); - - TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_WriteMib :aMib %x:\n",pMib->aMib); - - TRACE_INFO_HEX(pTWD->hReport, (TI_UINT8*)pMib, TI_MIN (sizeof(TMib), pMib->Length)); -#endif /* TI_DBG */ - - if (NULL == pMib) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_WriteMib :pMib = NULL !!\n"); - return PARAM_VALUE_NOT_VALID; - } - - switch (pMib->aMib) - { - case MIB_dot11MaxReceiveLifetime: - return cmdBld_CfgRxMsduLifeTime (pTWD->hCmdBld, pMib->aData.MaxReceiveLifeTime * 1024, (void *)NULL, (void *)NULL); - - case MIB_ctsToSelf: - return cmdBld_CfgCtsProtection (pTWD->hCmdBld, (TI_UINT8)pMib->aData.CTSToSelfEnable, (void *)NULL, (TI_HANDLE)NULL); - - case MIB_dot11GroupAddressesTable: - { - if (NULL == pMib->aData.GroupAddressTable.aGroupTable) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_WriteMib(MIB_dot11GroupAddressesTable) :GroupTable = NULL !!\n"); - return PARAM_VALUE_NOT_VALID; - } - - return TWD_CfgGroupAddressTable (hTWD, - pMib->aData.GroupAddressTable.nNumberOfAddresses, - pMib->aData.GroupAddressTable.aGroupTable, - pMib->aData.GroupAddressTable.bFilteringEnable); - } - - case MIB_arpIpAddressesTable: - { - TIpAddr IpAddress; - - IP_COPY (IpAddress, pMib->aData.ArpIpAddressesTable.addr); - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_WriteMib(MIB_arpIpAddressesTable) IpAddress:\n"); - TRACE_INFO_HEX(pTWD->hReport, (TI_UINT8*)&IpAddress, 4); - - return cmdBld_CfgArpIpAddrTable (pTWD->hCmdBld, - IpAddress, - (TI_BOOL)pMib->aData.ArpIpAddressesTable.FilteringEnable, - IP_VER_4, - NULL, - NULL); - } - - case MIB_templateFrame: - return TWD_WriteMibTemplateFrame (hTWD, pMib); - - case MIB_beaconFilterIETable: - return TWD_WriteMibBeaconFilterIETable (hTWD, pMib); - - case MIB_rxFilter: - { - TI_UINT32 uRxFilter = 0; - TI_UINT8 uMibRxFilter = pMib->aData.RxFilter; - - if (uMibRxFilter & MIB_RX_FILTER_PROMISCOUS_SET) - { - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "\n TWD_WriteMib MIB_rxFilter - RX_CFG_ENABLE_ANY_DEST_MAC\n"); - uRxFilter = RX_CFG_ENABLE_ANY_DEST_MAC; - } - else - { - uRxFilter = RX_CFG_ENABLE_ONLY_MY_DEST_MAC; - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "\n halCtrl_WriteMib MIB_rxFilter - RX_CFG_ENABLE_ONLY_MY_DEST_MAC\n"); - } - - if ((uMibRxFilter & MIB_RX_FILTER_BSSID_SET) != 0) - { - uRxFilter = uRxFilter | RX_CFG_ENABLE_ONLY_MY_BSSID; - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "\n halCtrl_WriteMib MIB_rxFilter - RX_CFG_ENABLE_ONLY_MY_BSSID\n"); - } - else - { - uRxFilter = uRxFilter | RX_CFG_ENABLE_ANY_BSSID; - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "\n halCtrl_WriteMib MIB_rxFilter - RX_CFG_ENABLE_ANY_BSSID\n"); - } - - /* - * Activates the TWD_setRxFilters function - */ - return TWD_CfgRx (hTWD, uRxFilter, RX_FILTER_OPTION_DEF); - } - - case MIB_txRatePolicy: - return TWD_WriteMibTxRatePolicy (hTWD, pMib); - - default: - TRACE1(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_WriteMib - ERROR - MIB element not supported, %d\n", pMib->aMib); - - return TI_NOK; - - } /* switch */ -} - -TI_STATUS TWD_ReadMib (TI_HANDLE hTWD, TI_HANDLE hCb, void* fCb, void* pCb) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ReadMib: called\n"); - - return cmdBld_ReadMib (pTWD->hCmdBld, hCb, fCb, pCb); -} - -void TWD_DisableInterrupts(TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_DisableInterrupts: called\n"); - - fwEvent_DisableInterrupts(pTWD->hFwEvent); -} - -void TWD_EnableInterrupts(TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_EnableInterrupts: called\n"); - - fwEvent_EnableInterrupts(pTWD->hFwEvent); -} - -TI_UINT32 TWD_TranslateToFwTime (TI_HANDLE hTWD, TI_UINT32 uHostTime) -{ - TTwd *pTWD = (TTwd *)hTWD; - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_TranslateToFwTime: called\n"); - - return fwEvent_TranslateToFwTime (pTWD->hFwEvent, uHostTime); -} - -void TWD_GetTwdHtCapabilities (TI_HANDLE hTWD, TTwdHtCapabilities **pTwdHtCapabilities) -{ - TTwd *pTWD = (TTwd *)hTWD; - TWlanParams *pWlanParams = &DB_WLAN(pTWD->hCmdBld); - - TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetTwdHtCapabilities: called\n"); - - *pTwdHtCapabilities = &(pWlanParams->tTwdHtCapabilities); -} - -/** - * \brief TWD get FEM type - * * - * \param Handle - handle to object - * \return uint8 - * - * \par Description - * The function return the Front end module that was read frm FW register * - * \sa - */ -TI_UINT8 TWD_GetFEMType (TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - IniFileGeneralParam *pGenParams = &DB_GEN(pTWD->hCmdBld); - - return pGenParams->TXBiPFEMManufacturer; - -} - -/** - * \brief TWD end function of read radio state machine - * * * - * \param Handle - handle to object - * \return void - * - * \par Description - * The function calling to HwInit call back function, after finish reading FEM registers * - * \sa - */ -void TWD_FinalizeFEMRead(TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - - (*pTWD->fInitHwCb) (pTWD->hUser, TI_OK); -} - - - - -void TWD_FinalizePolarityRead(TI_HANDLE hTWD) -{ - TTwd *pTWD = (TTwd *)hTWD; - /* allways read FEM type from Radio Registers */ - hwInit_ReadRadioParams(pTWD->hHwInit); -} |