1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * CmdBldCmd.c 3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 4a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved. 6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without 8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions 9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met: 10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions of source code must retain the above copyright 12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer. 13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions in binary form must reproduce the above copyright 14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer in 15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * the documentation and/or other materials provided with the 16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * distribution. 17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Neither the name Texas Instruments nor the names of its 18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * contributors may be used to endorse or promote products derived 19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * from this software without specific prior written permission. 20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file CmdBldCmd.c 36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Command builder. Commands 37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see CmdBld.h 39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__ FILE_ID_93 42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "tidef.h" 43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h" 44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "TWDriverInternal.h" 45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdBld.h" 46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdBldCmdIE.h" 47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdBldCfgIE.h" 48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "CmdQueue_api.h" 49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "eventMbox_api.h" 50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt Rx filter field is mostly hard-coded. 53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt This filter value basically pass only valid beacons / probe responses. For exact bit description, 54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt consult either the DPG or the FPG (or both, and Yoel...) 55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define RX_FILTER_CFG_ (CFG_RX_PRSP_EN | CFG_RX_MGMT_EN | CFG_RX_BCN_EN | CFG_RX_RCTS_ACK | CFG_RX_CTL_EN) 57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define RX_CONFIG_OPTION (CFG_RX_RAW | CFG_RX_INT_FCS_ERROR | CFG_RX_WR_RX_STATUS | CFG_RX_TIMESTAMP_TSF) 58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 61a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWepMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb); 62a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWepMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb); 63a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_UINT32 cmdBld_BuildPeriodicScanChannles (TPeriodicScanParams *pPeriodicScanParams, ConnScanChannelInfo_t *pChannelList, EScanType eScanType, ERadioBand eRadioBand, TI_UINT32 uPassiveScanDfsDwellTime); 64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_CmdStartScan 68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Build a start scan command and send it to the FW 69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a start scan command and send it to the FW 71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pScanVals - scan parameters 74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eScanTag - scan tag used for scan complete and result tracking 75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param fScanCommandResponseCB - command complete CB 76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCb - command complete CB 77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK) 78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_CmdStopScan 79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 80a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStartScan (TI_HANDLE hCmdBld, TScanParams *pScanVals, EScanResultTag eScanTag, 81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_BOOL bHighPriority, void* ScanCommandResponseCB, TI_HANDLE hCb) 82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt BasicScanChannelParameters_t* chanPtr; 85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ScanParameters_t tnetScanParams; 86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8* pBSSID; 87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT32 i; 88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Convert general scan data to tnet structure */ 91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.tidTrigger = pScanVals->Tid; 92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.numOfProbRqst = pScanVals->probeReqNumber; 93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.ssidLength = pScanVals->desiredSsid.len; 94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, 95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (void *)tnetScanParams.basicScanParameters.ssidStr, 96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (void *)pScanVals->desiredSsid.str, 97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.ssidLength); 98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* 100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt scan options field is composed of scan type and band selection. 101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt First, use the lookup table to convert the scan type 102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanOptions = 0; 105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch ( pScanVals->scanType ) 107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case SCAN_TYPE_NORMAL_ACTIVE : 109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanOptions = SCAN_ACTIVE; 110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case SCAN_TYPE_NORMAL_PASSIVE : 113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanOptions = SCAN_PASSIVE; 114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case SCAN_TYPE_TRIGGERED_ACTIVE : 117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanOptions = SCAN_ACTIVE | TRIGGERED_SCAN; 118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case SCAN_TYPE_TRIGGERED_PASSIVE : 121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanOptions = SCAN_PASSIVE | TRIGGERED_SCAN; 122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1( pCmdBld->hReport, REPORT_SEVERITY_ERROR, "Invalid scan type:%d\n", pScanVals->scanType); 126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Add the band selection */ 130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if ( RADIO_BAND_5_0_GHZ == pScanVals->band ) 131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.band = RADIO_BAND_5GHZ; 133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.band = RADIO_BAND_2_4_GHZ; 137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Add high priority bit */ 140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if ( bHighPriority ) 141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanOptions |= SCAN_PRIORITY_HIGH; 143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanOptions = ENDIAN_HANDLE_WORD( tnetScanParams.basicScanParameters.scanOptions ); 146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* important note: BSSID filter (0x0010) is DISABLED, because the FW sets it according 148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt to BSSID value (broadcast does not filter, any other value will */ 149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG(RX_CONFIG_OPTION) ; 150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.rxCfg.FilterOptions = ENDIAN_HANDLE_LONG( RX_FILTER_CFG_ ); 151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* If the SSID is not broadcast SSID, filter according to SSID and local MAC address */ 153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pScanVals->desiredSsid.len != 0) 154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG(RX_CONFIG_OPTION | CFG_SSID_FILTER_EN | CFG_UNI_FILTER_EN) ; 156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Rate conversion is done in the HAL */ 158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_ConvertAppRatesBitmap (pScanVals->probeRequestRate, 159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt &tnetScanParams.basicScanParameters.txdRateSet); 161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.txdRateSet = ENDIAN_HANDLE_LONG( tnetScanParams.basicScanParameters.txdRateSet ); 163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.numChannels = ENDIAN_HANDLE_WORD( pScanVals->numOfChannels ); 164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* scan result tag */ 166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanParameters.scanTag = eScanTag; 167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* copy channel specific scan data to HAL structure */ 169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for ( i = 0; i < pScanVals->numOfChannels; i++ ) 170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT32 j; 172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8* macAddr; 173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt macAddr = (TI_UINT8*)&tnetScanParams.basicScanChannelParameters[ i ].bssIdL; 175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* copy the MAC address, upside down (CHIP structure) */ 177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for ( j = 0; j < MAC_ADDR_LEN; j++ ) 178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt macAddr[ j ] = pScanVals->channelEntry[ i ].normalChannelEntry.bssId[ MAC_ADDR_LEN - 1 - j ]; 180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanChannelParameters[ i ].scanMinDuration = 182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].normalChannelEntry.minChannelDwellTime ); 183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanChannelParameters[ i ].scanMaxDuration = 184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].normalChannelEntry.maxChannelDwellTime ); 185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanChannelParameters[ i ].ETCondCount = 186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pScanVals->channelEntry[ i ].normalChannelEntry.ETMaxNumOfAPframes | 187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pScanVals->channelEntry[ i ].normalChannelEntry.earlyTerminationEvent; 188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanChannelParameters[ i ].txPowerAttenuation = 189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pScanVals->channelEntry[ i ].normalChannelEntry.txPowerDbm; 190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetScanParams.basicScanChannelParameters[ i ].channel = 191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pScanVals->channelEntry[ i ].normalChannelEntry.channel; 192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 194a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE7(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "RxCfg = 0x%x\n RxFilterCfg = 0x%x\n scanOptions = 0x%x\n numChannels = %d\n probeNumber = %d\n probeRateModulation = 0x%x\n tidTrigger = %d\n" , tnetScanParams.basicScanParameters.rxCfg.ConfigOptions, tnetScanParams.basicScanParameters.rxCfg.FilterOptions, tnetScanParams.basicScanParameters.scanOptions, tnetScanParams.basicScanParameters.numChannels, tnetScanParams.basicScanParameters.numOfProbRqst, tnetScanParams.basicScanParameters.txdRateSet, tnetScanParams.basicScanParameters.tidTrigger); 195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Channel BSSID MinTime MaxTime ET TxPower probChan\n"); 197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for( i=0; i < pScanVals->numOfChannels; i++) 199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt chanPtr = &tnetScanParams.basicScanChannelParameters[i]; 201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBSSID = (TI_UINT8*)&chanPtr->bssIdL; 202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE12(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "%06d %02x:%02x:%02x:%02x:%02x:%02x %05d %05d %02d %05d %05d\n",i, pBSSID[5],pBSSID[4],pBSSID[3],pBSSID[2],pBSSID[1],pBSSID[0], chanPtr->scanMinDuration, chanPtr->scanMaxDuration, chanPtr->ETCondCount, chanPtr->txPowerAttenuation, chanPtr->channel); 204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeStartScan (hCmdBld, &tnetScanParams, ScanCommandResponseCB, hCb); 207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_CmdStartSPSScan 211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Build a start SPS scan command and send it to the FW 212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a start SPS scan command and send it to the FW 214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pScanVals - scan parameters 217a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eScanTag - scan tag used for scan complete and result tracking 218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param fScanCommandResponseCB - command complete CB 219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCb - command complete CB 220a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK) 221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_CmdStopSPSScan 222a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 223a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStartSPSScan (TI_HANDLE hCmdBld, TScanParams *pScanVals, EScanResultTag eScanTag, 224a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt void* fScanCommandResponseCB, TI_HANDLE hCb) 225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ScheduledScanParameters_t tnetSPSScanParams; 228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT32 i; 229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Convert general scan data to TNET structure */ 231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.scanOptions = SCAN_PASSIVE; 232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Add the band selection */ 233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if ( RADIO_BAND_5_0_GHZ == pScanVals->band ) 234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.band = RADIO_BAND_5GHZ; 236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.band = RADIO_BAND_2_4_GHZ; 240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 242a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.scanOptions = ENDIAN_HANDLE_WORD( tnetSPSScanParams.scheduledGeneralParameters.scanOptions ); 244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* important note: BSSID filter (0x0010) is DISABLED, because the FW sets it according 246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt to BSSID value (broadcast does not filter, any other value will */ 247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* If the SSID is not broadcast SSID, also filter according to SSID */ 248a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG(RX_CONFIG_OPTION); 249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.rxCfg.FilterOptions = ENDIAN_HANDLE_LONG( RX_FILTER_CFG_ ); 250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions = ENDIAN_HANDLE_LONG( tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions ); 251a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* latest TSF value - used to discover TSF error (AP recovery) */ 253a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.scanCmdTime_h = ENDIAN_HANDLE_LONG( INT64_HIGHER(pScanVals->latestTSFValue) ); 254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.scanCmdTime_l = ENDIAN_HANDLE_LONG( INT64_LOWER(pScanVals->latestTSFValue) ); 255a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* add scan tag */ 257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.scanTag = eScanTag; 258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledGeneralParameters.numChannels = pScanVals->numOfChannels; 260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* copy channel specific scan data to HAL structure */ 262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for ( i = 0; i < pScanVals->numOfChannels; i++ ) 263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_INT32 j; 265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8* macAddr; 266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt macAddr = (TI_UINT8*)&tnetSPSScanParams.scheduledChannelParameters[ i ].bssIdL; 268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* copy the MAC address, upside down (CHIP structure) */ 270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for ( j = 0; j < MAC_ADDR_LEN; j++ ) 271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt macAddr[ j ] = pScanVals->channelEntry[ i ].normalChannelEntry.bssId[ MAC_ADDR_LEN - 1 - j ]; 273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledChannelParameters[ i ].scanMaxDuration = 275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].SPSChannelEntry.scanDuration ); 276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledChannelParameters[ i ].scanStartTime = 277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ENDIAN_HANDLE_LONG( pScanVals->channelEntry[ i ].SPSChannelEntry.scanStartTime ); 278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledChannelParameters[ i ].ETCondCount = 279a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pScanVals->channelEntry[ i ].SPSChannelEntry.ETMaxNumOfAPframes | 280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pScanVals->channelEntry[ i ].SPSChannelEntry.earlyTerminationEvent; 281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tnetSPSScanParams.scheduledChannelParameters[ i ].channel = 282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pScanVals->channelEntry[ i ].SPSChannelEntry.channel; 283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "RxCfg = 0x%x\n RxFilterCfg = 0x%x\n scanOptions = 0x%x\n numChannels = %d\n", tnetSPSScanParams.scheduledGeneralParameters.rxCfg.ConfigOptions, tnetSPSScanParams.scheduledGeneralParameters.rxCfg.FilterOptions, tnetSPSScanParams.scheduledGeneralParameters.scanOptions, tnetSPSScanParams.scheduledGeneralParameters.numChannels); 286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Channel BSSID StartTime Duration ET probChan\n"); 288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG 290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for( i=0; i < tnetSPSScanParams.scheduledGeneralParameters.numChannels; i++) 291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ScheduledChannelParameters_t* chanPtr = &tnetSPSScanParams.scheduledChannelParameters[ i ]; 293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8* pBSSID = (TI_UINT8*)&chanPtr->bssIdL; 294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE11(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "%6d %02x:%02x:%02x:%02x:%02x:%02x %5d %5d %2d %5d\n",i, pBSSID[5],pBSSID[4],pBSSID[3],pBSSID[2],pBSSID[1],pBSSID[0], chanPtr->scanStartTime, chanPtr->scanMaxDuration, chanPtr->ETCondCount, chanPtr->channel); 296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */ 298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeStartSPSScan (hCmdBld, &tnetSPSScanParams, fScanCommandResponseCB, hCb); 300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_CmdStopScan 304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Build a stop scan command and send it to FW 305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a stop scan command and send it to FW 307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eScanTag - scan tag, used for scan complete and result tracking 310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK) 311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_CmdStartSPSScan 312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 313a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStopScan (TI_HANDLE hCmdBld, EScanResultTag eScanTag, 314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt void *fScanCommandResponseCB, TI_HANDLE hCb) 315a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeStopScan (hCmdBld, fScanCommandResponseCB, hCb); 317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_CmdStopSPSScan 322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Build a stop SPS scan command and send it to FW 323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Build a stop SPS scan command and send it to FW 325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eScanTag - scan tag, used for scan complete and result tracking 328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return command status (OK / NOK) 329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_CmdStartScan 330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ TI_STATUS cmdBld_CmdStopSPSScan (TI_HANDLE hCmdBld, EScanResultTag eScanTag, 331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt void* fScanCommandResponseCB, TI_HANDLE hCb) 332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeStopSPSScan (hCmdBld, fScanCommandResponseCB, hCb); 334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 336a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetSplitScanTimeOut (TI_HANDLE hCmdBld, TI_UINT32 uTimeOut) 337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_WLAN(hCmdBld).uSlicedScanTimeOut = uTimeOut; 339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetSplitScanTimeOut (hCmdBld, uTimeOut, NULL, NULL); 341a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_debugPrintPeriodicScanChannles 345a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Print periodic scan channel list for debug purposes 346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Print periodic scan channel list for debug purposes 348a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 349a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 350a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pChannel - pointer to the channel list to print 351a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param uChannelCount - number of channles to print 352a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return None 353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_debugPrintPeriodicScanParams 354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid cmdBld_debugPrintPeriodicScanChannles (TI_HANDLE hCmdBld, ConnScanChannelInfo_t* pChannel, 356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 uChannelCount) 357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 uIndex; 360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Index Channel MinTime MaxTime DFStime PowerLevel\n"); 362a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-------------------------------------------------------------------\n"); 363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for (uIndex = 0; uIndex < uChannelCount; uIndex++) 364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE6(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "%-10d %-10d %-10d %-10d %-10d %-11d\n", uIndex, pChannel[ uIndex ].channel, pChannel[ uIndex ].scanMinDuration, pChannel[ uIndex ].scanMaxDuration, pChannel[ uIndex ].passiveScanDuration, pChannel[ uIndex ].txPowerLevelDbm); 366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 369a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 370a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_debugPrintPeriodicScanParams 371a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Print periodic scan parameters for debug purposes 372a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Print periodic scan parameters for debug purposes 374a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 376a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pCommand - pointer to the periodic scan command to print 377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return None 378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_debugPrintPeriodicScanChannles 379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid cmdBld_debugPrintPeriodicScanParams (TI_HANDLE hCmdBld, ConnScanParameters_t* pCommand) 381a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 383a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* print periodic scan params command */ 385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Cycle intervals:\n"); 386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE8(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "0: %-6d %-6d %-6d %-6d %-6d %-6d %-6d %-6d\n", pCommand->cycleIntervals[ 0 ], pCommand->cycleIntervals[ 1 ], pCommand->cycleIntervals[ 2 ], pCommand->cycleIntervals[ 3 ], pCommand->cycleIntervals[ 4 ], pCommand->cycleIntervals[ 5 ], pCommand->cycleIntervals[ 6 ], pCommand->cycleIntervals[ 7 ]); 387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE8(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "8: %-6d %-6d %-6d %-6d %-6d %-6d %-6d %-6d\n", pCommand->cycleIntervals[ 8 ], pCommand->cycleIntervals[ 9 ], pCommand->cycleIntervals[ 10 ], pCommand->cycleIntervals[ 11 ], pCommand->cycleIntervals[ 12 ], pCommand->cycleIntervals[ 13 ], pCommand->cycleIntervals[ 14 ], pCommand->cycleIntervals[ 15 ]); 388a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "RSSI threshold: %d, SNR threshold: %d, number of cycles: %d, reporth threshold: %d\n", pCommand->rssiThreshold, pCommand->snrThreshold, pCommand->maxNumOfCycles, pCommand->reportThreshold); 389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Terminate on report: %d, result tag: %d, BSS type: %d, number of probe requests: %d\n", pCommand->terminateOnReport, pCommand->resultsTag, pCommand->bssType, pCommand->numProbe); 390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "SSID filter type: %d, SSID length: %d, SSID: \n", pCommand->ssidFilterType, pCommand->ssidLength); 391a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* print channel info */ 392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 393a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "2.4 GHz Channels:\n"); 394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-----------------\n"); 395a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Number of passive channels: %d, number of active channels: %d\n", pCommand->numOfPassive[ 0 ], pCommand->numOfActive[ 0 ]); 396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_debugPrintPeriodicScanChannles (hCmdBld, &(pCommand->channelList[ 0 ]), 397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCommand->numOfPassive[ 0 ] + 398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCommand->numOfActive[ 0 ]); 399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "5.0 GHz Channels:\n"); 400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-----------------\n"); 401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Number of passive channels: %d, number of DFS channels: %d, number of active channels: %d\n", pCommand->numOfPassive[ 1 ], pCommand->numOfDfs, pCommand->numOfActive[ 2 ]); 402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_debugPrintPeriodicScanChannles (hCmdBld, &(pCommand->channelList[ CONN_SCAN_MAX_CHANNELS_BG ]), 403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCommand->numOfPassive[ 1 ] + 404a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCommand->numOfActive[ 1 ] + 405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCommand->numOfDfs); 406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "4.9 GHz channles:\n"); 407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "-----------------\n"); 408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Number of passive channels: %d, number of active channels: %d\n", pCommand->numOfPassive[ 2 ], pCommand->numOfActive[ 2 ]); 409a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_debugPrintPeriodicScanChannles (hCmdBld, &(pCommand->channelList[ CONN_SCAN_MAX_CHANNELS_BG + CONN_SCAN_MAX_CHANNELS_A ]), 410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCommand->numOfPassive[ 2 ] + 411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCommand->numOfActive[ 2 ]); 412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 413a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_debugPrintPeriodicScanSsidList 416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Print periodic scan SSID list for debug purposes 417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Print periodic scan SSID list for debug purposes 419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pCommand - pointer to the periodic scan SSID list command to print 422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return None 423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_debugPrintPeriodicScanParams 424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid cmdBld_debugPrintPeriodicScanSsidList (TI_HANDLE hCmdBld, ConnScanSSIDList_t* pCommand) 426a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 428a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 uIndex; 429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* print SSID list command */ 431a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "SSID list:\n"); 432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "---------\n"); 433a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Num of entries: %d\n", pCommand->numOfSSIDEntries); 434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for (uIndex = 0; uIndex < pCommand->numOfSSIDEntries; uIndex++) 435a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "index: %d, SSID type: %d, SSID length:% d, SSID string:\n", uIndex, pCommand->SSIDList[ uIndex ].ssidType, pCommand->SSIDList[ uIndex ].ssidLength); 437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 439a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 440a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 441a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_BuildPeriodicScanChannlesn 443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Copy channels info for periodic scan to FW structure for a specific band and scan type 444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copy channels info, from driver structure, to FW structure, for periodic scan, for a specific 446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * band and scan type. 447a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pPeriodicScanParams - driver priodic scan parameters (source) 449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pChannelList - FW scan channel list (destination) 450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eScanType - scan type (passive or active) 451a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eRadioBand - band (G, A or J) 452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param uPassiveScanDfsDwellTime - Dwell time for passive scan on DFS channels (in milli-secs) 453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return Number of channels found for this scan type and band 454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_StartPeriodicScan 455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 456a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_UINT32 cmdBld_BuildPeriodicScanChannles (TPeriodicScanParams *pPeriodicScanParams, 457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ConnScanChannelInfo_t *pChannelList, 458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScanType eScanType, ERadioBand eRadioBand, 459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 uPassiveScanDfsDwellTime) 460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 uIndex, uNumChannels = 0; 462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 463a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* check all channels */ 464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for (uIndex = 0; uIndex < pPeriodicScanParams->uChannelNum; uIndex++) 465a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* if this channel is on the required band and uses the required scan type */ 467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if ((eRadioBand == pPeriodicScanParams->tChannels[ uIndex ].eBand) && 468a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (eScanType == pPeriodicScanParams->tChannels[ uIndex ].eScanType)) 469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 470a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* update scan parameters */ 471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].channel = (TI_UINT8)pPeriodicScanParams->tChannels[ uIndex ].uChannel; 472a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].scanMaxDuration = 473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ENDIAN_HANDLE_WORD ((TI_UINT16)pPeriodicScanParams->tChannels[ uIndex ].uMaxDwellTimeMs); 474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].scanMinDuration = 475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ENDIAN_HANDLE_WORD ((TI_UINT16)pPeriodicScanParams->tChannels[ uIndex ].uMinDwellTimeMs); 476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].txPowerLevelDbm = (TI_UINT8)pPeriodicScanParams->tChannels[ uIndex ].uTxPowerLevelDbm; 477a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (SCAN_TYPE_PACTSIVE == eScanType) /* DFS channel */ 478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].passiveScanDuration = ENDIAN_HANDLE_WORD ((TI_UINT16)uPassiveScanDfsDwellTime); 480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].channelFlags = 1; /* mark as DFS channel */ 481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].passiveScanDuration = ENDIAN_HANDLE_WORD ((TI_UINT16)pPeriodicScanParams->tChannels[ uIndex ].uMaxDwellTimeMs); 485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pChannelList[ uNumChannels ].channelFlags = 0; /* mark as not DFS channel */ 486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* advance mathcing channel counter */ 489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt uNumChannels++; 490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 491a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* return channel count */ 494a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return uNumChannels; 495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 497a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_StartPeriodicScan 499a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Copy driver periodic scan parameters to FW structures and send all commands to FW 500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 501a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copy driver periodic scan parameters to FW structures (SSID list, parameters including channels 502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * and start command) and send all commands to FW. 503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param pPeriodicScanParams - periodic scan driver parameters (source) 506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eScanTag - scan tag, used for scan complete and result tracking 507a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param uPassiveScanDfsDwellTimeUs - Passive dwell time for DFS channels 508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param fScanCommandResponseCB - scan command complete CB 509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCb - scan command response handle 510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return TI_OK on success, other codes indicate failure 511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_BuildPeriodicScanChannles, cmdBld_StopPeriodicScan 512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 513a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_StartPeriodicScan (TI_HANDLE hCmdBld, TPeriodicScanParams *pPeriodicScanParams, 514a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScanResultTag eScanTag, TI_UINT32 uPassiveScanDfsDwellTimeMs, 515a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt void* fScanCommandResponseCB, TI_HANDLE hCb) 516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ConnScanParameters_t tFWPeriodicScanParams; 519a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ConnScanSSIDList_t *pFWSsidList; 520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt PeriodicScanTag tScanStart; 521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 uIndex; 522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS tStatus; 523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 524a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Building start periodic scan commands:\n"); 525a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "--------------------------------------\n"); 526a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* copy parameters to FW structure */ 527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.bssType = (ScanBssType_e)pPeriodicScanParams->eBssType; 528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for (uIndex = 0; uIndex < PERIODIC_SCAN_MAX_INTERVAL_NUM; uIndex ++) 529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.cycleIntervals[ uIndex ] = 531a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ENDIAN_HANDLE_LONG (pPeriodicScanParams->uCycleIntervalMsec[ uIndex ]); 532a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 533a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.maxNumOfCycles = (TI_UINT8)pPeriodicScanParams->uCycleNum; 534a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numProbe = (TI_UINT8)pPeriodicScanParams->uProbeRequestNum; 535a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.reportThreshold = (TI_UINT8)pPeriodicScanParams->uFrameCountReportThreshold; 536a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.rssiThreshold = (TI_UINT8)pPeriodicScanParams->iRssiThreshold; 537a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.snrThreshold = (TI_INT8)pPeriodicScanParams->iSnrThreshold; 538a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.terminateOnReport = (TI_UINT8)pPeriodicScanParams->bTerminateOnReport; 539a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.resultsTag = (TI_UINT8)eScanTag; 540a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (pPeriodicScanParams->uSsidNum) 541a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 542a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case 0: /* No SSIDs defined - no need to filter according to SSID */ 543a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.ssidFilterType = (ScanSsidFilterType_e)SCAN_SSID_FILTER_TYPE_ANY; 544a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.ssidLength = 0; 545a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 546a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 547a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: /* More than one SSID - copy SSIDs to SSID list command */ 548a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pFWSsidList = os_memoryAlloc(pCmdBld->hOs, sizeof(ConnScanSSIDList_t)); 549a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (!pFWSsidList) 550005bbf20350954d05c8a111d3f487d6fddb049bbDmitry Shmidt { 551a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 552005bbf20350954d05c8a111d3f487d6fddb049bbDmitry Shmidt } 553a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 554a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if ((TI_UINT8)pPeriodicScanParams->uSsidListFilterEnabled == 1) 555a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.ssidFilterType = (ScanSsidFilterType_e)SCAN_SSID_FILTER_TYPE_LIST; 556a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 557a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.ssidFilterType = (ScanSsidFilterType_e)SCAN_SSID_FILTER_TYPE_LIST_FILTER_DISABLED; 558a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.ssidLength = 0; 559a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pFWSsidList->numOfSSIDEntries = (TI_UINT8)pPeriodicScanParams->uSsidNum; 560a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for (uIndex = 0; uIndex < pPeriodicScanParams->uSsidNum; uIndex++) 561a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 562a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pFWSsidList->SSIDList[ uIndex ].ssidType = 563a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8)pPeriodicScanParams->tDesiredSsid[ uIndex ].eVisability; 564a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pFWSsidList->SSIDList[ uIndex ].ssidLength = 565a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8)pPeriodicScanParams->tDesiredSsid[ uIndex ].tSsid.len; 566a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, (void*)&(pFWSsidList->SSIDList[ uIndex ].ssid[ 0 ]), 567a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (void*)&(pPeriodicScanParams->tDesiredSsid[ uIndex ].tSsid.str[ 0 ]), 568a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pFWSsidList->SSIDList[ uIndex ].ssidLength); 569a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 570a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 571a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* print the SSID list parameters */ 572a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_debugPrintPeriodicScanSsidList (hCmdBld, pFWSsidList); 573a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 574a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* send the SSID list command */ 575a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tStatus = cmdBld_CmdIeScanSsidList (hCmdBld, pFWSsidList, NULL, NULL); 576a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryFree(pCmdBld->hOs, pFWSsidList, sizeof(ConnScanSSIDList_t)); 577a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (TI_OK != tStatus) 578a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 579a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR , "cmdBld_StartPeriodicScan: status %d when configuring SSID list", tStatus); 580a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return tStatus; 581a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 582a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 583a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 584a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 585a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* copy channels */ 586a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numOfPassive[ 0 ] = /* build passive B/G channels */ 587a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ 0 ]), 588a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCAN_TYPE_NORMAL_PASSIVE, RADIO_BAND_2_4_GHZ, uPassiveScanDfsDwellTimeMs); 589a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numOfActive[ 0 ] = /* build active B/G channels */ 590a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ tFWPeriodicScanParams.numOfPassive[ 0 ] ]), 591a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCAN_TYPE_NORMAL_ACTIVE, RADIO_BAND_2_4_GHZ, uPassiveScanDfsDwellTimeMs); 592a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numOfPassive[ 1 ] = /* build passive A channels */ 593a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ CONN_SCAN_MAX_CHANNELS_BG ]), 594a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCAN_TYPE_NORMAL_PASSIVE, RADIO_BAND_5_0_GHZ, uPassiveScanDfsDwellTimeMs); 595a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numOfDfs = /* build DFS A channels */ 596a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ CONN_SCAN_MAX_CHANNELS_BG + tFWPeriodicScanParams.numOfPassive[ 1 ] ]), 597a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCAN_TYPE_PACTSIVE, RADIO_BAND_5_0_GHZ, uPassiveScanDfsDwellTimeMs); 598a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numOfActive[ 1 ] = /* build active A channels */ 599a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_BuildPeriodicScanChannles (pPeriodicScanParams, &(tFWPeriodicScanParams.channelList[ CONN_SCAN_MAX_CHANNELS_BG + tFWPeriodicScanParams.numOfPassive[ 1 ] + tFWPeriodicScanParams.numOfDfs ]), 600a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCAN_TYPE_NORMAL_ACTIVE, RADIO_BAND_5_0_GHZ, uPassiveScanDfsDwellTimeMs); 601a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 602a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* until J is supported, mark zero channels for J passive and active */ 603a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numOfPassive[ 2 ] = 0; 604a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tFWPeriodicScanParams.numOfActive[ 2 ] = 0; 605a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 606a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* print the command */ 607a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_debugPrintPeriodicScanParams (hCmdBld, &tFWPeriodicScanParams); 608a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 609a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Send the periodic scan parameters command */ 610a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tStatus = cmdBld_CmdIePeriodicScanParams (hCmdBld, &tFWPeriodicScanParams, NULL, NULL); 611a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (TI_OK != tStatus) 612a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 613a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR , "cmdBld_StartPeriodicScan: status %d when configuring periodic scan parameters", tStatus); 614a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return tStatus; 615a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 616a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 617a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* send the periodic scan start command */ 618a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tScanStart.scanTag = eScanTag; 619a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tStatus = cmdBld_CmdIeStartPeriodicScan (hCmdBld, &tScanStart, fScanCommandResponseCB, hCb); 620a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return tStatus; 621a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 622a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 623a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 624a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \fn cmdBld_StopPeriodicScan 625a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Stops an on-going periodic scan operation 626a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 627a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Stops an on-going periodic scan operation 628a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 629a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCmdBld - handle to the command builder object 630a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eScanTag - scan tag, used for scan complete and result tracking 631a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param fScanCommandResponseCB - scan command complete CB 632a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hCb - scan command response handle 633a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return TI_OK on success, other codes indicate failure 634a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \sa cmdBld_BuildPeriodicScanChannles, cmdBld_StartPeriodicScan 635a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 636a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_StopPeriodicScan (TI_HANDLE hCmdBld, EScanResultTag eScanTag, 637a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt void* fScanCommandResponseCB, TI_HANDLE hCb) 638a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 639a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt PeriodicScanTag tScanStop; 640a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 641a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* send the periodic scan stop command */ 642a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tScanStop.scanTag = eScanTag; 643a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeStopPeriodicScan (hCmdBld, &tScanStop, fScanCommandResponseCB, hCb); 644a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 645a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 646a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 647a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_SetBssType() 648a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 649a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set Bss type, set RxFilter 650a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 651a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 652a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 653a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 654a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 655a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 656a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 657a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS cmdBld_CmdSetBssType (TI_HANDLE hCmdBld, ScanBssType_e BssType, TI_UINT8 *HwBssType) 658a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 659a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 660a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 661a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (BssType) 662a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 663a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case BSS_INFRASTRUCTURE: 664a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).BssType = BSS_TYPE_STA_BSS; 665a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_SetRxFilter (hCmdBld, RX_CONFIG_OPTION_FOR_JOIN, RX_FILTER_OPTION_JOIN); 666a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 667a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 668a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case BSS_INDEPENDENT: 669a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).BssType = BSS_TYPE_IBSS; 670a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_SetRxFilter (hCmdBld, RX_CONFIG_OPTION_FOR_IBSS_JOIN, RX_FILTER_OPTION_DEF); 671a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 672a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 673a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 674a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pCmdBld->hReport, REPORT_SEVERITY_FATAL_ERROR, "cmdBld_SetBssType: FATAL_ERROR, unknown BssType %d\n", BssType); 675a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 676a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 677a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 678a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *HwBssType = DB_BSS(hCmdBld).BssType; 679a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 680a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 681a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 682a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 683a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 684a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 685a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_StartJoin() 686a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 687a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Enable Rx/Tx and send Start/Join command 688a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 689a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 690a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 691a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 692a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 693a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 694a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 695a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdStartJoin (TI_HANDLE hCmdBld, ScanBssType_e BssType, void *fJoinCompleteCB, TI_HANDLE hCb) 696a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 697a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 HwBssType = 0; 698a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG 699a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 700a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 *pBssId = DB_BSS(hCmdBld).BssId; 701a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 702a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INIT, "cmdBld_StartJoin: Enable Tx, Rx and Start the Bss, type=%d\n", BssType); 703a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INIT, "------------------------------------------------------------\n"); 704a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE7(pCmdBld->hReport, REPORT_SEVERITY_INIT, "START/JOIN, SSID=, BSSID=%02X-%02X-%02X-%02X-%02X-%02X, Chan=%d\n", pBssId[0], pBssId[1], pBssId[2], pBssId[3], pBssId[4], pBssId[5], DB_BSS(hCmdBld).RadioChannel); 705a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INIT, "------------------------------------------------------------\n"); 706a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */ 707a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 708a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* 709a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * set RxFilter (but don't write it to the FW, this is done in the join command), 710a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Configure templates content, ... 711a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 712a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_CmdSetBssType (hCmdBld, BssType, &HwBssType); 713a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 714a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeStartBss (hCmdBld, HwBssType, fJoinCompleteCB, hCb); 715a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 716a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 717a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 718a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdJoinBss (TI_HANDLE hCmdBld, TJoinBss *pJoinBssParams, void *fCb, TI_HANDLE hCb) 719a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 720a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 721a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TWlanParams *pWlanParams = &DB_WLAN(hCmdBld); 722a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TBssInfoParams *pBssInfoParams = &DB_BSS(hCmdBld); 723a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG 724a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 dbgSsidStr[33]; 725a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */ 726a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 727a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* for debug purpose, can be removed later*/ 728a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pJoinBssParams->ssidLength > 32) 729a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pJoinBssParams->ssidLength = 32; 730a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 731a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update Tx-Session-Counter in the Ctrl field of the Join command. */ 732a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBssInfoParams->Ctrl &= ~JOIN_CMD_CTRL_TX_SESSION; 733a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBssInfoParams->Ctrl |= (TI_UINT8)(pJoinBssParams->txSessionCount << JOIN_CMD_CTRL_OFFSET_TX_SESSION); 734a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 735a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG 736a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, (void *)dbgSsidStr, (void *)pJoinBssParams->pSSID, pJoinBssParams->ssidLength); 737a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt dbgSsidStr[pJoinBssParams->ssidLength] = '\0'; 738a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 739a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE14(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "TWD_JoinBss : bssType = %d, beaconInterval = %d, dtimInterval = %d, channel = %d, BSSID = %x-%x-%x-%x-%x-%x, ssidLength = %d, basicRateSet = 0x%x, RadioBand = %d, Ctrl = 0x%x", pJoinBssParams->bssType, pJoinBssParams->beaconInterval, pJoinBssParams->dtimInterval, pJoinBssParams->channel, pJoinBssParams->pBSSID[0], pJoinBssParams->pBSSID[1], pJoinBssParams->pBSSID[2], pJoinBssParams->pBSSID[3], pJoinBssParams->pBSSID[4], pJoinBssParams->pBSSID[5], pJoinBssParams->ssidLength, pJoinBssParams->basicRateSet, pJoinBssParams->radioBand, pBssInfoParams->Ctrl); 740a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* TI_DBG */ 741a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* 742a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * save Bss info parameters 743a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 744a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).ReqBssType = pJoinBssParams->bssType; 745a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt MAC_COPY (DB_BSS(hCmdBld).BssId, pJoinBssParams->pBSSID); 746a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pBssInfoParams->tSsid.len = pJoinBssParams->ssidLength; 747a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryZero (pCmdBld->hOs, (void *)pBssInfoParams->tSsid.str, sizeof (pBssInfoParams->tSsid.str)); 748a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, (void *)pBssInfoParams->tSsid.str, (void *)pJoinBssParams->pSSID, pJoinBssParams->ssidLength); 749a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).BeaconInterval = pJoinBssParams->beaconInterval; 750a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).DtimInterval = (TI_UINT8)pJoinBssParams->dtimInterval; 751a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).RadioChannel = pJoinBssParams->channel; 752a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_WLAN(hCmdBld).RadioBand = (TI_UINT8)pJoinBssParams->radioBand; 753a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).BasicRateSet = pJoinBssParams->basicRateSet; 754a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 755a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* In case we're joining a new BSS, reset the TKIP/AES sequence counter. */ 756a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* The firmware resets its own counter - so we won't have mismatch in the following TX complete events */ 757a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumLow = 0; 758a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumHigh = 0; 759a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 760a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pWlanParams->bJoin = TI_TRUE; 761a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pWlanParams->bStaConnected = TI_FALSE; 762a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* 763a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * call the hardware to start/join the bss 764a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 765a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdStartJoin (hCmdBld, pJoinBssParams->bssType, fCb, hCb); 766a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 767a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 768a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 769a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdTemplate (TI_HANDLE hCmdBld, TSetTemplate *pTemplateParams, void *fCb, TI_HANDLE hCb) 770a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 771a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 772a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS Stt; 773a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TTemplateParams *pTemplate; 774a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 uIndex = 0; 775a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TemplateType_e eType; 776a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 777a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_CmdTemplate: Type=%d, size=%d, index=%d, RateMask=0x%x\n", pTemplateParams->type, pTemplateParams->len, pTemplateParams->index, pTemplateParams->uRateMask); 778a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 779a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (pTemplateParams->type) 780a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 781a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case BEACON_TEMPLATE: 782a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_BEACON; 783a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).Beacon); 784a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 785a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 786a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case PROBE_RESPONSE_TEMPLATE: 787a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_PROBE_RESPONSE; 788a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).ProbeResp); 789a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 790a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 791a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case PROBE_REQUEST_TEMPLATE: 792a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pTemplateParams->eBand == RADIO_BAND_2_4_GHZ) 793a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 794a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = CFG_TEMPLATE_PROBE_REQ_2_4; 795a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).ProbeReq24); 796a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 797a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 798a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 799a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = CFG_TEMPLATE_PROBE_REQ_5; 800a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).ProbeReq50); 801a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 802a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 803a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 804a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case NULL_DATA_TEMPLATE: 805a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_NULL_DATA; 806a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).NullData); 807a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 808a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 809a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case PS_POLL_TEMPLATE: 810a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_PS_POLL; 811a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).PsPoll); 812a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 813a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 814a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case QOS_NULL_DATA_TEMPLATE: 815a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_QOS_NULL_DATA; 816a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).QosNullData); 817a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 818a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 819a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEEP_ALIVE_TEMPLATE: 820a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_KLV; 821a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt uIndex = pTemplateParams->index; 822a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).KeepAlive[uIndex]); 823a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 824a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 825a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case DISCONN_TEMPLATE: 826a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_DISCONNECT; 827a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).Disconn); 828a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 829a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 830a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case ARP_RSP_TEMPLATE: 831a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType = TEMPLATE_ARP_RSP; 832a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate = &(DB_TEMP(hCmdBld).ArpRsp); 833a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 834a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 835a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 836a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1( pCmdBld->hReport, REPORT_SEVERITY_ERROR, 837a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt "cmdBld_CmdTemplate. Invalid template type:%d\n", pTemplateParams->type); 838a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 839a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 840a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 841a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Save template information to DB (for recovery) */ 842a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate->Size = pTemplateParams->len; 843a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate->uRateMask = pTemplateParams->uRateMask; 844a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, 845a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (void *)(pTemplate->Buffer), 846a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (void *)(pTemplateParams->ptr), 847a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplateParams->len); 848a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* if (eType == TEMPLATE_ARP_RSP) 849a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 850a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt WLAN_OS_REPORT(("cmdBld_CmdTemplate: template (len=%d):\n>>>", pTemplate->Size)); 851a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt for (i=0; i<sizeof(ArpRspTemplate_t); i++ ) 852a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 853a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt WLAN_OS_REPORT((" %2x", *(pTemplate->Buffer+i))); 854a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (i%8 == 7) WLAN_OS_REPORT(("\n>>>")); 855a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 856a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt WLAN_OS_REPORT(("\n")); 857a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 858a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 859a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Configure template to FW */ 860a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt Stt = cmdBld_CmdIeConfigureTemplateFrame (hCmdBld, 861a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pTemplate, 862a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT16)pTemplateParams->len, 863a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt eType, 864a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt uIndex, /* index is only relevant for keep-alive template */ 865a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 866a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 867a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 868a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* WLAN_OS_REPORT(("cmdBld_CmdTemplate: template %d config rc=%d\n", eType, Stt)); */ 869a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return Stt; 870a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 871a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 872a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 873a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 874a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_switchChannel() 875a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 876a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Switching the serving channel 877a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 878a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: channel - new channel number 879a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 880a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 881a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 882a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 883a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 884a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdEnableTx (TI_HANDLE hCmdBld, TI_UINT8 channel, void *fCb, TI_HANDLE hCb) 885a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 886a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeEnableTx (hCmdBld, channel, fCb, hCb); 887a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 888a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 889a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 890a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 891a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_DisableTx() 892a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 893a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Disable Tx path. 894a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 895a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 896a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 897a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 898a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 899a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 900a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 901a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdDisableTx (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) 902a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 903a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeDisableTx (hCmdBld, fCb, hCb); 904a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 905a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 906a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 907a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 908a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 909a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_SwitchChannelCmd() 910a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 911a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Send Switch Channel command 912a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 913a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 914a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 915a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 916a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 917a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 918a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 919a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSwitchChannel (TI_HANDLE hCmdBld, TSwitchChannelParams *pSwitchChannelCmd, void *fCb, TI_HANDLE hCb) 920a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 921a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 922a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 923a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "\n SwitchChannelCmd :\n channelNumber = %d\n switchTime = %d\n txFlag = %d\n flush = %d \n ", pSwitchChannelCmd->channelNumber, pSwitchChannelCmd->switchTime, pSwitchChannelCmd->txFlag, pSwitchChannelCmd->flush); 924a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 925a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).RadioChannel = pSwitchChannelCmd->channelNumber; 926a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 927a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSwitchChannel (hCmdBld, pSwitchChannelCmd, fCb, hCb); 928a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 929a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 930a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 931a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 932a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_SwitchChannelCmd() 933a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 934a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Send Switch Channel command 935a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 936a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 937a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 938a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 939a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 940a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 941a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 942a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSwitchChannelCancel (TI_HANDLE hCmdBld, TI_UINT8 channel, void *fCb, TI_HANDLE hCb) 943a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 944a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 945a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 946a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "\n TWD_SwitchChannelCancelCmd :\n "); 947a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 948a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_BSS(hCmdBld).RadioChannel = channel; 949a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 950a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSwitchChannelCancel (hCmdBld, fCb, hCb); 951a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 952a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 953a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 954a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 955a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_FwDisconnect() 956a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 957a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Disconnect. 958a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 959a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 960a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 961a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 962a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 963a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 964a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 965a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdFwDisconnect (TI_HANDLE hCmdBld, TI_UINT32 uConfigOptions, TI_UINT32 uFilterOptions, DisconnectType_e uDisconType, TI_UINT16 uDisconReason, void *fCb, TI_HANDLE hCb) 966a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 967a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 968a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TWlanParams *pWlanParams = &DB_WLAN(hCmdBld); 969a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 970a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pWlanParams->bJoin = TI_FALSE; 971a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pWlanParams->bStaConnected = TI_FALSE; 972a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 973a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Sending FW disconnect, ConfigOptions=%x, FilterOPtions=%x, uDisconType=%d, uDisconReason=%d\n",uConfigOptions, uFilterOptions, uDisconType, uDisconReason); 974a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 975a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 976a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeFwDisconnect (hCmdBld, uConfigOptions, uFilterOptions, uDisconType, uDisconReason, fCb, hCb); 977a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 978a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 979a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 980a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdMeasurement (TI_HANDLE hCmdBld, 981a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TMeasurementParams *pMeasurementParams, 982a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt void *fCommandResponseCB, 983a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hCb) 984a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 985a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeMeasurement (hCmdBld, pMeasurementParams, fCommandResponseCB, hCb); 986a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 987a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 988a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 989a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 990a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_measurementStop() 991a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 992a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: send Command for stoping measurement 993a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 994a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 995a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 996a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 997a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 998a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 999a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1000a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdMeasurementStop (TI_HANDLE hCmdBld, void* fMeasureCommandResponseCB, TI_HANDLE hCb) 1001a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1002a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1003a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1004a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_measurementStop\n"); 1005a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1006a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeMeasurementStop (hCmdBld, fMeasureCommandResponseCB, hCb); 1007a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1008a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1009a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1010a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1011a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_ApDiscovery() 1012a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1013a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: send Command for AP Discovery 1014a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * to the mailbox 1015a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1016a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 1017a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1018a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 1019a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1020a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1021a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1022a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdApDiscovery (TI_HANDLE hCmdBld, TApDiscoveryParams *pApDiscoveryParams, void *fCb, TI_HANDLE hCb) 1023a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1024a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1025a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1026a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ApDiscovery\n"); 1027a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1028a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeApDiscovery (hCmdBld, pApDiscoveryParams, fCb, hCb); 1029a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1030a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1031a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1032a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1033a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_ApDiscoveryStop() 1034a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1035a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: send Command for stoping AP Discovery 1036a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1037a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 1038a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1039a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 1040a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1041a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1042a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1043a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdApDiscoveryStop (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) 1044a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1045a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1046a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1047a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_ApDiscoveryStop\n"); 1048a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1049a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeApDiscoveryStop (hCmdBld, fCb, hCb); 1050a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1051a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1052a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1053a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdNoiseHistogram (TI_HANDLE hCmdBld, TNoiseHistogram *pNoiseHistParams, void *fCb, TI_HANDLE hCb) 1054a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1055a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeNoiseHistogram (hCmdBld, pNoiseHistParams, fCb, hCb); 1056a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1057a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1058a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1059a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1060a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_PowerMgmtConfigurationSet () 1061a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1062a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the ACX power management option IE 1063a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1064a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: powerSaveParams 1065a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1066a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1067a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1068a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1069a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1070a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetPsMode (TI_HANDLE hCmdBld, TPowerSaveParams* powerSaveParams, void *fCb, TI_HANDLE hCb) 1071a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1072a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1073a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1074a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Rate conversion is done in the HAL */ 1075a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt cmdBld_ConvertAppRatesBitmap (powerSaveParams->NullPktRateModulation, 1076a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1077a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt &powerSaveParams->NullPktRateModulation); 1078a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1079a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE5(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, " cmdBld_PowerMgmtConfigurationSet ps802_11Enable=0x%x hangOverPeriod=%d needToSendNullData=0x%x numNullPktRetries=%d NullPktRateModulation=0x%x\n", powerSaveParams->ps802_11Enable, powerSaveParams->hangOverPeriod, powerSaveParams->needToSendNullData, powerSaveParams->numNullPktRetries, powerSaveParams->NullPktRateModulation); 1080a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1081a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetPsMode (hCmdBld, powerSaveParams, fCb, hCb); 1082a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1083a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1084a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1085a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1086a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_EnableRx() 1087a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1088a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Enable Rx and send Start/Join command 1089a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1090a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 1091a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1092a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 1093a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1094a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1095a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1096a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdEnableRx (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) 1097a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1098a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeEnableRx (hCmdBld, fCb, hCb); 1099a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1102a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, TI_BOOL reconfFlag, void *fCb, TI_HANDLE hCb) 1103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyIdx = (TI_UINT8)pKey->keyIndex; 1106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* store the security key for reconfigure phase (FW reload)*/ 1108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (reconfFlag != TI_TRUE) 1109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (keyIdx >= (pCmdBld->tSecurity.uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS)) 1111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE2(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CmdAddKey: ERROR Key keyIndex field out of range =%d, range is (0 to %d)\n", pKey->keyIndex, pCmdBld->tSecurity.uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION+NO_OF_EXTRA_RECONF_SECUR_KEYS - 1); 1113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pKey->keyType == KEY_NULL) 1118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CmdAddKey: ERROR KeyType is NULL_KEY\n"); 1120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, 1125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (void *)(DB_KEYS(pCmdBld).pReconfKeys + keyIdx), 1126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (void *)pKey, 1127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sizeof(TSecurityKeys)); 1128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (pCmdBld->tSecurity.eSecurityMode) 1131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_WEP: 1133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_WEP104: 1134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdAddWepDefaultKey (hCmdBld, pKey, fCb, hCb); 1135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_TKIP: 1137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_AES_CCMP: 1138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #ifdef GEM_SUPPORTED 1139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_GEM: 1140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #endif 1141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdAddWpaKey (hCmdBld, pKey, fCb, hCb); 1142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 1144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1149a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWpaKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, void *fCb, TI_HANDLE hCb) 1150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Only WEP, TKIP, AES keys are handled*/ 1154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (pKey->keyType) 1155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_WEP: 1157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Configure the encKeys to the HW - default keys cache*/ 1158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdAddWepDefaultKey (hCmdBld, pKey, fCb, hCb); 1159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_TKIP: 1161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Set the REAL TKIP key into the TKIP key cache*/ 1162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (cmdBld_CmdAddTkipMicMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK) 1163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 1166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_AES: 1168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (cmdBld_CmdAddAesMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK) 1169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 1171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #ifdef GEM_SUPPORTED 1173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_GEM: 1174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (cmdBld_CmdAddGemMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK) 1175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 1177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #endif 1178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 1180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* AES or TKIP key has been successfully added. Store the current */ 1184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* key type of the unicast (i.e. transmit !) key */ 1185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (!MAC_BROADCAST (pKey->macAddress)) 1186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->tSecurity.eCurTxKeyType = pKey->keyType; 1188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 1191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1194a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWpaKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, void *fCb, TI_HANDLE hCb) 1195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Only WEP, TKIP, AES keys are handled*/ 1197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (pKey->keyType) 1198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_WEP: 1200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Configure the encKeys to the HW - default keys cache*/ 1201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdRemoveWepDefaultKey (hCmdBld, pKey, fCb, hCb); 1202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_TKIP: 1204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Configure the encKeys to the HW - mapping keys cache*/ 1205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* configure through SET_KEYS command */ 1206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* remove the TKIP key from the TKIP key cache*/ 1208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (cmdBld_CmdRemoveTkipMicMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK) 1209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return (TI_NOK); 1210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 1211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_AES: 1213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (cmdBld_CmdRemoveAesMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK) 1214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 1216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1217a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #ifdef GEM_SUPPORTED 1218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case KEY_GEM: 1219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (cmdBld_CmdRemoveGemMappingKey (hCmdBld, pKey, fCb, hCb) != TI_OK) 1220a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 1222a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #endif 1223a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1224a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 1225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 1229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 1233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * ---------------------------------------------------------------------------- 1234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Function : cmdBld_CmdRemoveKey 1235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Input : 1237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Output : 1238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Process : 1239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Note(s) : 1240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * ----------------------------------------------------------------------------- 1241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 1242a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveKey (TI_HANDLE hCmdBld, TSecurityKeys* pKey, void *fCb, TI_HANDLE hCb) 1243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyIdx = (TI_UINT8)pKey->keyIndex; 1246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Clear the remove key in the reconfigure data base */ 1248a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (DB_KEYS(pCmdBld).pReconfKeys + keyIdx)->keyType = KEY_NULL; 1249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (pCmdBld->tSecurity.eSecurityMode) 1251a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_WEP: 1253a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_WEP104: 1254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdRemoveWepDefaultKey (hCmdBld, pKey, fCb, hCb); 1255a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_TKIP: 1256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_AES_CCMP: 1257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #ifdef GEM_SUPPORTED 1258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case TWD_CIPHER_GEM: 1259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt #endif 1260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdRemoveWpaKey (hCmdBld, pKey, fCb, hCb); 1261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 1263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_WepDefaultKeyAdd() 1270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual default key 1272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1279a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWepDefaultKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 1282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 sMacAddrDummy[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 1283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Non WEP keys are trashed*/ 1285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (aSecurityKey->keyType != KEY_WEP) 1286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = cmdBld_CmdIeSetKey (hCmdBld, 1291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_ADD_OR_REPLACE, 1292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sMacAddrDummy, 1293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, 1294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CIPHER_SUITE_WEP, 1295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->encKey, 1297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 1302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_WepDefaultKeyRemove() 1306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual default key 1308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1313a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1315a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetWepDefaultKeyId (TI_HANDLE hCmdBld, TI_UINT8 aKeyIdVal, void *fCb, TI_HANDLE hCb) 1316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 sMacAddrDummy[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 1319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Save the deafult key ID for reconfigure phase */ 1321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_KEYS(pCmdBld).bDefaultKeyIdValid = TI_TRUE; 1322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt DB_KEYS(pCmdBld).uReconfDefaultKeyId = aKeyIdVal; 1323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_SET_ID, 1326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sMacAddrDummy, 1327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CIPHER_SUITE_WEP, 1329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aKeyIdVal, 1330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1336a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_WepDefaultKeyRemove() 1340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1341a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual default key 1342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1345a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1348a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1349a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWepDefaultKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1350a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1351a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 sMacAddrDummy[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 1352a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Non WEP keys are trashed*/ 1354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (aSecurityKey->keyType != KEY_WEP) 1355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 1357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_REMOVE, 1361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sMacAddrDummy, 1362a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, 1363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CIPHER_SUITE_WEP, 1364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->encKey, 1366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1369a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1370a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1371a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1372a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_WepMappingKeyAdd() 1374a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key 1376a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1381a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1383a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddWepMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_ADD_OR_REPLACE, 1387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->macAddress, 1388a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, 1389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CIPHER_SUITE_WEP, 1390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1391a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->encKey, 1392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1393a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1395a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_WepMappingKeyRemove() 1400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key 1402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1404a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1409a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveWepMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/ 1412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (!MAC_BROADCAST(aSecurityKey->macAddress) ) 1413a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 1415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_REMOVE, 1418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->macAddress, 1419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, 1420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt CIPHER_SUITE_WEP, 1421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->encKey, 1423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1426a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1428a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1431a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_TkipMicMappingKeyAdd() 1432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1433a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key 1434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1435a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1439a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1440a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1441a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddTkipMicMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyType; 1445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyBuffer[KEY_SIZE_TKIP]; 1446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1447a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType = CIPHER_SUITE_TKIP; 1448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, (void*)(&keyBuffer[0]), (void*)aSecurityKey->encKey, 16); 1450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, (void*)(&keyBuffer[16]), (void*)aSecurityKey->micRxKey, 8); 1451a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryCopy (pCmdBld->hOs, (void*)(&keyBuffer[24]), (void*)aSecurityKey->micTxKey, 8); 1452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_ADD_OR_REPLACE, 1455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->macAddress, 1456a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_SIZE_TKIP, 1457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType, 1458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)keyBuffer, 1460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumLow, 1461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumHigh, 1462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1463a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1465a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_TkipMappingKeyAdd() 1468a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual mapping key 1470a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1472a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1477a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveTkipMicMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyType; 1480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType = CIPHER_SUITE_TKIP; 1482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/ 1484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (!MAC_BROADCAST(aSecurityKey->macAddress) ) 1485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 1487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1491a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_REMOVE, 1492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->macAddress, 1493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, 1494a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType, 1495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->encKey, 1497a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1499a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1501a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_AesMappingKeyAdd() 1506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1507a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual Aes mapping key 1508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1513a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1514a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1515a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddAesMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyType; 1519a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType = CIPHER_SUITE_AES; 1521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_AesMappingKeyAdd: uSecuritySeqNumHigh=%ld, pHwCtrl->uSecuritySeqNumLow=%ld \n", pCmdBld->uSecuritySeqNumHigh, pCmdBld->uSecuritySeqNumLow); 1523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1524a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1525a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_ADD_OR_REPLACE, 1526a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->macAddress, 1527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, keyType, 1528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->encKey, 1530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumLow, 1531a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumHigh, 1532a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1533a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1534a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1535a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1536a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1537a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /**************************************************************************** 1538a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_AesMappingKeyRemove() 1539a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1540a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Remove Aes mapping key 1541a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1542a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1543a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1544a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1545a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1546a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1547a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1548a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveAesMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1549a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1550a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyType; 1551a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1552a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType = CIPHER_SUITE_AES; 1553a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1554a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/ 1555a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (!MAC_BROADCAST(aSecurityKey->macAddress) ) 1556a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1557a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 1558a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1559a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1560a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1561a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_REMOVE, 1562a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->macAddress, 1563a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, 1564a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType, 1565a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1566a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_UINT8*)aSecurityKey->encKey, 1567a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1568a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1569a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1570a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1571a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1572a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1573a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1574a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_CmdSetStaState() 1575a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1576a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set station status . 1577a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1578a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: None 1579a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1580a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: None 1581a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1582a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1583a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1584a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdSetStaState (TI_HANDLE hCmdBld, TI_UINT8 staState, void *fCb, TI_HANDLE hCb) 1585a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1586a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1587a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TWlanParams *pWlanParams = &DB_WLAN(hCmdBld); 1588a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1589a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pWlanParams->bStaConnected = TI_TRUE; 1590a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "Sending StaState %d\n",staState); 1591a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1592a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetStaState (hCmdBld, staState, fCb, hCb); 1593a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1594a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1595a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef GEM_SUPPORTED 1596a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1597a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_CmdAddGemMappingKey() 1598a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1599a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Set the actual GEM mapping key 1600a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1601a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1602a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1603a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1604a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1605a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1606a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1607a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdAddGemMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1608a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1609a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1610a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyType; 1611a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1612a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType = CIPHER_SUITE_GEM; 1613a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1614a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1615a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_ADD_OR_REPLACE, 1616a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->macAddress, 1617a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt MAX_KEY_SIZE, 1618a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType, 1619a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1620a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encKey, 1621a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumLow, 1622a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pCmdBld->uSecuritySeqNumHigh, 1623a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1624a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1625a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1626a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1627a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1628a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1629a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_CmdRemoveGemMappingKey() 1630a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1631a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: Remove GEM mapping key 1632a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1633a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1634a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1635a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1636a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1637a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: TI_OK or TI_NOK 1638a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1639a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdRemoveGemMappingKey (TI_HANDLE hCmdBld, TSecurityKeys* aSecurityKey, void *fCb, TI_HANDLE hCb) 1640a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1641a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 keyType; 1642a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1643a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType = CIPHER_SUITE_GEM; 1644a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1645a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /*In the new security interface it is not allowed to remove uni-cast keys. it will be cleaned on the next join command*/ 1646a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (!MAC_BROADCAST(aSecurityKey->macAddress) ) 1647a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 1648a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 1649a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1650a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1651a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeSetKey (hCmdBld, 1652a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt KEY_REMOVE, 1653a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->macAddress, 1654a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encLen, 1655a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt keyType, 1656a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->keyIndex, 1657a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt aSecurityKey->encKey, 1658a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1659a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 0, 1660a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fCb, 1661a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt hCb); 1662a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 1663a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /*GEM_SUPPORTED*/ 1664a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1665a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/**************************************************************************** 1666a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * cmdBld_healthCheck() 1667a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt **************************************************************************** 1668a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DESCRIPTION: 1669a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1670a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * INPUTS: 1671a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1672a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OUTPUT: 1673a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 1674a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * RETURNS: 1675a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt ****************************************************************************/ 1676a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdHealthCheck (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb) 1677a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1678a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TCmdBld *pCmdBld = (TCmdBld *)hCmdBld; 1679a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1680a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CmdIeHealthCheck\n"); 1681a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1682a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeHealthCheck (hCmdBld, fCb, hCb); 1683a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1684a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1685a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS cmdBld_CmdTest (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb, TTestCmd* pTestCmd) 1686a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 1687a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return cmdBld_CmdIeTest (hCmdBld, fCb, hCb, pTestCmd); 1688a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 1689a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 1690