1981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* 2981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * mlmeSm.c 3981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 4981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * All rights reserved. 6981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 7981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Redistribution and use in source and binary forms, with or without 8981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * modification, are permitted provided that the following conditions 9981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * are met: 10981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 11981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Redistributions of source code must retain the above copyright 12981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * notice, this list of conditions and the following disclaimer. 13981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Redistributions in binary form must reproduce the above copyright 14981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * notice, this list of conditions and the following disclaimer in 15981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * the documentation and/or other materials provided with the 16981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * distribution. 17981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Neither the name Texas Instruments nor the names of its 18981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * contributors may be used to endorse or promote products derived 19981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * from this software without specific prior written permission. 20981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 21981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 33981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 34981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** \file mlmeSM.c 35981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * \brief 802.11 MLME SM source 36981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 37981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * \see mlmeSM.h 38981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 39981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 40981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 41981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/ 42981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* */ 43981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* MODULE: mlmeSM.c */ 44981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* PURPOSE: 802.11 MLME SM source */ 45981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* */ 46981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/ 47981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 48981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define __FILE_ID__ FILE_ID_69 49981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "osApi.h" 50981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "paramOut.h" 51981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "fsm.h" 52981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "report.h" 53981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "smeApi.h" 54981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "AssocSM.h" 55981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "authSm.h" 56981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "mlmeBuilder.h" 57981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "mlmeSm.h" 58981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "openAuthSm.h" 59981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "sharedKeyAuthSm.h" 60981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "connApi.h" 61981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "DrvMainModules.h" 62981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 63981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 64981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef TI_DBG 65981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "siteMgrApi.h" 66981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif 67981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Constants */ 68981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 69981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Enumerations */ 70981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 71981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Typedefs */ 72981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 73981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Structures */ 74981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 75981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* External data definitions */ 76981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 77981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* External functions definitions */ 78981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 79981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Global variables */ 80981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 81981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Local function prototypes */ 82981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic void mlme_stopAssocAndAuth(mlme_t *pMlme); 83981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 84981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* functions */ 85981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 86981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 87981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 88981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_Create - allocate memory for MLME SM 89981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 90981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 91981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 92981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Allocate memory for MLME SM. \n 93981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Allocates memory for MLME context. \n 94981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Allocates memory for MLME timer. \n 95981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Allocates memory for MLME SM matrix. \n 96981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 97981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b ARGS: 98981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 99981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I - pOs - OS context \n 100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa rsn_mainSecSmKeysOnlyStop() 106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_HANDLE mlme_create(TI_HANDLE hOs) 108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pHandle; 110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* allocate MLME context memory */ 113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle = (mlme_t*)os_memoryAlloc(hOs, sizeof(mlme_t)); 114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle == NULL) 115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return NULL; 117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* zero all MLME context */ 120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memoryZero(hOs, pHandle, sizeof(mlme_t)); 121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hOs = hOs; 123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* allocate memory for MLME state machine */ 125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = fsm_Create(hOs, &pHandle->pMlmeSm, MLME_SM_NUM_STATES, MLME_SM_NUM_EVENTS); 126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (status != TI_OK) 127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memoryFree(hOs, pHandle, sizeof(mlme_t)); 129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return NULL; 130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return pHandle; 133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_Unload - unload MLME SM from memory 139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Unload MLME SM from memory 143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b ARGS: 145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I - hMlme - MLME SM context \n 147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa rsn_mainSecSmKeysOnlyStop() 153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_unload(TI_HANDLE hMlme) 155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pHandle; 158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle = (mlme_t*)hMlme; 160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = fsm_Unload(pHandle->hOs, pHandle->pMlmeSm); 162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (status != TI_OK) 163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* report failure but don't stop... */ 165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_memoryFree(pHandle->hOs, hMlme, sizeof(mlme_t)); 168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_smConfig - configure a new MLME SM 175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Configure a new MLME SM and other modules handles. 179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* void 183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa mlme_Create, mlme_Unload 185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid mlme_init (TStadHandlesList *pStadHandles) 187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pHandle = (mlme_t *)(pStadHandles->hMlmeSm); 189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /** Main 802.1X State Machine matrix */ 191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fsm_actionCell_t mlme_smMatrix[MLME_SM_NUM_STATES][MLME_SM_NUM_EVENTS] = 192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for IDLE state */ 194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {{MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smStartIdle}, /* MLME_SM_EVENT_START */ 195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smNOP}, /* MLME_SM_EVENT_STOP */ 196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }, 201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for AUTH_WAIT state */ 202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {{MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smNOP}, /* MLME_SM_EVENT_STOP */ 204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smAuthSuccessAuthWait}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smAuthFailAuthWait}, /* MLME_SM_EVENT_AUTH_FAIL */ 206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }, 209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for ASSOC_WAIT state */ 210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {{MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smStopAssocWait}, /* MLME_SM_EVENT_STOP */ 212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smAssocSuccessAssocWait}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smAssocFailAssocWait} /* MLME_SM_EVENT_ASSOC_FAIL */ 216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }, 217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for ASSOC state */ 218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {{MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smStopAssoc}, /* MLME_SM_EVENT_STOP */ 220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fsm_Config(pHandle->pMlmeSm, &mlme_smMatrix[0][0], MLME_SM_NUM_STATES, MLME_SM_NUM_EVENTS, mlme_smEvent, pStadHandles->hOs); 228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->currentState = MLME_SM_STATE_IDLE; 230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->legacyAuthType = AUTH_LEGACY_NONE; 231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->reAssoc = TI_FALSE; 232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->disConnType = DISCONNECT_IMMEDIATE; 233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->disConnReason = STATUS_UNSPECIFIED; 234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hAssoc = pStadHandles->hAssoc; 236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hAuth = pStadHandles->hAuth; 237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hSiteMgr = pStadHandles->hSiteMgr; 238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hCtrlData = pStadHandles->hCtrlData; 239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hTxMgmtQ = pStadHandles->hTxMgmtQ; 240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hMeasurementMgr = pStadHandles->hMeasurementMgr; 241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hSwitchChannel = pStadHandles->hSwitchChannel; 242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hRegulatoryDomain = pStadHandles->hRegulatoryDomain; 243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hReport = pStadHandles->hReport; 244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hOs = pStadHandles->hOs; 245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hConn = pStadHandles->hConn; 246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hCurrBss = pStadHandles->hCurrBss; 247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hApConn = pStadHandles->hAPConnection; 248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hScanCncn = pStadHandles->hScanCncn; 249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hQosMngr = pStadHandles->hQosMngr; 250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hTWD = pStadHandles->hTWD; 251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->hTxCtrl = pStadHandles->hTxCtrl; 252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt debug info 255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->debug_lastProbeRspTSFTime = 0; 257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->debug_lastDtimBcnTSFTime = 0; 258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->debug_lastBeaconTSFTime = 0; 259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->debug_isFunctionFirstTime = TI_TRUE; 260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->BeaconsCounterPS = 0; 261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid mlme_SetDefaults (TI_HANDLE hMlmeSm, TMlmeInitParams *pMlmeInitParams) 264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pMlme = (mlme_t *)(hMlmeSm); 266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* set default values */ 268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pMlme->bParseBeaconWSC = pMlmeInitParams->parseWSCInBeacons; 269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_setParam(TI_HANDLE hMlmeSm, 272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t *pParam) 273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pMlmeSm = (mlme_t *)hMlmeSm; 275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch(pParam->paramType) 277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case MLME_LEGACY_TYPE_PARAM: 279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch (pParam->content.mlmeLegacyAuthType) 281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case AUTH_LEGACY_RESERVED1: 283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case AUTH_LEGACY_OPEN_SYSTEM: 284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* First configure the MLME with the new legacy authentication type */ 285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pMlmeSm->legacyAuthType = pParam->content.mlmeLegacyAuthType; 286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Now configure the authentication module. */ 287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return auth_setParam(pMlmeSm->hAuth, pParam); 289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case AUTH_LEGACY_SHARED_KEY: 291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* First configure the MLME with the new legacy authentication type */ 292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pMlmeSm->legacyAuthType = AUTH_LEGACY_SHARED_KEY; 293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Now configure the authentication module. */ 294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return auth_setParam(pMlmeSm->hAuth, pParam); 296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case AUTH_LEGACY_AUTO_SWITCH: 298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* First configure the MLME with the new legacy authentication type */ 299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pMlmeSm->legacyAuthType = AUTH_LEGACY_AUTO_SWITCH; 300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Now configure the authentication module, 301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Auto switch mode means start always with shared key, if fail move to open system. */ 302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pParam->content.authLegacyAuthType = AUTH_LEGACY_SHARED_KEY; 304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return auth_setParam(pMlmeSm->hAuth, pParam); 305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE1(pMlmeSm->hReport, REPORT_SEVERITY_ERROR, "Set param, Params is not supported, 0x%x\n\n", pParam->content.mlmeLegacyAuthType); 308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return PARAM_VALUE_NOT_VALID; 309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* break; - unreachable */ 311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case MLME_RE_ASSOC_PARAM: 313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pMlmeSm->reAssoc = pParam->content.mlmeReAssoc; 314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE1(pMlmeSm->hReport, REPORT_SEVERITY_ERROR, "Set param, Params is not supported, 0x%x\n\n", pParam->paramType); 318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return PARAM_NOT_SUPPORTED; 319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_getParam(TI_HANDLE hMlmeSm, 325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t *pParam) 326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pMlmeSm = (mlme_t *)hMlmeSm; 328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt switch(pParam->paramType) 330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case MLME_LEGACY_TYPE_PARAM: 332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pParam->content.mlmeLegacyAuthType = pMlmeSm->legacyAuthType; 333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case MLME_CAPABILITY_PARAM: 336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pParam->content.mlmeLegacyAuthType = pMlmeSm->legacyAuthType; 337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt assoc_smCapBuild(pMlmeSm->hAssoc, &(pParam->content.siteMgrSiteCapability)); 338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt case MLME_BEACON_RECV: 341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pParam->content.siteMgrTiWlanCounters.BeaconsRecv = pMlmeSm->BeaconsCounterPS; 342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt break; 343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 344981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt default: 345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE1(pMlmeSm->hReport, REPORT_SEVERITY_ERROR, "Get param, Params is not supported, %d\n\n", pParam->content.mlmeLegacyAuthType); 346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return PARAM_NOT_SUPPORTED; 347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 351981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_Start - Start event for the MLME SM 355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 356981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Start event for the MLME SM 359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b ARGS: 361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I - hMlme - MLME SM context \n 363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa mlme_Stop, mlme_Recv 369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_start(TI_HANDLE hMlme) 371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 372653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt TI_STATUS status; 373653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt mlme_t *pHandle = (mlme_t*)hMlme; 374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle == NULL) 376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "mlme_start: pHandle->legacyAuthType == AUTH_LEGACY_NONE\n"); 383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 384981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_START, pHandle); 387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_Stop - Stop event for the MLME SM 394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Stop event for the MLME SM 398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b ARGS: 400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I - hMlme - MLME SM context \n 402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 406981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 407981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa mlme_Start, mlme_Recv 408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_stop(TI_HANDLE hMlme, DisconnectType_e disConnType, mgmtStatus_e reason) 410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pHandle; 413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle = (mlme_t*)hMlme; 415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->disConnType = disConnType; 420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->disConnReason = reason; 421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_STOP, pHandle); 423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_reportAuthStatus - Set a specific parameter to the MLME SM 431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Set a specific parameter to the MLME SM. 435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b ARGS: 437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I - hMlme - MLME SM context \n 439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I/O - pParam - Parameter \n 440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa mlme_Start, mlme_Stop 446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_reportAuthStatus(TI_HANDLE hMlme, TI_UINT16 status) 448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pHandle; 450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t param; 451981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS fStatus; 452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 453981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle = (mlme_t*)hMlme; 454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle == NULL) 456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->mlmeData.uStatusCode = status; 462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* If status is successful */ 464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (status == 0) 465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Mark a successful status - used for conn.c */ 467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_SUCCESSFUL; 468981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_AUTH_SUCCESS, pHandle); 469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Now, if the MLME legacy auth type is AUTO_SWITCH, and the Auth legacy auth type is shared key, 473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt we configure the auth SM to open system, otherwise, this is really an authentication failure. */ 474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.paramType = AUTH_LEGACY_TYPE_PARAM; 475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt auth_getParam(pHandle->hAuth, ¶m); 476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if ((pHandle->legacyAuthType == AUTH_LEGACY_AUTO_SWITCH) && (param.content.authLegacyAuthType == AUTH_LEGACY_SHARED_KEY)) 478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.content.authLegacyAuthType = AUTH_LEGACY_OPEN_SYSTEM; 480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fStatus = auth_setParam(pHandle->hAuth, ¶m); 481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fStatus = auth_start(pHandle->hAuth); 482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_AUTH_REJECT; 487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_AUTH_FAIL, pHandle); 488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return fStatus; 493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_reportAssocStatus - Set a specific parameter to the MLME SM 498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Set a specific parameter to the MLME SM. 502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b ARGS: 504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I - hMlme - MLME SM context \n 506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I/O - pParam - Parameter \n 507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa mlme_Start, mlme_Stop 513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_reportAssocStatus(TI_HANDLE hMlme, TI_UINT16 status) 515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pHandle; 517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS fStatus; 518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle = (mlme_t*)hMlme; 520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle == NULL) 522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->mlmeData.uStatusCode = status; 528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* If status is successful */ 530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (status == 0) 531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_SUCCESSFUL; 533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_ASSOC_SUCCESS, pHandle); 534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } else 535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_ASSOC_REJECT; 537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_ASSOC_FAIL, pHandle); 538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return fStatus; 541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** 545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* mlme_SetParam - Set a specific parameter to the MLME SM 547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b Description: 549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* Set a specific parameter to the MLME SM. 551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b ARGS: 553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I - hMlme - MLME SM context \n 555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* I/O - pParam - Parameter \n 556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \b RETURNS: 558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* 561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt* \sa mlme_Start, mlme_Stop 562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*/ 563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hMlme) 564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_t *pMlme = (mlme_t *)hMlme; 566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT8 nextState; 568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = fsm_GetNextState(pMlme->pMlmeSm, *currentState, event, &nextState); 570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (status != TI_OK) 571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE0(pMlme->hReport, REPORT_SEVERITY_ERROR, "MLME_SM: ERROR - failed getting next state \n"); 573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 574981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return(TI_NOK); 575981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 576981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 577981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE3( pMlme->hReport, REPORT_SEVERITY_INFORMATION, "mlme_smEvent: <currentState = %d, event = %d> --> nextState = %d\n", *currentState, event, nextState); 578981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 579981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = fsm_Event(pMlme->pMlmeSm, currentState, event, (void *)pMlme); 580981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 581981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return(status); 582981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 583981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 584981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* state machine functions */ 585981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 586981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smStartIdle(mlme_t *pMlme) 587981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 588981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 589981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 590981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = auth_start(pMlme->hAuth); 591981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 592981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 593981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 594981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 595981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smClass3Idle(mlme_t *pMlme) 596981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 597981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 598981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 599981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 600981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 601981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 602981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAuthSuccessAuthWait(mlme_t *pMlme) 603981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 604981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 605981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 606981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pMlme->reAssoc) 607981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 608981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = reassoc_start(pMlme->hAssoc); 609981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 610981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt else 611981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 612981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = assoc_start(pMlme->hAssoc); 613981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 614981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 615981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 616981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 617981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 618981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAuthFailAuthWait(mlme_t *pMlme) 619981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 620981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 621981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 622981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = mlme_smReportStatus(pMlme); 623981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 624981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 625981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 626981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 627981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smStopAssocWait(mlme_t *pMlme) 628981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 629981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_stopAssocAndAuth(pMlme); 630981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 631981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 632981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 633981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAssocSuccessAssocWait(mlme_t *pMlme) 634981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 635981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 636981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 637981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = mlme_smReportStatus(pMlme); 638981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 639981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 640981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 641981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 642981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smAssocFailAssocWait(mlme_t *pMlme) 643981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 644981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 645981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 646981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = mlme_smReportStatus(pMlme); 647981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 648981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 649981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 650981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 651981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 652981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smStopAssoc(mlme_t *pMlme) 653981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 654981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt mlme_stopAssocAndAuth(pMlme); 655981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 656981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 657981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 658981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 659981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 660981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smNOP(mlme_t *pMlme) 661981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 662981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 663981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 664981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 665981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smActionUnexpected(mlme_t *pMlme) 666981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 667981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 668981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 669981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 670981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* local functions */ 671981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 672981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS mlme_smReportStatus(mlme_t *pMlme) 673981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 674981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 675981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 676981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (pMlme == NULL) 677981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 678981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_NOK; 679981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 680981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 681981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = conn_reportMlmeStatus(pMlme->hConn, pMlme->mlmeData.mgmtStatus, pMlme->mlmeData.uStatusCode); 682981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 683981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 684981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 685981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 686981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic void mlme_stopAssocAndAuth(mlme_t *pMlme) 687981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 688981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 689981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_BOOL sendDeAuth; 690981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_BOOL sendDisAssoc; 691981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 692981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Don't send deauth/disassoc, FW will do it on disconnect command */ 693981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt sendDeAuth = TI_FALSE; 694981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt sendDisAssoc = TI_FALSE; 695981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 696981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE0(pMlme->hReport, REPORT_SEVERITY_INFORMATION, "mlme_stopAssocAndAuth: Auth/assoc stop without sending deauth/disassoc\n"); 697981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 698981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt assoc_setDisAssocFlag(pMlme->hAssoc, sendDisAssoc); 699981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt assoc_stop(pMlme->hAssoc); 700981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 701981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt auth_stop(pMlme->hAuth, sendDeAuth, pMlme->disConnReason ); 702981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 703981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************** 704981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt** 705981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt** MLME messages builder/Parser 706981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt** 707981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt*****************************************************************************/ 708981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 709981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 710981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 711981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 712981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 713981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 714981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 715