diff options
Diffstat (limited to 'wl1271/TWD/Ctrl/CmdBld.c')
-rw-r--r-- | wl1271/TWD/Ctrl/CmdBld.c | 2597 |
1 files changed, 0 insertions, 2597 deletions
diff --git a/wl1271/TWD/Ctrl/CmdBld.c b/wl1271/TWD/Ctrl/CmdBld.c deleted file mode 100644 index 82b3d0c..0000000 --- a/wl1271/TWD/Ctrl/CmdBld.c +++ /dev/null @@ -1,2597 +0,0 @@ -/* - * CmdBld.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 CmdBld.c - * \brief Command builder main - * - * \see CmdBld.h - */ -#define __FILE_ID__ FILE_ID_90 -#include "TWDriver.h" -#include "osApi.h" -#include "tidef.h" -#include "report.h" -#include "public_infoele.h" -#include "CmdBld.h" -#include "txResult_api.h" -#include "CmdBldCmdIE.h" -#include "CmdBldCfgIE.h" -#include "CmdBldItrIE.h" -#include "CmdQueue_api.h" -#include "eventMbox_api.h" -#include "TWDriverInternal.h" -#include "HwInit_api.h" - -#define DEFAULT_TRACE_ENABLE 0 -#define DEFAULT_TRACE_OUT 0 - -#define DEFAULT_PBCC_DYNAMIC_ENABLE_VAL 0 -#define DEFAULT_PBCC_DYNAMIC_INTERVAL 500 -#define DEFAULT_PBCC_DYNAMIC_IGNORE_MCAST 0 - -#define DEFAULT_HW_RADIO_CHANNEL 11 - -#define DEFAULT_CW_MIN 15 - -#define DEFAULT_USE_DEVICE_ERROR_INTERRUPT 1 - -#define DEFAULT_UCAST_PRIORITY 0 - -#define DEFAULT_NUM_STATIONS 1 - -/* only for AP */ -/* 8 increase number of BC frames */ -#define DEFAULT_NUM_BCAST_TX_DESC 16 - -#define DEFAULT_BCAST_PRIORITY 0x81 - -/* hw access method*/ -typedef enum -{ - HW_ACCESS_BUS_SLAVE_INDIRECT = 0, - HW_ACCESS_BUS_SLAVE_DIRECT = 1, - HW_ACCESS_BUS_MASTER = 2 - -} EHwAccessMethod; - -typedef int (*TConfigFwCb) (TI_HANDLE, TI_STATUS); - - -static TI_STATUS cmdBld_ConfigSeq (TI_HANDLE hCmdBld); -static TI_STATUS cmdBld_GetCurrentAssociationId (TI_HANDLE hCmdBld, TI_UINT16 *pAidVal); -static TI_STATUS cmdBld_GetArpIpAddressesTable (TI_HANDLE hCmdBld, TIpAddr *pIpAddr, TI_UINT8 *pEnabled , EIpVer *pIpVer); -static TI_STATUS cmdBld_JoinCmpltForReconfigCb (TI_HANDLE hCmdBld); -static TI_STATUS cmdBld_DummyCb (TI_HANDLE hCmdBld); - - - - -TI_HANDLE cmdBld_Create (TI_HANDLE hOs) -{ - TCmdBld *pCmdBld; - TI_UINT32 uNumOfStations; - TI_UINT32 i; - - /* Allocate the command builder */ - pCmdBld = (TCmdBld *)os_memoryAlloc (hOs, sizeof(TCmdBld)); - if (pCmdBld == NULL) - { - WLAN_OS_REPORT(("cmdBld_Create: Error memory allocation\n")); - return NULL; - } - os_memoryZero (hOs, (void *)pCmdBld, sizeof(TCmdBld)); - - pCmdBld->hOs = hOs; - - /* Create the Params object */ - /* make this code flat, move it to configure */ - { - TWlanParams *pWlanParams = &DB_WLAN(pCmdBld); - TDmaParams *pDmaParams = &DB_DMA(pCmdBld); - TBssInfoParams *pBssInfoParams = &DB_BSS(pCmdBld); - TGenCounters *pGenCounters = &DB_CNT(pCmdBld); - - /* General counters */ - pGenCounters->FcsErrCnt = 0; - - /* BSS info paramaters */ - pBssInfoParams->RadioChannel = DEFAULT_HW_RADIO_CHANNEL; - pBssInfoParams->Ctrl = 0; - /* - * Intilaize the ctrl field in the BSS join structure - * Only bit_7 in the ctrl field is vurrently in use. - * If bit_7 is on => Doing Tx flash before joining new AP - */ - pBssInfoParams->Ctrl |= JOIN_CMD_CTRL_TX_FLUSH; - - /* WLAN parameters*/ - - /* Init filters as station (start/join with BssType will overwrite the values) */ - cmdBld_SetRxFilter ((TI_HANDLE)pCmdBld, RX_CONFIG_OPTION_MY_DST_MY_BSS, RX_FILTER_OPTION_FILTER_ALL); - pWlanParams->UseDeviceErrorInterrupt = DEFAULT_USE_DEVICE_ERROR_INTERRUPT; - /* Initialize the params object database fields */ - pWlanParams->hwAccessMethod = HW_ACCESS_BUS_SLAVE_INDIRECT; - pWlanParams->maxSitesFragCollect = TWD_SITE_FRAG_COLLECT_DEF; - pWlanParams->RtsThreshold = TWD_RTS_THRESHOLD_DEF; - pWlanParams->bJoin = TI_FALSE; - /* Soft Gemini defaults */ - pWlanParams->SoftGeminiEnable = SG_DISABLE; - /* Beacon filter defaults */ - pWlanParams->beaconFilterParams.desiredState = TI_FALSE; - pWlanParams->beaconFilterParams.numOfElements = DEF_NUM_STORED_FILTERS; - pWlanParams->beaconFilterIETable.numberOfIEs = DEF_BEACON_FILTER_IE_TABLE_NUM; - pWlanParams->beaconFilterIETable.IETableSize = BEACON_FILTER_IE_TABLE_DEF_SIZE; - /* Roaming parameters */ - pWlanParams->roamTriggers.BssLossTimeout = NO_BEACON_DEFAULT_TIMEOUT; - pWlanParams->roamTriggers.TsfMissThreshold = OUT_OF_SYNC_DEFAULT_THRESHOLD; - /* CoexActivity table */ - pWlanParams->tWlanParamsCoexActivityTable.numOfElements = COEX_ACTIVITY_TABLE_DEF_NUM; - - /* DMA parameters */ - /* Initialize the Params object database fields*/ - pDmaParams->NumStations = DEFAULT_NUM_STATIONS; - uNumOfStations = (TI_UINT32)pDmaParams->NumStations; - /* - * loop an all rssi_snr triggers and initialize only index number. - * Reason: 'index' not initialized --> 'index = 0' --> triggers 1..7 will overrun trigger '0' in cmdBld_ConfigSeq - */ - for (i = 0; i < NUM_OF_RSSI_SNR_TRIGGERS ; i++) - { - pWlanParams->tRssiSnrTrigger[i].index = i; - } - } - - pCmdBld->uLastElpCtrlMode = ELPCTRL_MODE_NORMAL; - - /* Create security objects */ - pCmdBld->tSecurity.eSecurityMode = TWD_CIPHER_NONE; - pCmdBld->tSecurity.uNumOfStations = uNumOfStations; - DB_KEYS(pCmdBld).pReconfKeys = (TSecurityKeys*)os_memoryAlloc (hOs, - sizeof(TSecurityKeys) * (uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS)); - os_memoryZero (hOs, - (void *)(DB_KEYS(pCmdBld).pReconfKeys), - sizeof(TSecurityKeys) * (uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS)); - - - WLAN_INIT_REPORT(("cmdBld_Create end %x\n",(TI_HANDLE)pCmdBld)); - - return (TI_HANDLE)pCmdBld; -} - - -TI_STATUS cmdBld_Destroy (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TDmaParams *pDmaParams = NULL; - TI_UINT32 uNumOfStations; - - if (pCmdBld == NULL) - { - return TI_OK; - } - - pDmaParams = &DB_DMA(hCmdBld); - - uNumOfStations = (TI_UINT32)pDmaParams->NumStations; - - if (DB_KEYS(pCmdBld).pReconfKeys) - { - os_memoryFree (pCmdBld->hOs, - DB_KEYS(pCmdBld).pReconfKeys, - sizeof(TSecurityKeys) * (uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS)); - } - - /* free the whalCtrl data structure */ - os_memoryFree (pCmdBld->hOs, pCmdBld, sizeof(TCmdBld)); - - return TI_OK; -} - -TI_STATUS cmdBld_Restart (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - /* This init is for recovery stage */ - pCmdBld->uLastElpCtrlMode = ELPCTRL_MODE_NORMAL; - - /* - * This call is to have the recovery process in AWAKE mode - * Prevent move to sleep mode between Hw_Init and Fw_Init - */ - cmdBld_CfgIeSleepAuth (hCmdBld, DB_WLAN(hCmdBld).minPowerLevel, NULL, NULL); - - return TI_OK; -} - -TI_STATUS cmdBld_Config (TI_HANDLE hCmdBld, - TI_HANDLE hReport, - void *fFinalizeDownload, - TI_HANDLE hFinalizeDownload, - TI_HANDLE hEventMbox, - TI_HANDLE hCmdQueue, - TI_HANDLE hTwIf) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TI_UINT32 index; - - pCmdBld->hReport = hReport; - pCmdBld->fFinalizeDownload = fFinalizeDownload; - pCmdBld->hFinalizeDownload = hFinalizeDownload; - pCmdBld->hEventMbox = hEventMbox; - pCmdBld->hCmdQueue = hCmdQueue; - pCmdBld->hTwIf = hTwIf; - - /* Reset all reconfig valid fields*/ - DB_KEYS(pCmdBld).bHwEncDecrEnableValid = TI_FALSE; - DB_KEYS(pCmdBld).bDefaultKeyIdValid = TI_FALSE; - for (index = 0; - index < pCmdBld->tSecurity.uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS; - index++) - (DB_KEYS(pCmdBld).pReconfKeys + index)->keyType = KEY_NULL; - - - return TI_OK; -} - - - -static void cmdBld_ConfigFwCb (TI_HANDLE hCmdBld, TI_STATUS status, void *pData) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - MemoryMap_t *pMemMap = &pCmdBld->tMemMap; - TDmaParams *pDmaParams = &DB_DMA(hCmdBld); - - /* Arrived from callback */ - if (pData) - { - TI_UINT32 *pSwap, i, uMemMapNumFields; - - /* Solve endian problem (all fields are 32 bit) */ - uMemMapNumFields = (sizeof(MemoryMap_t) - sizeof(EleHdrStruct)) % 4; - pSwap = (TI_UINT32* )&(pMemMap->codeStart); - for (i = 0; i < uMemMapNumFields; i++) - { - pSwap[i] = ENDIAN_HANDLE_LONG(pSwap[i]); - } - } - - /* Save number of TX blocks */ - pDmaParams->NumTxBlocks = pMemMap->numTxMemBlks; - /* Firmware Control block is internally pointing to TxResultInterface structure */ - pDmaParams->fwTxResultInterface = pMemMap->trqBlock.controlBlock; - pDmaParams->fwRxCBufPtr = pMemMap->rxCBufPtr; - pDmaParams->fwTxCBufPtr = pMemMap->txCBufPtr; - pDmaParams->fwRxControlPtr = pMemMap->rxControlPtr; - pDmaParams->fwTxControlPtr = pMemMap->txControlPtr; - - pDmaParams->PacketMemoryPoolStart = (TI_UINT32)pMemMap->packetMemoryPoolStart; - - /* Indicate that the reconfig process is over. */ - pCmdBld->bReconfigInProgress = TI_FALSE; - - /* Call the upper layer callback */ - (*((TConfigFwCb)pCmdBld->fConfigFwCb)) (pCmdBld->hConfigFwCb, TI_OK); -} - - -/**************************************************************************** - * cmdBld_ConfigFw() - **************************************************************************** - * DESCRIPTION: Configure the WLAN firmware - * - * INPUTS: None - * - * OUTPUT: None - * - * RETURNS: TI_OK or TI_NOK - ****************************************************************************/ -TI_STATUS cmdBld_ConfigFw (TI_HANDLE hCmdBld, void *fConfigFwCb, TI_HANDLE hConfigFwCb) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - pCmdBld->fConfigFwCb = fConfigFwCb; - pCmdBld->hConfigFwCb = hConfigFwCb; - pCmdBld->uIniSeq = 0; - pCmdBld->bReconfigInProgress = TI_TRUE; - /* should be re-initialized for recovery, pCmdBld->uLastElpCtrlMode = ELPCTRL_MODE_KEEP_AWAKE; */ - - /* Start configuration sequence */ - return cmdBld_ConfigSeq (hCmdBld); -} - - -typedef TI_STATUS (*TCmdCfgFunc) (TI_HANDLE); - - -static TI_STATUS __cmd_probe_req (TI_HANDLE hCmdBld) -{ - TI_STATUS tStatus = TI_OK; - - /* keep space for 2.4 GHz probe request */ - tStatus = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).probeRequestTemplateSize, - CFG_TEMPLATE_PROBE_REQ_2_4, - 0, - NULL, - NULL); - if (TI_OK != tStatus) - { - return tStatus; - } - - /* keep space for 5.0 GHz probe request */ - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).probeRequestTemplateSize, - CFG_TEMPLATE_PROBE_REQ_5, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cmd_null_data (TI_HANDLE hCmdBld) -{ - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).nullTemplateSize, - TEMPLATE_NULL_DATA, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cmd_burst_mode_enable (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeBurstMode (hCmdBld, - DB_AC(hCmdBld).isBurstModeEnabled, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cmd_disconn (TI_HANDLE hCmdBld) -{ - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).disconnTemplateSize, - TEMPLATE_DISCONNECT, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cmd_ps_poll (TI_HANDLE hCmdBld) -{ - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).PsPollTemplateSize, - TEMPLATE_PS_POLL, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cmd_qos_null_data (TI_HANDLE hCmdBld) -{ - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).qosNullDataTemplateSize, - TEMPLATE_QOS_NULL_DATA, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cmd_probe_resp (TI_HANDLE hCmdBld) -{ - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).probeResponseTemplateSize, - TEMPLATE_PROBE_RESPONSE, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cmd_beacon (TI_HANDLE hCmdBld) -{ - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).beaconTemplateSize, - TEMPLATE_BEACON, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cmd_keep_alive_tmpl (TI_HANDLE hCmdBld) -{ - TI_UINT32 index; - TI_STATUS status = TI_NOK; - - /* - * config templates - * fisr configure all indexes but the last one with no CB, and than configure the last one - * with a CB to continue configuration. - */ - for (index = 0; index < KLV_MAX_TMPL_NUM - 1; index++) - { - status = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - MAX_TEMPLATES_SIZE, - TEMPLATE_KLV, - index, - NULL, - NULL); - if (TI_OK != status) - { - return status; - } - } - - status = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - MAX_TEMPLATES_SIZE, - TEMPLATE_KLV, - index, - (void *)cmdBld_ConfigSeq, - hCmdBld); - - return status; -} - - -static TI_STATUS __cfg_mem (TI_HANDLE hCmdBld) -{ - /* Configure the weight among the different hardware queues */ - return cmdBld_CfgIeConfigMemory (hCmdBld, &DB_DMA(hCmdBld), (void *)cmdBld_ConfigSeq, hCmdBld); -} - - -static TI_STATUS __cfg_rx_msdu_life_time (TI_HANDLE hCmdBld) -{ - /* Configure the Rx Msdu Life Time (expiry time of de-fragmentation in FW) */ - return cmdBld_CfgIeRxMsduLifeTime (hCmdBld, - DB_WLAN(hCmdBld).MaxRxMsduLifetime, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rx (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeRx (hCmdBld, - DB_WLAN(hCmdBld).RxConfigOption, - DB_WLAN(hCmdBld).RxFilterOption, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_ac_params_0 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - - if (DB_AC(hCmdBld).isAcConfigured[0]) - { - return cmdBld_CfgAcParams (hCmdBld, &DB_AC(hCmdBld).ac[0], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_ac_params_1 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - - if (DB_AC(hCmdBld).isAcConfigured[1]) - { - return cmdBld_CfgAcParams (hCmdBld, &DB_AC(hCmdBld).ac[1], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_ac_params_2 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - - if (DB_AC(hCmdBld).isAcConfigured[2]) - { - return cmdBld_CfgAcParams (hCmdBld, &DB_AC(hCmdBld).ac[2], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_ac_params_3 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - - if (DB_AC(hCmdBld).isAcConfigured[3]) - { - return cmdBld_CfgAcParams (hCmdBld, &DB_AC(hCmdBld).ac[3], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_tid_0 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - if (DB_QUEUES(hCmdBld).isQueueConfigured[0]) - { - return cmdBld_CfgTid (hCmdBld, &DB_QUEUES(hCmdBld).queues[0], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_tid_1 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - if (DB_QUEUES(hCmdBld).isQueueConfigured[1]) - { - return cmdBld_CfgTid (hCmdBld, &DB_QUEUES(hCmdBld).queues[1], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_tid_2 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - if (DB_QUEUES(hCmdBld).isQueueConfigured[2]) - { - return cmdBld_CfgTid (hCmdBld, &DB_QUEUES(hCmdBld).queues[2], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_tid_3 (TI_HANDLE hCmdBld) -{ - /* - * NOTE: Set following parameter only if configured. - * Otherwise, is contains garbage. - */ - if (DB_QUEUES(hCmdBld).isQueueConfigured[3]) - { - return cmdBld_CfgTid (hCmdBld, &DB_QUEUES(hCmdBld).queues[3], (void *)cmdBld_ConfigSeq, hCmdBld); - } - else - { - return TI_NOK; - } -} - - -static TI_STATUS __cfg_ps_rx_streaming (TI_HANDLE hCmdBld) -{ - TI_UINT32 index; - TI_STATUS eStatus; - TPsRxStreaming *pPsRxStreaming; - - - if (!DB_WLAN(hCmdBld).bJoin) - { - return TI_NOK; - } - - /* Config enabled streams (disable is the FW default). */ - for (index = 0; index < MAX_NUM_OF_802_1d_TAGS - 1; index++) - { - pPsRxStreaming = &(DB_PS_STREAM(hCmdBld).tid[index]); - - if (pPsRxStreaming->bEnabled) - { - eStatus = cmdBld_CfgPsRxStreaming (hCmdBld, pPsRxStreaming, NULL, NULL); - if (eStatus != TI_OK) - { - return eStatus; - } - } - } - - /* Set NOK for a case the following config is skipped, to indicate that no callback is expected */ - eStatus = TI_NOK; - - pPsRxStreaming = &(DB_PS_STREAM(hCmdBld).tid[MAX_NUM_OF_802_1d_TAGS - 1]); - if (pPsRxStreaming->bEnabled) - { - eStatus = cmdBld_CfgPsRxStreaming (hCmdBld, pPsRxStreaming, (void *)cmdBld_ConfigSeq, hCmdBld); - if (eStatus != TI_OK) - { - return eStatus; - } - } - - return eStatus; - } - - -static TI_STATUS __cfg_rx_data_filter (TI_HANDLE hCmdBld) -{ - TI_UINT32 index; - TI_STATUS eStatus; - TRxDataFilter *pFilters; - - - if (DB_RX_DATA_FLTR(hCmdBld).bEnabled) - { - eStatus = cmdBld_CfgIeEnableRxDataFilter (hCmdBld, - DB_RX_DATA_FLTR(hCmdBld).bEnabled, - DB_RX_DATA_FLTR(hCmdBld).eDefaultAction, - NULL, - NULL); - if (eStatus != TI_OK) - { - return eStatus; - } - } - - /* - * Config enabled filters (last one is separated to use the callback) - */ - for (index = 0; index < MAX_DATA_FILTERS - 1; index++) - { - pFilters = &(DB_RX_DATA_FLTR(hCmdBld).aRxDataFilter[index]); - - if (pFilters->uCommand == ADD_FILTER) - { - eStatus = cmdBld_CfgIeRxDataFilter (hCmdBld, - pFilters->uIndex, - pFilters->uCommand, - pFilters->eAction, - pFilters->uNumFieldPatterns, - pFilters->uLenFieldPatterns, - pFilters->aFieldPattern, - NULL, - NULL); - if (eStatus != TI_OK) - { - return eStatus; - } - } - } - - /* Set NOK for a case the following config is skipped, to indicate that no callback is expected */ - eStatus = TI_NOK; - - pFilters = &(DB_RX_DATA_FLTR(hCmdBld).aRxDataFilter[MAX_DATA_FILTERS - 1]); - if (pFilters->uCommand == ADD_FILTER) - { - eStatus = cmdBld_CfgIeRxDataFilter (hCmdBld, - pFilters->uIndex, - pFilters->uCommand, - pFilters->eAction, - pFilters->uNumFieldPatterns, - pFilters->uLenFieldPatterns, - pFilters->aFieldPattern, - (void *)cmdBld_ConfigSeq, - hCmdBld); - if (eStatus != TI_OK) - { - return eStatus; - } - } - - return eStatus; -} - - -static TI_STATUS __cfg_pd_threshold (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIePacketDetectionThreshold (hCmdBld, - DB_WLAN(hCmdBld).PacketDetectionThreshold, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_slot_time (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeSlotTime (hCmdBld, DB_WLAN(hCmdBld).SlotTime, (void *)cmdBld_ConfigSeq, hCmdBld); -} - - -static TI_STATUS __cfg_arp_ip_filter (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeArpIpFilter (hCmdBld, - DB_WLAN(hCmdBld).arp_IP_addr, - (EArpFilterType)DB_WLAN(hCmdBld).arpFilterType, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cfg_group_address_table (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeGroupAdressTable (hCmdBld, - DB_WLAN(hCmdBld).numGroupAddrs, - DB_WLAN(hCmdBld).aGroupAddr, - DB_WLAN(hCmdBld).isMacAddrFilteringnabled, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_service_period_timeout (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeServicePeriodTimeout (hCmdBld, - &DB_WLAN(hCmdBld).rxTimeOut, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rts_threshold (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgRtsThreshold (hCmdBld, - DB_WLAN(hCmdBld).RtsThreshold, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cfg_dco_itrim_params (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgDcoItrimParams (hCmdBld, - DB_WLAN(hCmdBld).dcoItrimEnabled, - DB_WLAN(hCmdBld).dcoItrimModerationTimeoutUsec, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cfg_fragment_threshold (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeFragmentThreshold (hCmdBld, - DB_WLAN(hCmdBld).FragmentThreshold, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_pm_config (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIePmConfig (hCmdBld, - DB_WLAN(hCmdBld).uHostClkSettlingTime, - DB_WLAN(hCmdBld).uHostFastWakeupSupport, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_beacon_filter_opt (TI_HANDLE hCmdBld) -{ - /* Set The Beacon Filter in HAL */ - return cmdBld_CfgIeBeaconFilterOpt (hCmdBld, - DB_WLAN(hCmdBld).beaconFilterParams.desiredState, - DB_WLAN(hCmdBld).beaconFilterParams.numOfElements, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_beacon_filter_table (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeBeaconFilterTable (hCmdBld, - DB_WLAN(hCmdBld).beaconFilterIETable.numberOfIEs, - DB_WLAN(hCmdBld).beaconFilterIETable.IETable, - DB_WLAN(hCmdBld).beaconFilterIETable.IETableSize, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_tx_cmplt_pacing (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeTxCmpltPacing (hCmdBld, - DB_WLAN(hCmdBld).TxCompletePacingThreshold, - DB_WLAN(hCmdBld).TxCompletePacingTimeout, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rx_intr_pacing (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeRxIntrPacing (hCmdBld, - DB_WLAN(hCmdBld).RxIntrPacingThreshold, - DB_WLAN(hCmdBld).RxIntrPacingTimeout, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -#ifdef TI_TEST -static TI_STATUS __cfg_coex_activity_table (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TI_UINT32 uNumberOfIEs = DB_WLAN(hCmdBld).tWlanParamsCoexActivityTable.numOfElements; - TCoexActivity *CoexActivityTable = DB_WLAN(hCmdBld).tWlanParamsCoexActivityTable.entry; - TI_STATUS status = TI_NOK; - TI_UINT32 index; - - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , " CoexActivity, uNumberOfIEs=%d\n", uNumberOfIEs); - if (uNumberOfIEs == 0) - { - return status; - } - /* - * config CoexActivity table - * first configure all indexes but the last one with no CB, and than configure the last one - * with a CB to continue configuration. - */ - for (index = 0; index < uNumberOfIEs-1; index++) - { - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , " CoexActivity, send %d\n", index); - status = cmdBld_CfgIeCoexActivity (hCmdBld, &CoexActivityTable[index], - NULL, NULL); - if (TI_OK != status) - { - return status; - } - } - - /* Send last activity with a callback to continue config sequence */ - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , " CoexActivity, send last %d\n", index); - status = cmdBld_CfgIeCoexActivity (hCmdBld, &CoexActivityTable[index], - (void *)cmdBld_ConfigSeq, hCmdBld); - - return status; -} -#endif - -static TI_STATUS __cfg_cca_threshold (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeCcaThreshold (hCmdBld, - DB_WLAN(hCmdBld).ch14TelecCca, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_bcn_brc_options (TI_HANDLE hCmdBld) -{ - TPowerMgmtConfig powerMgmtConfig; - - /* Beacon broadcast options */ - powerMgmtConfig.BcnBrcOptions = DB_WLAN(hCmdBld).BcnBrcOptions; - powerMgmtConfig.ConsecutivePsPollDeliveryFailureThreshold = DB_WLAN(hCmdBld).ConsecutivePsPollDeliveryFailureThreshold; - - return cmdBld_CfgIeBcnBrcOptions (hCmdBld, - &powerMgmtConfig, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cmd_enable_rx (TI_HANDLE hCmdBld) -{ - /* Enable rx path on the hardware */ - return cmdBld_CmdEnableRx (hCmdBld, (void *)cmdBld_ConfigSeq, hCmdBld); -} - - -static TI_STATUS __cmd_enable_tx (TI_HANDLE hCmdBld) -{ - /* Enable tx path on the hardware */ - return cmdBld_CmdEnableTx (hCmdBld, - DB_DEFAULT_CHANNEL(hCmdBld), - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_ps_wmm (TI_HANDLE hCmdBld) -{ - /* ACX for a work around for Wi-Fi test */ - return cmdBld_CfgIePsWmm (hCmdBld, - DB_WLAN(hCmdBld).WiFiWmmPS, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_weights (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Weights for Average calculations */ - return cmdBld_CfgIeRssiSnrWeights (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrWeights, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_event_scan_cmplt (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - /* Enable the scan complete interrupt source */ - return eventMbox_UnMaskEvent (pCmdBld->hEventMbox, - TWD_OWN_EVENT_SCAN_CMPLT, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cfg_event_sps_scan_cmplt (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - return eventMbox_UnMaskEvent (pCmdBld->hEventMbox, - TWD_OWN_EVENT_SPS_SCAN_CMPLT, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cfg_event_plt_rx_calibration_cmplt (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - return eventMbox_UnMaskEvent (pCmdBld->hEventMbox, - TWD_OWN_EVENT_PLT_RX_CALIBRATION_COMPLETE, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_hw_enc_dec_enable (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgHwEncDecEnable (hCmdBld, TI_TRUE, (void *)cmdBld_ConfigSeq, hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_0 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[0], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_1 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[1], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_2 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[2], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_3 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[3], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_4 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[4], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_5 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[5], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_6 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[6], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rssi_snr_trigger_7 (TI_HANDLE hCmdBld) -{ - /* RSSI/SNR Troggers */ - return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, - &DB_WLAN(hCmdBld).tRssiSnrTrigger[7], - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_max_tx_retry (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeMaxTxRetry (hCmdBld, - &DB_WLAN(hCmdBld).roamTriggers, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - - -static TI_STATUS __cfg_split_scan_timeout (TI_HANDLE hCmdBld) -{ - return cmdBld_CmdIeSetSplitScanTimeOut (hCmdBld, - DB_WLAN(hCmdBld).uSlicedScanTimeOut, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_conn_monit_params (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeConnMonitParams (hCmdBld, - &DB_WLAN(hCmdBld).roamTriggers, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_bet (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgBet (hCmdBld, - DB_WLAN(hCmdBld).BetEnable, - DB_WLAN(hCmdBld).MaximumConsecutiveET, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_cts_protection (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeCtsProtection (hCmdBld, - DB_WLAN(hCmdBld).CtsToSelf, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_radio_params (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeRadioParams (hCmdBld, - &DB_RADIO(hCmdBld), - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_extended_radio_params (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeExtendedRadioParams (hCmdBld, - &DB_EXT_RADIO(hCmdBld), - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_platform_params (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgPlatformGenParams(hCmdBld, - &DB_GEN(hCmdBld), - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - - -static TI_STATUS __cfg_tx_rate_policy (TI_HANDLE hCmdBld) -{ - /* - * JOIN (use the local parameters), otherwize the CORE will reconnect - */ - if (DB_WLAN(hCmdBld).bJoin) - { - /* Set TxRatePolicy */ - return cmdBld_CfgTxRatePolicy (hCmdBld, - &DB_BSS(hCmdBld).TxRateClassParams, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cmd_beacon_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin && DB_TEMP(hCmdBld).Beacon.Size != 0) - { - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).Beacon), - (TI_UINT16)DB_TEMP(hCmdBld).Beacon.Size, - TEMPLATE_BEACON, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - -static TI_STATUS __cmd_probe_resp_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin && DB_TEMP(hCmdBld).ProbeResp.Size != 0) - { - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).ProbeResp), - (TI_UINT16)DB_TEMP(hCmdBld).ProbeResp.Size, - TEMPLATE_PROBE_RESPONSE, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cmd_probe_req_join (TI_HANDLE hCmdBld) -{ - TI_STATUS tStatus; - - /* set Probe Req template also if join == false ! */ - if (DB_TEMP(hCmdBld).ProbeReq24.Size != 0) - { - tStatus = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).ProbeReq24), - (TI_UINT16)DB_TEMP(hCmdBld).ProbeReq24.Size, - CFG_TEMPLATE_PROBE_REQ_2_4, - 0, - NULL, - NULL); - if (TI_OK != tStatus) - { - return tStatus; - } - } - - /* set Probe Req template also if join == false ! */ - if (DB_TEMP(hCmdBld).ProbeReq50.Size != 0) - { - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).ProbeReq50), - (TI_UINT16)DB_TEMP(hCmdBld).ProbeReq50.Size, - CFG_TEMPLATE_PROBE_REQ_5, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cmd_null_data_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin && DB_TEMP(hCmdBld).NullData.Size != 0) - { - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).NullData), - (TI_UINT16)DB_TEMP(hCmdBld).NullData.Size, - TEMPLATE_NULL_DATA, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - -static TI_STATUS __cmd_disconn_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin && DB_TEMP(hCmdBld).Disconn.Size != 0) - { - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).Disconn), - (TI_UINT16)DB_TEMP(hCmdBld).Disconn.Size, - TEMPLATE_DISCONNECT, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - -static TI_STATUS __cmd_ps_poll_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin && DB_TEMP(hCmdBld).PsPoll.Size != 0) - { - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).PsPoll), - (TI_UINT16)DB_TEMP(hCmdBld).PsPoll.Size, - TEMPLATE_PS_POLL, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - -static TI_STATUS __cmd_arp_rsp (TI_HANDLE hCmdBld) -{ - - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - NULL, - DB_WLAN(hCmdBld).ArpRspTemplateSize, - TEMPLATE_ARP_RSP, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cmd_arp_rsp_join (TI_HANDLE hCmdBld) -{ - - if ((DB_WLAN(hCmdBld).bJoin) && (DB_TEMP(hCmdBld).ArpRsp.Size != 0)) - { - return cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).ArpRsp), - DB_TEMP(hCmdBld).ArpRsp.Size, - TEMPLATE_ARP_RSP, - 0, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - - - - -static TI_STATUS __cmd_keep_alive_tmpl_join (TI_HANDLE hCmdBld) -{ - TI_UINT32 index; - TI_STATUS status = TI_NOK; - - /* - * config templates - * first configure all indexes but the last one with no CB, and than configure the last one - * with a CB to continue configuration. - */ - for (index = 0; index < KLV_MAX_TMPL_NUM - 1; index++) - { - if (DB_WLAN(hCmdBld).bJoin && DB_TEMP(hCmdBld).KeepAlive[ index ].Size != 0) - { - status = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).KeepAlive[index]), - (TI_UINT16)DB_TEMP(hCmdBld).KeepAlive[index].Size, - TEMPLATE_KLV, - index, - NULL, - NULL); - if (TI_OK != status) - { - return status; - } - } - } - - if (DB_WLAN(hCmdBld).bJoin && DB_TEMP(hCmdBld).KeepAlive[ index ].Size != 0) - { - status = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, - &(DB_TEMP(hCmdBld).KeepAlive[index]), - (TI_UINT16)DB_TEMP(hCmdBld).KeepAlive[index].Size, - TEMPLATE_KLV, - index, - (void *)cmdBld_ConfigSeq, - hCmdBld); - if (TI_OK != status) - { - return status; - } - } - - return status; -} - - -static TI_STATUS __cmd_keep_alive_params(TI_HANDLE hCmdBld) -{ - TI_UINT32 index; - TI_STATUS status; - - /* config gloabl enable / disable flag */ - cmdBld_CfgKeepAliveEnaDis (hCmdBld, DB_KLV(hCmdBld).enaDisFlag, NULL, NULL); - - /* - * config per-template params - * fisr configure all indexes but the last one with no CB, and than configure the last one - * with a CB to continue configuration. - */ - for (index = 0; index < KLV_MAX_TMPL_NUM - 1; index++) - { - if (DB_WLAN(hCmdBld).bJoin && DB_KLV(hCmdBld).keepAliveParams[ index ].enaDisFlag != 0) - { - status = cmdBld_CmdIeConfigureKeepAliveParams (hCmdBld, - index, - DB_KLV(hCmdBld).keepAliveParams[ index ].enaDisFlag, - DB_KLV(hCmdBld).keepAliveParams[ index ].trigType, - DB_KLV(hCmdBld).keepAliveParams[ index ].interval, - NULL, - NULL); - if (TI_OK != status) - { - return status; - } - } - } - - /* Set NOK for a case the following config is skipped, to indicate that no callback is expected */ - status = TI_NOK; - - if (DB_WLAN(hCmdBld).bJoin && DB_KLV(hCmdBld).keepAliveParams[ index ].enaDisFlag != 0) - { - status = cmdBld_CmdIeConfigureKeepAliveParams (hCmdBld, - index, - DB_KLV(hCmdBld).keepAliveParams[ index ].enaDisFlag, - DB_KLV(hCmdBld).keepAliveParams[ index ].trigType, - DB_KLV(hCmdBld).keepAliveParams[ index ].interval, - (void *)cmdBld_ConfigSeq, - hCmdBld); - if (TI_OK != status) - { - return status; - } - } - - return status; -} - -static TI_STATUS __cmd_power_auth (TI_HANDLE hCmdBld) -{ - return cmdBld_CfgIeSleepAuth (hCmdBld, - DB_WLAN(hCmdBld).minPowerLevel, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - -static TI_STATUS __cmd_start_join (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - if (DB_WLAN(hCmdBld).bJoin) - { - /* - * Replace the Join-Complete event CB by a local function. - * Thus, the reconfig sequence will not continue until the Join is completed! - * The original CB is restored after Join-Complete. - */ - eventMbox_ReplaceEvent (pCmdBld->hEventMbox, - TWD_OWN_EVENT_JOIN_CMPLT, - (void *)cmdBld_JoinCmpltForReconfigCb, - hCmdBld, - &pCmdBld->fJoinCmpltOriginalCbFunc, - &pCmdBld->hJoinCmpltOriginalCbHndl); - /* - * Call the hardware to start/join the bss - */ - return cmdBld_CmdStartJoin (hCmdBld, - (ScanBssType_e)DB_BSS(hCmdBld).ReqBssType, - (void *)cmdBld_DummyCb, - hCmdBld); - } - - return TI_NOK; -} - -static TI_STATUS __cmd_sta_state (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bStaConnected) - { - return cmdBld_CmdSetStaState (hCmdBld, - STA_STATE_CONNECTED, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - -static TI_STATUS __cfg_aid (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin) - { - return cmdBld_CfgAid (hCmdBld, DB_WLAN(hCmdBld).Aid, (void *)cmdBld_ConfigSeq, hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cfg_slot_time_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin) - { - /* Slot time must be setting after doing join */ - return cmdBld_CfgSlotTime (hCmdBld, (ESlotTime)(DB_WLAN(hCmdBld).SlotTime), (void *)cmdBld_ConfigSeq, hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cfg_preamble_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin) - { - /* Preamble type must be set after doing join */ - return cmdBld_CfgPreamble (hCmdBld, (Preamble_e) DB_WLAN(hCmdBld).preamble, (void *)cmdBld_ConfigSeq, hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cfg_ht_capabilities (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin && DB_BSS(hCmdBld).bHtCap) - { - /* HT capabilities must be set after doing join */ - return cmdBld_CfgIeSetFwHtCapabilities (hCmdBld, - DB_BSS(hCmdBld).uHtCapabilites, - DB_BSS(hCmdBld).tMacAddress, - DB_BSS(hCmdBld).uAmpduMaxLeng, - DB_BSS(hCmdBld).uAmpduMinSpac, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cfg_ht_information (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin && DB_BSS(hCmdBld).bHtInf) - { - /* HT Information must be set after doing join */ - return cmdBld_CfgIeSetFwHtInformation (hCmdBld, - DB_BSS(hCmdBld).uRifsMode, - DB_BSS(hCmdBld).uHtProtection, - DB_BSS(hCmdBld).uGfProtection, - DB_BSS(hCmdBld).uHtTxBurstLimit, - DB_BSS(hCmdBld).uDualCtsProtection, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cfg_ba_set_session (TI_HANDLE hCmdBld) -{ - TI_STATUS tRes = TI_NOK; - - if (DB_WLAN(hCmdBld).bJoin) - { - TI_UINT32 uTid; - TI_UINT32 uLastTid = MAX_NUM_OF_802_1d_TAGS; /* initial value is "not found" */ - - /* Look through configured BA sessions in data base to find the last set TID */ - for (uTid = 0; uTid < MAX_NUM_OF_802_1d_TAGS; uTid++) - { - /* Is BA initiator or responder configured? */ - if (DB_BSS(hCmdBld).bBaInitiator[uTid] || DB_BSS(hCmdBld).bBaResponder[uTid]) - { - uLastTid = uTid; - } - } - - if (uLastTid != MAX_NUM_OF_802_1d_TAGS) - { - /* At least one TID is set */ - for (uTid = 0; uTid < uLastTid; ++uTid) - { - if (DB_BSS(hCmdBld).bBaInitiator[uTid]) - { - /* set BA Initiator */ - tRes = cmdBld_CfgIeSetBaSession (hCmdBld, - ACX_BA_SESSION_INITIATOR_POLICY, - uTid, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].uPolicy, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].aMacAddress, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].uWinSize, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].uInactivityTimeout, - NULL, - NULL); - if (tRes != TI_OK) - { - return tRes; - } - } - - if (DB_BSS(hCmdBld).bBaResponder[uTid]) - { - /* set BA Responder */ - tRes = cmdBld_CfgIeSetBaSession (hCmdBld, - ACX_BA_SESSION_RESPONDER_POLICY, - uTid, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].uPolicy, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].aMacAddress, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].uWinSize, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].uInactivityTimeout, - NULL, - NULL); - if (tRes != TI_OK) - { - return tRes; - } - } - } - - /* Push the last command of the last TID entry into queue with a call back function */ - if (DB_BSS(hCmdBld).bBaInitiator[uLastTid] && !(DB_BSS(hCmdBld).bBaResponder[uLastTid])) - { - - tRes = cmdBld_CfgIeSetBaSession (hCmdBld, - ACX_BA_SESSION_INITIATOR_POLICY, - uLastTid, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].uPolicy, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].aMacAddress, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].uWinSize, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].uInactivityTimeout, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - else if (!(DB_BSS(hCmdBld).bBaInitiator[uLastTid]) && DB_BSS(hCmdBld).bBaResponder[uLastTid]) - { - tRes = cmdBld_CfgIeSetBaSession (hCmdBld, - ACX_BA_SESSION_RESPONDER_POLICY, - uLastTid, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].uPolicy, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].aMacAddress, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].uWinSize, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].uInactivityTimeout, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - else - { - /* Initiator & Responsder policy is to be set */ - tRes = cmdBld_CfgIeSetBaSession (hCmdBld, - ACX_BA_SESSION_INITIATOR_POLICY, - uLastTid, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].uPolicy, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].aMacAddress, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].uWinSize, - DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uLastTid].uInactivityTimeout, - NULL, - NULL); - if (tRes != TI_OK) - { - return tRes; - } - - tRes = cmdBld_CfgIeSetBaSession (hCmdBld, - ACX_BA_SESSION_RESPONDER_POLICY, - uLastTid, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].uPolicy, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].aMacAddress, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].uWinSize, - DB_BSS(hCmdBld).tBaSessionResponderPolicy[uLastTid].uInactivityTimeout, - (void *)cmdBld_ConfigSeq, - hCmdBld); - } - } - } - - return tRes; -} - - -static TI_STATUS __cfg_tx_power_join (TI_HANDLE hCmdBld) -{ - if (DB_WLAN(hCmdBld).bJoin) - { - /* Tx-power must be set after doing join */ - return cmdBld_CfgTxPowerDbm (hCmdBld, DB_WLAN(hCmdBld).TxPowerDbm, (void *)cmdBld_ConfigSeq, hCmdBld); - } - - return TI_NOK; -} - - -static TI_STATUS __cfg_keys (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TI_UINT32 index; - - if (!DB_WLAN(hCmdBld).bJoin) - { - return TI_NOK; - } - - if (pCmdBld->tSecurity.eSecurityMode != TWD_CIPHER_NONE) - { - /* - * We are doing recovery during security so increase security-sequence-number by 255 just to ensure - * the AP will see progress from last Tx before the recovery (actually needed only for TKIP and AES). - * Decrementing the low byte by one is handled like it wrpped around, i.e. increment total number by 255. - */ - cmdBld_SetSecuritySeqNum (hCmdBld, (TI_UINT8)(pCmdBld->uSecuritySeqNumLow - 1)); - - - /* set the keys to the HW*/ - for (index = 0; - index < pCmdBld->tSecurity.uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS; - index++) - { - if ((DB_KEYS(pCmdBld).pReconfKeys + index)->keyType != KEY_NULL) - { - if (cmdBld_CmdAddKey (hCmdBld, DB_KEYS(pCmdBld).pReconfKeys + index, TI_TRUE, NULL, NULL) != TI_OK) - { - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "__cfg_keys: ERROR cmdBld_CmdAddKey failure index=%d\n", index); - return TI_NOK; - } - } - } - - if (DB_KEYS(pCmdBld).bDefaultKeyIdValid) - { - /* Set the deafult key ID to the HW*/ - if (cmdBld_CmdSetWepDefaultKeyId (hCmdBld, DB_KEYS(pCmdBld).uReconfDefaultKeyId, NULL, NULL) != TI_OK) - { - TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "__cfg_keys: ERROR cmdBld_CmdSetWepDefaultKeyId failure\n"); - return TI_NOK; - } - } - } - - /* Set the encryption/decryption control on the HW */ - if (cmdBld_CfgHwEncDecEnable (hCmdBld, - DB_KEYS(pCmdBld).bReconfHwEncEnable, - (void *)cmdBld_ConfigSeq, - hCmdBld) != TI_OK) - { - TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "__cfg_keys: ERROR cmdBld_CfgHwEncDecEnable failure \n"); - return TI_NOK; - } - - return TI_OK; -} - -static TI_STATUS __cfg_sg_enable (TI_HANDLE hCmdBld) -{ - /* Set the Soft Gemini state */ - return cmdBld_CfgSgEnable (hCmdBld, - DB_WLAN(hCmdBld).SoftGeminiEnable, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_sg (TI_HANDLE hCmdBld) -{ - /* Set the Soft Gemini params */ - - /* signals the FW to config all the paramters from the DB*/ - DB_WLAN(hCmdBld).SoftGeminiParams.paramIdx = 0xFF; - - return cmdBld_CfgSg (hCmdBld, - &DB_WLAN(hCmdBld).SoftGeminiParams, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_fm_coex (TI_HANDLE hCmdBld) -{ - /* Set the FM Coexistence params */ - return cmdBld_CfgIeFmCoex (hCmdBld, - &DB_WLAN(hCmdBld).tFmCoexParams, - (void *)cmdBld_ConfigSeq, - hCmdBld); -} - - -static TI_STATUS __cfg_rate_management (TI_HANDLE hCmdBld) -{ - DB_RM(hCmdBld).rateMngParams.paramIndex = (rateAdaptParam_e) 0xFF; - - return cmdBld_CfgIeRateMngDbg(hCmdBld, - &DB_RM(hCmdBld).rateMngParams, - (void *)cmdBld_ConfigSeq, - hCmdBld); - -} - - -TI_STATUS __itr_memory_map (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - WLAN_OS_REPORT(("Interrogate TX/RX parameters\n")); - - /* Interrogate TX/RX parameters */ - return cmdBld_ItrIeMemoryMap (hCmdBld, - &pCmdBld->tMemMap, - (void *)cmdBld_ConfigFwCb, - hCmdBld); -} - - -static const TCmdCfgFunc aCmdIniSeq [] = -{ - __cfg_platform_params, - __cfg_radio_params, - __cfg_extended_radio_params, - __cmd_probe_req, - __cmd_null_data, - __cmd_disconn, - __cmd_ps_poll, - __cmd_qos_null_data, - __cmd_probe_resp, - __cmd_beacon, - __cmd_keep_alive_tmpl, - __cfg_mem, - __cfg_rx_msdu_life_time, - __cfg_rx, - __cfg_ac_params_0, - __cfg_tid_0, - __cfg_ac_params_1, - __cfg_tid_1, - __cfg_ac_params_2, - __cfg_tid_2, - __cfg_ac_params_3, - __cfg_tid_3, - __cfg_pd_threshold, - __cfg_slot_time, - __cmd_arp_rsp, - __cfg_arp_ip_filter, - __cfg_group_address_table, - __cfg_service_period_timeout, - __cfg_rts_threshold, - __cfg_dco_itrim_params, - __cfg_fragment_threshold, - __cfg_pm_config, - __cfg_beacon_filter_opt, - __cfg_beacon_filter_table, - __cfg_tx_cmplt_pacing, - __cfg_rx_intr_pacing, - __cfg_sg, - __cfg_sg_enable, - __cfg_fm_coex, - __cfg_cca_threshold, - __cfg_bcn_brc_options, - __cmd_enable_rx, - __cmd_enable_tx, - __cfg_ps_wmm, - __cfg_event_scan_cmplt, - __cfg_event_sps_scan_cmplt, - __cfg_event_plt_rx_calibration_cmplt, - __cfg_hw_enc_dec_enable, - __cfg_rssi_snr_weights, - __cfg_rssi_snr_trigger_0, - __cfg_rssi_snr_trigger_1, - __cfg_rssi_snr_trigger_2, - __cfg_rssi_snr_trigger_3, - __cfg_rssi_snr_trigger_4, - __cfg_rssi_snr_trigger_5, - __cfg_rssi_snr_trigger_6, - __cfg_rssi_snr_trigger_7, - __cfg_max_tx_retry, - __cfg_split_scan_timeout, - - /* Re-join sequence */ - __cfg_tx_rate_policy, - __cmd_beacon_join, - __cmd_probe_resp_join, - __cmd_probe_req_join, - __cmd_null_data_join, - __cmd_disconn_join, - __cmd_ps_poll_join, - __cmd_keep_alive_tmpl_join, - __cfg_slot_time_join, - __cfg_preamble_join, - __cfg_ht_capabilities, - __cfg_ht_information, - __cmd_start_join, - __cfg_aid, - __cfg_ba_set_session, - __cfg_tx_power_join, - __cfg_keys, - __cmd_keep_alive_params, - __cfg_conn_monit_params, - __cfg_bet, - __cfg_cts_protection, - __cfg_ps_rx_streaming, - __cfg_rx_data_filter, - __cmd_sta_state, - __cmd_power_auth, - __cmd_burst_mode_enable, - __cfg_rate_management, - __cmd_arp_rsp_join, - /* Interrogate command -> must be last!! */ - __itr_memory_map, - - NULL -}; - - -/**************************************************************************** - * cmdBld_ConfigSeq() - **************************************************************************** - * DESCRIPTION: Configuration sequence engine - * - * INPUTS: None - * - * OUTPUT: None - * - * RETURNS: TI_OK or TI_NOK - ****************************************************************************/ -TI_STATUS cmdBld_ConfigSeq (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - do - { - if (aCmdIniSeq [pCmdBld->uIniSeq++] == NULL) - { - return TI_NOK; - } - } - while ((*aCmdIniSeq [pCmdBld->uIniSeq - 1])(hCmdBld) != TI_OK); - - return TI_OK; -} - -/**************************************************************************** - * cmdBld_FinalizeDownload() - **************************************************************************** - * DESCRIPTION: Finalize all the remaining initialization after the download has finished - * - * INPUTS: - * - * OUTPUT: None - * - * RETURNS: void - ****************************************************************************/ -void cmdBld_FinalizeDownload (TI_HANDLE hCmdBld, TBootAttr *pBootAttr, FwStaticData_t *pFwInfo) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TI_UINT8 *pMacAddr = pFwInfo->dot11StationID; - TI_UINT32 i; - TI_UINT8 uTmp; - - /* Save FW version */ - os_memoryCopy (pCmdBld->hOs, - (void *)DB_HW(hCmdBld).fwVer, - (void *)pFwInfo->FWVersion, - sizeof(DB_HW(hCmdBld).fwVer)); - - /* Save MAC adress (correct the bytes order first) */ - for (i = 0; i < 3; i++) - { - uTmp = pMacAddr[i]; - pMacAddr[i] = pMacAddr[5 - i]; - pMacAddr[5 - i] = uTmp; - } - MAC_COPY (DB_HW(hCmdBld).macAddress, pMacAddr); - - /* Save chip ID */ - os_memoryCopy (pCmdBld->hOs, - (void *)&(DB_HW(hCmdBld).uHardWareVersion), - (void *)&(pFwInfo->HardWareVersion), - sizeof(DB_HW(hCmdBld).uHardWareVersion)); - - /* Save power-levels table */ - os_memoryCopy (pCmdBld->hOs, - (void *)DB_HW(hCmdBld).txPowerTable, - (void *)pFwInfo->txPowerTable, - sizeof(DB_HW(hCmdBld).txPowerTable)); - - /* Call the upper layer callback */ - (*((TFinalizeCb)pCmdBld->fFinalizeDownload)) (pCmdBld->hFinalizeDownload); -} - - -TI_STATUS cmdBld_GetParam (TI_HANDLE hCmdBld, TTwdParamInfo *pParamInfo) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TWlanParams *pWlanParams = &DB_WLAN(hCmdBld); - - switch (pParamInfo->paramType) - { - case TWD_RTS_THRESHOLD_PARAM_ID: - pParamInfo->content.halCtrlRtsThreshold = pWlanParams->RtsThreshold; - break; - - case TWD_FRAG_THRESHOLD_PARAM_ID: - pParamInfo->content.halCtrlFragThreshold = pWlanParams->FragmentThreshold; - break; - - case TWD_COUNTERS_PARAM_ID: - /* Constant zero because the ACX last buffer next pointer is always pointed - to itself, so it's like an endless buffer*/ - pParamInfo->content.halCtrlCounters.RecvNoBuffer = 0; - pParamInfo->content.halCtrlCounters.FragmentsRecv = 0; /* not supported;*/ - pParamInfo->content.halCtrlCounters.FrameDuplicates = 0;/* not supported*/ - pParamInfo->content.halCtrlCounters.FcsErrors = DB_CNT(hCmdBld).FcsErrCnt; - pParamInfo->content.halCtrlCounters.RecvError = DB_CNT(hCmdBld).FcsErrCnt; - break; - - case TWD_LISTEN_INTERVAL_PARAM_ID: - pParamInfo->content.halCtrlListenInterval = pWlanParams->ListenInterval; - break; - - case TWD_RSN_DEFAULT_KEY_ID_PARAM_ID: - /* Not implemented */ - return TI_NOK; - - case TWD_RSN_SECURITY_MODE_PARAM_ID: - pParamInfo->content.rsnEncryptionStatus = pCmdBld->tSecurity.eSecurityMode; - break; - - case TWD_ACX_STATISTICS_PARAM_ID: - /* Not implemented */ - #if 0 - { - acxStatisitcs_t acxStatisitics; - pParamInfo->content.acxStatisitics.FWpacketReceived = acxStatisitics.FWpacketReceived; - /* Not supported */ - pParamInfo->content.acxStatisitics.HALpacketReceived = 0; - } - #endif - return TI_NOK; - - case TWD_MEDIUM_OCCUPANCY_PARAM_ID: - if (cmdBld_ItrIeMediumOccupancy (hCmdBld, pParamInfo->content.interogateCmdCBParams) != TI_OK) - return TI_NOK; - break; - - case TWD_TSF_DTIM_MIB_PARAM_ID: - if (cmdBld_ItrIeTfsDtim (hCmdBld, pParamInfo->content.interogateCmdCBParams) != TI_OK) - return TI_NOK; - break; - - case TWD_AID_PARAM_ID: - if (cmdBld_GetCurrentAssociationId (hCmdBld, &pParamInfo->content.halCtrlAid) != TI_OK) - return TI_NOK; - - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , " AID 2 %d\n", pParamInfo->content.halCtrlAid); - break; - - case TWD_NOISE_HISTOGRAM_PARAM_ID: - if (cmdBld_ItrIeNoiseHistogramResults (hCmdBld, pParamInfo->content.interogateCmdCBParams) != TI_OK) - { - return TI_NOK; - } - break; - - case TWD_CURRENT_CHANNEL_PARAM_ID: - /* Get current channel number */ - pParamInfo->content.halCtrlCurrentChannel = DB_BSS(hCmdBld).RadioChannel; - break; - - /* SNR and RSSI belongs to the same MIB, and the relevant CB is passed here*/ - case TWD_RSSI_LEVEL_PARAM_ID: - case TWD_SNR_RATIO_PARAM_ID: - /* Retrive the Callback function and read buffer pointer that are in fact stored in the TIWLAN_ADAPTER and then send it to the Command Mailbox */ - cmdBld_ItrRSSI (hCmdBld, - pParamInfo->content.interogateCmdCBParams.fCb, - pParamInfo->content.interogateCmdCBParams.hCb, - pParamInfo->content.interogateCmdCBParams.pCb); - break; - - case TWD_BCN_BRC_OPTIONS_PARAM_ID: - pParamInfo->content.BcnBrcOptions.BeaconRxTimeout = pWlanParams->BcnBrcOptions.BeaconRxTimeout; - pParamInfo->content.BcnBrcOptions.BroadcastRxTimeout = pWlanParams->BcnBrcOptions.BroadcastRxTimeout; - pParamInfo->content.BcnBrcOptions.RxBroadcastInPs = pWlanParams->BcnBrcOptions.RxBroadcastInPs; - break; - - case TWD_MAX_RX_MSDU_LIFE_TIME_PARAM_ID: - pParamInfo->content.halCtrlMaxRxMsduLifetime = pWlanParams->MaxRxMsduLifetime; - break; - - case TWD_TX_RATE_CLASS_PARAM_ID: - pParamInfo->content.pTxRatePlicy = &DB_BSS(hCmdBld).TxRateClassParams; - break; - - case TWD_SG_CONFIG_PARAM_ID: - return cmdBld_ItrSg (hCmdBld, - pParamInfo->content.interogateCmdCBParams.fCb, - pParamInfo->content.interogateCmdCBParams.hCb, - (void*)pParamInfo->content.interogateCmdCBParams.pCb); - - case TWD_TX_POWER_PARAM_ID: - pParamInfo->content.halCtrlTxPowerDbm = DB_WLAN(hCmdBld).TxPowerDbm; - break; - - case TWD_RADIO_TEST_PARAM_ID: - TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Radio Test\n"); - return cmdBld_CmdTest (hCmdBld, - pParamInfo->content.interogateCmdCBParams.fCb, - pParamInfo->content.interogateCmdCBParams.hCb, - (TTestCmd*)pParamInfo->content.interogateCmdCBParams.pCb); - - case TWD_DCO_ITRIM_PARAMS_ID: - pParamInfo->content.tDcoItrimParams.enable = pWlanParams->dcoItrimEnabled; - pParamInfo->content.tDcoItrimParams.moderationTimeoutUsec = pWlanParams->dcoItrimModerationTimeoutUsec; - break; - - default: - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_GetParam - ERROR - Param is not supported, %d\n\n", pParamInfo->paramType); - return (PARAM_NOT_SUPPORTED); - } - - return TI_OK; -} - - -static TI_STATUS cmdBld_ReadMibBeaconFilterIETable (TI_HANDLE hCmdBld, TI_HANDLE hCb, void* fCb, void* pCb) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TMib *pMib = (TMib*)pCb; - TCmdQueueInterrogateCb RetFunc = (TCmdQueueInterrogateCb)fCb; - TI_UINT8 IETableSize = 0; - - /*Get params*/ - pMib->aData.BeaconFilter.iNumberOfIEs = DB_WLAN(hCmdBld).beaconFilterIETable.numberOfIEs; - IETableSize = DB_WLAN(hCmdBld).beaconFilterIETable.IETableSize; - - os_memoryZero (pCmdBld->hOs, - pMib->aData.BeaconFilter.iIETable, - sizeof(pMib->aData.BeaconFilter.iIETable)); - - os_memoryCopy (pCmdBld->hOs, - pMib->aData.BeaconFilter.iIETable, - DB_WLAN(hCmdBld).beaconFilterIETable.IETable, - IETableSize); - - pMib->Length = IETableSize + 1; - - RetFunc(hCb, TI_OK, pCb); - - return TI_OK; -} - -/** - * \author \n - * \date \n - * \brief Coordinates between legacy TxRatePolicy implementation and the MIB format: \n - * Converts the pGwsi_txRatePolicy back to whal commands - * Activates the whal whalCtrl_set function - * Function Scope \e Public.\n - * \param - \n - * \return \n - */ -static TI_STATUS cmdBld_ReadMibTxRatePolicy (TI_HANDLE hCmdBld, TI_HANDLE hCb, void* fCb, void* pCb) -{ - TMib* pMib = (TMib*)pCb; - TCmdQueueInterrogateCb RetFunc = (TCmdQueueInterrogateCb)fCb; - TTwdParamInfo param; - TI_STATUS status = TI_OK; - - param.paramType = TWD_TX_RATE_CLASS_PARAM_ID; - cmdBld_GetParam (hCmdBld, ¶m); - if (param.content.pTxRatePlicy == NULL) - return TI_NOK; - - /*Copy the data form the param to the MIB*/ - pMib->aData.txRatePolicy = *param.content.pTxRatePlicy; - pMib->Length = pMib->aData.txRatePolicy.numOfRateClasses * sizeof(pMib->aData.txRatePolicy.rateClass[0]) + - sizeof(pMib->aData.txRatePolicy.numOfRateClasses); - RetFunc (hCb, status, pCb); - return status; -} - - -TI_STATUS cmdBld_ReadMib (TI_HANDLE hCmdBld, TI_HANDLE hCb, void* fCb, void* pCb) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TMib *pMibBuf = (TMib*)pCb; - TCmdQueueInterrogateCb RetFunc = (TCmdQueueInterrogateCb)fCb; - TI_STATUS Status = TI_OK; - - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ReadMib :pMibBuf %p:\n",pMibBuf); - - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ReadMib :aMib %x:\n", pMibBuf->aMib); - - switch (pMibBuf->aMib) - { - case MIB_dot11MaxReceiveLifetime: - { - TTwdParamInfo ParamInfo; - ParamInfo.paramType = TWD_MAX_RX_MSDU_LIFE_TIME_PARAM_ID; - ParamInfo.paramLength = sizeof(ParamInfo.content.halCtrlMaxRxMsduLifetime); - Status = cmdBld_GetParam (hCmdBld, &ParamInfo); - pMibBuf->aData.MaxReceiveLifeTime = ParamInfo.content.halCtrlMaxRxMsduLifetime / 1024; /* converting from usecs to TUs*/ - pMibBuf->Length = sizeof(pMibBuf->aData.MaxReceiveLifeTime); - } - break; - - case MIB_dot11GroupAddressesTable: - { - Status = cmdBld_GetGroupAddressTable (hCmdBld, - &pMibBuf->aData.GroupAddressTable.bFilteringEnable, - &pMibBuf->aData.GroupAddressTable.nNumberOfAddresses, - pMibBuf->aData.GroupAddressTable.aGroupTable); - - pMibBuf->Length = sizeof(pMibBuf->aData.GroupAddressTable.bFilteringEnable) + - sizeof(pMibBuf->aData.GroupAddressTable.nNumberOfAddresses) + - pMibBuf->aData.GroupAddressTable.nNumberOfAddresses * sizeof(TMacAddr); - } - break; - - case MIB_ctsToSelf: - { - TTwdParamInfo ParamInfo; - ParamInfo.paramType = TWD_CTS_TO_SELF_PARAM_ID; - ParamInfo.paramLength = sizeof(ParamInfo.content.halCtrlCtsToSelf); - Status = cmdBld_GetParam (hCmdBld, &ParamInfo); - pMibBuf->aData.CTSToSelfEnable = ParamInfo.content.halCtrlCtsToSelf; - pMibBuf->Length = sizeof(pMibBuf->aData.CTSToSelfEnable); - } - break; - - case MIB_arpIpAddressesTable: - { - TIpAddr IpAddress; - EIpVer IPver; - TI_UINT8 Enable; - - pMibBuf->Length = sizeof(TMibArpIpAddressesTable); - Status = cmdBld_GetArpIpAddressesTable (hCmdBld, &IpAddress, &Enable, &IPver); - if (Status == TI_OK) - { - pMibBuf->aData.ArpIpAddressesTable.FilteringEnable = Enable; - - if (IP_VER_4 == IPver) /* IP_VER_4 only */ - { - IP_COPY (pMibBuf->aData.ArpIpAddressesTable.addr, IpAddress); - } - else - { - Status = TI_NOK; - } - } - return Status; - } - - case MIB_rxFilter: - { - TI_UINT32 RxConfigOption; - TI_UINT32 RxFilterOption; - - pMibBuf->Length = 1; - pMibBuf->aData.RxFilter = 0; - - /* Get RX filter data */ - Status = cmdBld_GetRxFilters (hCmdBld, &RxConfigOption, &RxFilterOption); - if (TI_OK == Status) - { - /*Translate to MIB bitmap*/ - if ((RxConfigOption & RX_CFG_MAC) == RX_CFG_ENABLE_ANY_DEST_MAC) - pMibBuf->aData.RxFilter |= MIB_RX_FILTER_PROMISCOUS_SET; - - if ((RxConfigOption & RX_CFG_BSSID) == RX_CFG_ENABLE_ONLY_MY_BSSID) - pMibBuf->aData.RxFilter |= MIB_RX_FILTER_BSSID_SET; - } - } - break; - - case MIB_beaconFilterIETable: - return cmdBld_ReadMibBeaconFilterIETable (hCmdBld, hCb, fCb, pCb); - - case MIB_txRatePolicy: - return cmdBld_ReadMibTxRatePolicy (hCmdBld, hCb, fCb, pCb); - - case MIB_countersTable: - return cmdBld_ItrErrorCnt (hCmdBld, fCb, hCb, pCb); - - case MIB_statisticsTable: - return cmdBld_ItrRoamimgStatisitics (hCmdBld, fCb, hCb, pCb); - - default: - TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "TWD_ReadMib:MIB aMib 0x%x Not supported\n",pMibBuf->aMib); - return TI_NOK; - } - - if(RetFunc) - RetFunc(hCb, Status, pCb); - - return TI_OK; -} - - -TI_STATUS cmdBld_GetGroupAddressTable (TI_HANDLE hCmdBld, TI_UINT8* pEnabled, TI_UINT8* pNumGroupAddrs, TMacAddr *pGroupAddr) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - TI_UINT32 i; - - if (NULL == pEnabled || NULL == pNumGroupAddrs || NULL == pGroupAddr) - { - TRACE3(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_GetGroupAddressTable: pisEnabled=0x%p pnumGroupAddrs=0x%p Group_addr=0x%p !!!\n", pEnabled, pNumGroupAddrs, pGroupAddr); - return PARAM_VALUE_NOT_VALID; - } - - *pNumGroupAddrs = DB_WLAN(hCmdBld).numGroupAddrs; - *pEnabled = DB_WLAN(hCmdBld).isMacAddrFilteringnabled; - - os_memoryZero (pCmdBld->hOs, pGroupAddr, sizeof(pGroupAddr)); - for (i = 0; i < *pNumGroupAddrs; i++) - { - os_memoryCopy (pCmdBld->hOs, - (void *)&((*pGroupAddr)[MAC_ADDR_LEN*i]), - &DB_WLAN(hCmdBld).aGroupAddr[i], - MAC_ADDR_LEN); - } - - return TI_OK; -} - - -TI_STATUS cmdBld_GetRxFilters (TI_HANDLE hCmdBld, TI_UINT32* pRxConfigOption, TI_UINT32* pRxFilterOption) -{ - *pRxConfigOption = DB_WLAN(hCmdBld).RxConfigOption; - *pRxFilterOption = DB_WLAN(hCmdBld).RxFilterOption; - - return TI_OK; -} - - -TFwInfo * cmdBld_GetFWInfo (TI_HANDLE hCmdBld) -{ - return &DB_HW(hCmdBld); -} - - - -TI_STATUS cmdBld_SetRadioBand (TI_HANDLE hCmdBld, ERadioBand eRadioBand) -{ - DB_WLAN(hCmdBld).RadioBand = eRadioBand; - - return TI_OK; -} - - -/**************************************************************************** - * cmdBld_CurrentAssociationIdGet() - **************************************************************************** - * DESCRIPTION: Get the current TX antenna - * - * INPUTS: - * - * OUTPUT: - * - * RETURNS: TI_OK or TI_NOK - ****************************************************************************/ -TI_STATUS cmdBld_GetCurrentAssociationId (TI_HANDLE hCmdBld, TI_UINT16 *pAidVal) -{ - *pAidVal = DB_WLAN(hCmdBld).Aid; - - return TI_OK; -} - - - /**************************************************************************** - * cmdBld_GetArpIpAddressesTable() - **************************************************************************** - * DESCRIPTION: Sets the Group table according to the given configuration. - * - * OUTPUT: None - * - * RETURNS: TI_OK or TI_NOK - ****************************************************************************/ -TI_STATUS cmdBld_GetArpIpAddressesTable (TI_HANDLE hCmdBld, TIpAddr *pIp, TI_UINT8* pbEnabled, EIpVer *pIpVer) -{ - *pIpVer = (EIpVer)DB_WLAN(hCmdBld).arp_IP_ver; - - IP_COPY (*pIp, DB_WLAN(hCmdBld).arp_IP_addr); - - *pbEnabled = (TI_UINT8)DB_WLAN(hCmdBld).arpFilterType; - - return TI_OK; -} - - -TI_STATUS cmdBld_ConvertAppRatesBitmap (TI_UINT32 uAppRatesBitmap, TI_UINT32 uAppModulation, EHwRateBitFiled *pHwRatesBitmap) -{ - EHwRateBitFiled uRatesBitmap = 0; - - if (uAppRatesBitmap & DRV_RATE_MASK_1_BARKER) uRatesBitmap |= HW_BIT_RATE_1MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_2_BARKER) uRatesBitmap |= HW_BIT_RATE_2MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_5_5_CCK) uRatesBitmap |= HW_BIT_RATE_5_5MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_11_CCK) uRatesBitmap |= HW_BIT_RATE_11MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_22_PBCC) uRatesBitmap |= HW_BIT_RATE_22MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_6_OFDM) uRatesBitmap |= HW_BIT_RATE_6MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_9_OFDM) uRatesBitmap |= HW_BIT_RATE_9MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_12_OFDM) uRatesBitmap |= HW_BIT_RATE_12MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_18_OFDM) uRatesBitmap |= HW_BIT_RATE_18MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_24_OFDM) uRatesBitmap |= HW_BIT_RATE_24MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_36_OFDM) uRatesBitmap |= HW_BIT_RATE_36MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_48_OFDM) uRatesBitmap |= HW_BIT_RATE_48MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_54_OFDM) uRatesBitmap |= HW_BIT_RATE_54MBPS; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_0_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_0; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_1_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_1; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_2_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_2; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_3_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_3; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_4_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_4; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_5_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_5; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_6_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_6; - if (uAppRatesBitmap & DRV_RATE_MASK_MCS_7_OFDM) uRatesBitmap |= HW_BIT_RATE_MCS_7; - - *pHwRatesBitmap = uRatesBitmap; - - return TI_OK; -} - -EHwRateBitFiled rateNumberToBitmap(TI_UINT8 uRate) -{ - switch(uRate) - { - case 1: return HW_BIT_RATE_1MBPS; - case 2: return HW_BIT_RATE_2MBPS; - case 5: return HW_BIT_RATE_5_5MBPS; - case 6: return HW_BIT_RATE_6MBPS; - case 9: return HW_BIT_RATE_9MBPS; - case 11: return HW_BIT_RATE_11MBPS; - case 12: return HW_BIT_RATE_12MBPS; - case 18: return HW_BIT_RATE_18MBPS; - case 22: return HW_BIT_RATE_22MBPS; - case 24: return HW_BIT_RATE_24MBPS; - case 36: return HW_BIT_RATE_36MBPS; - case 48: return HW_BIT_RATE_48MBPS; - case 54: return HW_BIT_RATE_54MBPS; - default: - return 0; - } -} - -TI_STATUS cmdBld_ConvertAppRate (ERate AppRate, TI_UINT8 *pHwRate) -{ - TI_UINT8 Rate = 0; - TI_STATUS status = TI_OK; - - switch (AppRate) - { - /* - * The handle for 5.5/11/22 PBCC was removed !!! - */ - - case DRV_RATE_1M: Rate = txPolicy1; break; - case DRV_RATE_2M: Rate = txPolicy2; break; - case DRV_RATE_5_5M: Rate = txPolicy5_5; break; - case DRV_RATE_11M: Rate = txPolicy11; break; - case DRV_RATE_22M: Rate = txPolicy22; break; - case DRV_RATE_6M: Rate = txPolicy6; break; - case DRV_RATE_9M: Rate = txPolicy9; break; - case DRV_RATE_12M: Rate = txPolicy12; break; - case DRV_RATE_18M: Rate = txPolicy18; break; - case DRV_RATE_24M: Rate = txPolicy24; break; - case DRV_RATE_36M: Rate = txPolicy36; break; - case DRV_RATE_48M: Rate = txPolicy48; break; - case DRV_RATE_54M: Rate = txPolicy54; break; - case DRV_RATE_MCS_0: Rate = txPolicyMcs0; break; - case DRV_RATE_MCS_1: Rate = txPolicyMcs1; break; - case DRV_RATE_MCS_2: Rate = txPolicyMcs2; break; - case DRV_RATE_MCS_3: Rate = txPolicyMcs3; break; - case DRV_RATE_MCS_4: Rate = txPolicyMcs4; break; - case DRV_RATE_MCS_5: Rate = txPolicyMcs5; break; - case DRV_RATE_MCS_6: Rate = txPolicyMcs6; break; - case DRV_RATE_MCS_7: Rate = txPolicyMcs7; break; - - default: - WLAN_OS_REPORT(("%s wrong app rate = %d\n",__FUNCTION__,AppRate)); - status = TI_NOK; - break; - } - - if (status == TI_OK) - *pHwRate = Rate; - else - *pHwRate = txPolicy1; - - return status; -} - - -TI_STATUS cmdBld_SetRxFilter (TI_HANDLE hCmdBld, TI_UINT32 uRxConfigOption, TI_UINT32 uRxFilterOption) -{ - DB_WLAN(hCmdBld).RxConfigOption = uRxConfigOption; - DB_WLAN(hCmdBld).RxFilterOption = uRxFilterOption; - DB_WLAN(hCmdBld).RxConfigOption |= RX_CFG_ENABLE_PHY_HEADER_PLCP; - - if (DB_WLAN(hCmdBld).RxDisableBroadcast) - { - DB_WLAN(hCmdBld).RxConfigOption |= RX_CFG_DISABLE_BCAST; - } - - return TI_OK; -} - - -TI_UINT8 cmdBld_GetBssType (TI_HANDLE hCmdBld) -{ - return DB_BSS(hCmdBld).ReqBssType; -} - - -TI_UINT32 cmdBld_GetAckPolicy (TI_HANDLE hCmdBld, TI_UINT32 uQueueId) -{ - return (TI_UINT32)DB_QUEUES(hCmdBld).queues[uQueueId].ackPolicy; -} - - -TI_STATUS cmdBld_SetSecuritySeqNum (TI_HANDLE hCmdBld, TI_UINT8 securitySeqNumLsByte) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - /* If 8 lsb wrap around occurred (new < old). */ - if ((TI_UINT16)securitySeqNumLsByte < (pCmdBld->uSecuritySeqNumLow & 0xFF)) - { - /* Increment the upper byte of the 16 lsb. */ - pCmdBld->uSecuritySeqNumLow += 0x100; - - /* If 16 bit wrap around occurred, increment the upper 32 bit. */ - if (!(pCmdBld->uSecuritySeqNumLow & 0xFF00)) - pCmdBld->uSecuritySeqNumHigh++; - } - - /* Save new sequence number 8 lsb (received from the FW). */ - pCmdBld->uSecuritySeqNumLow &= 0xFF00; - pCmdBld->uSecuritySeqNumLow |= (TI_UINT16)securitySeqNumLsByte; - - return TI_OK; -} - -/**************************************************************************** - * cmdBld_JoinCmpltForReconfigCb() - **************************************************************************** - * DESCRIPTION: The Join-Complete callback used by the reconfig sequenc (see __cmd_start_join()). - * It restores the original Join-Complete CB and continues the sequence. - * It is needed so the reconfig sequence won't progress before the Join - * command is completed (otherwise the FW may drop the other commands). - * - * INPUTS: hCmdBld - The module object - * - * OUTPUT: None - * - * RETURNS: TI_OK - ****************************************************************************/ -static TI_STATUS cmdBld_JoinCmpltForReconfigCb (TI_HANDLE hCmdBld) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - void *fDummyCb; - TI_HANDLE hDummyHndl; - - /* Restored the original Join-Complete callback function */ - eventMbox_ReplaceEvent (pCmdBld->hEventMbox, - TWD_OWN_EVENT_JOIN_CMPLT, - pCmdBld->fJoinCmpltOriginalCbFunc, - pCmdBld->hJoinCmpltOriginalCbHndl, - &fDummyCb, - &hDummyHndl); - - /* Call the reconfig sequence to continue the configuration after Join completion */ - cmdBld_ConfigSeq (hCmdBld); - - return TI_OK; -} - - - -static TI_STATUS cmdBld_DummyCb (TI_HANDLE hCmdBld) -{ - return TI_OK; -} - - - - - -#ifdef TI_DBG - -void cmdBld_DbgForceTemplatesRates (TI_HANDLE hCmdBld, TI_UINT32 uRateMask) -{ - TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; - - pCmdBld->uDbgTemplatesRateMask = uRateMask; -} - -#endif /* TI_DBG */ - |