1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * mlmeSm.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/** \file mlmeSM.c 35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief 802.11 MLME SM source 36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see mlmeSM.h 38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/ 42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* */ 43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* MODULE: mlmeSM.c */ 44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* PURPOSE: 802.11 MLME SM source */ 45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* */ 46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/ 47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__ FILE_ID_69 49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "osApi.h" 50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "paramOut.h" 51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "fsm.h" 52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h" 53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "smeApi.h" 54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "AssocSM.h" 55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "authSm.h" 56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "mlmeBuilder.h" 57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "mlmeSm.h" 58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "openAuthSm.h" 59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "sharedKeyAuthSm.h" 60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "connApi.h" 61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "DrvMainModules.h" 62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG 65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "siteMgrApi.h" 66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif 67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Constants */ 68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Enumerations */ 70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Typedefs */ 72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Structures */ 74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External data definitions */ 76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* External functions definitions */ 78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Global variables */ 80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Local function prototypes */ 82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic void mlme_stopAssocAndAuth(mlme_t *pMlme); 83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* functions */ 85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_Create - allocate memory for MLME SM 89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Allocate memory for MLME SM. \n 93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Allocates memory for MLME context. \n 94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Allocates memory for MLME timer. \n 95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Allocates memory for MLME SM matrix. \n 96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - pOs - OS context \n 100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa rsn_mainSecSmKeysOnlyStop() 106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 107a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_HANDLE mlme_create(TI_HANDLE hOs) 108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pHandle; 110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* allocate MLME context memory */ 113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle = (mlme_t*)os_memoryAlloc(hOs, sizeof(mlme_t)); 114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle == NULL) 115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return NULL; 117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* zero all MLME context */ 120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryZero(hOs, pHandle, sizeof(mlme_t)); 121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hOs = hOs; 123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* allocate memory for MLME state machine */ 125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_Create(hOs, &pHandle->pMlmeSm, MLME_SM_NUM_STATES, MLME_SM_NUM_EVENTS); 126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status != TI_OK) 127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryFree(hOs, pHandle, sizeof(mlme_t)); 129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return NULL; 130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return pHandle; 133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_Unload - unload MLME SM from memory 139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Unload MLME SM from memory 143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - hMlme - MLME SM context \n 147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa rsn_mainSecSmKeysOnlyStop() 153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 154a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_unload(TI_HANDLE hMlme) 155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pHandle; 158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle = (mlme_t*)hMlme; 160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_Unload(pHandle->hOs, pHandle->pMlmeSm); 162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status != TI_OK) 163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* report failure but don't stop... */ 165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_memoryFree(pHandle->hOs, hMlme, sizeof(mlme_t)); 168a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_smConfig - configure a new MLME SM 175a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Configure a new MLME SM and other modules handles. 179a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 181a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* void 183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 184a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa mlme_Create, mlme_Unload 185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid mlme_init (TStadHandlesList *pStadHandles) 187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pHandle = (mlme_t *)(pStadHandles->hMlmeSm); 189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /** Main 802.1X State Machine matrix */ 191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fsm_actionCell_t mlme_smMatrix[MLME_SM_NUM_STATES][MLME_SM_NUM_EVENTS] = 192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for IDLE state */ 194a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {{MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smStartIdle}, /* MLME_SM_EVENT_START */ 195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smNOP}, /* MLME_SM_EVENT_STOP */ 196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for AUTH_WAIT state */ 202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {{MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smNOP}, /* MLME_SM_EVENT_STOP */ 204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smAuthSuccessAuthWait}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smAuthFailAuthWait}, /* MLME_SM_EVENT_AUTH_FAIL */ 206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_AUTH_WAIT, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for ASSOC_WAIT state */ 210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {{MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smStopAssocWait}, /* MLME_SM_EVENT_STOP */ 212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC_WAIT, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smAssocSuccessAssocWait}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smAssocFailAssocWait} /* MLME_SM_EVENT_ASSOC_FAIL */ 216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 217a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for ASSOC state */ 218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {{MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_START */ 219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_IDLE, (fsm_Action_t)mlme_smStopAssoc}, /* MLME_SM_EVENT_STOP */ 220a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_SUCCESS */ 221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_AUTH_FAIL */ 222a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected}, /* MLME_SM_EVENT_ASSOC_SUCCESS */ 223a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {MLME_SM_STATE_ASSOC, (fsm_Action_t)mlme_smActionUnexpected} /* MLME_SM_EVENT_ASSOC_FAIL */ 224a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }; 226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fsm_Config(pHandle->pMlmeSm, &mlme_smMatrix[0][0], MLME_SM_NUM_STATES, MLME_SM_NUM_EVENTS, mlme_smEvent, pStadHandles->hOs); 228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->currentState = MLME_SM_STATE_IDLE; 230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->legacyAuthType = AUTH_LEGACY_NONE; 231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->reAssoc = TI_FALSE; 232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->disConnType = DISCONNECT_IMMEDIATE; 233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->disConnReason = STATUS_UNSPECIFIED; 234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hAssoc = pStadHandles->hAssoc; 236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hAuth = pStadHandles->hAuth; 237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hSiteMgr = pStadHandles->hSiteMgr; 238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hCtrlData = pStadHandles->hCtrlData; 239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hTxMgmtQ = pStadHandles->hTxMgmtQ; 240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hMeasurementMgr = pStadHandles->hMeasurementMgr; 241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hSwitchChannel = pStadHandles->hSwitchChannel; 242a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hRegulatoryDomain = pStadHandles->hRegulatoryDomain; 243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hReport = pStadHandles->hReport; 244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hOs = pStadHandles->hOs; 245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hConn = pStadHandles->hConn; 246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hCurrBss = pStadHandles->hCurrBss; 247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hApConn = pStadHandles->hAPConnection; 248a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hScanCncn = pStadHandles->hScanCncn; 249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hQosMngr = pStadHandles->hQosMngr; 250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hTWD = pStadHandles->hTWD; 251a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->hTxCtrl = pStadHandles->hTxCtrl; 252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 253a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* 254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt debug info 255a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->debug_lastProbeRspTSFTime = 0; 257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->debug_lastDtimBcnTSFTime = 0; 258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->debug_lastBeaconTSFTime = 0; 259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->debug_isFunctionFirstTime = TI_TRUE; 260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->BeaconsCounterPS = 0; 261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid mlme_SetDefaults (TI_HANDLE hMlmeSm, TMlmeInitParams *pMlmeInitParams) 264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pMlme = (mlme_t *)(hMlmeSm); 266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* set default values */ 268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pMlme->bParseBeaconWSC = pMlmeInitParams->parseWSCInBeacons; 269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 271a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_setParam(TI_HANDLE hMlmeSm, 272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t *pParam) 273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pMlmeSm = (mlme_t *)hMlmeSm; 275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch(pParam->paramType) 277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case MLME_LEGACY_TYPE_PARAM: 279a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch (pParam->content.mlmeLegacyAuthType) 281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case AUTH_LEGACY_RESERVED1: 283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case AUTH_LEGACY_OPEN_SYSTEM: 284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* First configure the MLME with the new legacy authentication type */ 285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pMlmeSm->legacyAuthType = pParam->content.mlmeLegacyAuthType; 286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Now configure the authentication module. */ 287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return auth_setParam(pMlmeSm->hAuth, pParam); 289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case AUTH_LEGACY_SHARED_KEY: 291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* First configure the MLME with the new legacy authentication type */ 292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pMlmeSm->legacyAuthType = AUTH_LEGACY_SHARED_KEY; 293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Now configure the authentication module. */ 294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return auth_setParam(pMlmeSm->hAuth, pParam); 296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case AUTH_LEGACY_AUTO_SWITCH: 298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* First configure the MLME with the new legacy authentication type */ 299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pMlmeSm->legacyAuthType = AUTH_LEGACY_AUTO_SWITCH; 300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Now configure the authentication module, 301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt Auto switch mode means start always with shared key, if fail move to open system. */ 302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pParam->paramType = AUTH_LEGACY_TYPE_PARAM; 303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pParam->content.authLegacyAuthType = AUTH_LEGACY_SHARED_KEY; 304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return auth_setParam(pMlmeSm->hAuth, pParam); 305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pMlmeSm->hReport, REPORT_SEVERITY_ERROR, "Set param, Params is not supported, 0x%x\n\n", pParam->content.mlmeLegacyAuthType); 308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return PARAM_VALUE_NOT_VALID; 309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* break; - unreachable */ 311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case MLME_RE_ASSOC_PARAM: 313a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pMlmeSm->reAssoc = pParam->content.mlmeReAssoc; 314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 315a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pMlmeSm->hReport, REPORT_SEVERITY_ERROR, "Set param, Params is not supported, 0x%x\n\n", pParam->paramType); 318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return PARAM_NOT_SUPPORTED; 319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 324a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_getParam(TI_HANDLE hMlmeSm, 325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t *pParam) 326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pMlmeSm = (mlme_t *)hMlmeSm; 328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt switch(pParam->paramType) 330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case MLME_LEGACY_TYPE_PARAM: 332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pParam->content.mlmeLegacyAuthType = pMlmeSm->legacyAuthType; 333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case MLME_CAPABILITY_PARAM: 336a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pParam->content.mlmeLegacyAuthType = pMlmeSm->legacyAuthType; 337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt assoc_smCapBuild(pMlmeSm->hAssoc, &(pParam->content.siteMgrSiteCapability)); 338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt case MLME_BEACON_RECV: 341a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pParam->content.siteMgrTiWlanCounters.BeaconsRecv = pMlmeSm->BeaconsCounterPS; 342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt break; 343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt default: 345a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE1(pMlmeSm->hReport, REPORT_SEVERITY_ERROR, "Get param, Params is not supported, %d\n\n", pParam->content.mlmeLegacyAuthType); 346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return PARAM_NOT_SUPPORTED; 347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 348a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 349a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 350a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 351a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 352a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_Start - Start event for the MLME SM 355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Start event for the MLME SM 359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 362a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - hMlme - MLME SM context \n 363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa mlme_Stop, mlme_Recv 369a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 370a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_start(TI_HANDLE hMlme) 371a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 372a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pHandle = (mlme_t*)hMlme; 374a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle == NULL) 376a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 381a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pHandle->hReport, REPORT_SEVERITY_ERROR, "mlme_start: pHandle->legacyAuthType == AUTH_LEGACY_NONE\n"); 383a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_START, pHandle); 387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 388a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 391a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 393a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_Stop - Stop event for the MLME SM 394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 395a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Stop event for the MLME SM 398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - hMlme - MLME SM context \n 402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 404a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa mlme_Start, mlme_Recv 408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 409a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_stop(TI_HANDLE hMlme, DisconnectType_e disConnType, mgmtStatus_e reason) 410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pHandle; 413a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle = (mlme_t*)hMlme; 415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->disConnType = disConnType; 420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->disConnReason = reason; 421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_STOP, pHandle); 423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 426a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 428a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_reportAuthStatus - Set a specific parameter to the MLME SM 431a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 433a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Set a specific parameter to the MLME SM. 435a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - hMlme - MLME SM context \n 439a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I/O - pParam - Parameter \n 440a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 441a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa mlme_Start, mlme_Stop 446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 447a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_reportAuthStatus(TI_HANDLE hMlme, TI_UINT16 status) 448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pHandle; 450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t param; 451a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS fStatus; 452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle = (mlme_t*)hMlme; 454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle == NULL) 456a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->mlmeData.uStatusCode = status; 462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 463a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* If status is successful */ 464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status == 0) 465a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Mark a successful status - used for conn.c */ 467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_SUCCESSFUL; 468a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_AUTH_SUCCESS, pHandle); 469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 470a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 472a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Now, if the MLME legacy auth type is AUTO_SWITCH, and the Auth legacy auth type is shared key, 473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt we configure the auth SM to open system, otherwise, this is really an authentication failure. */ 474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.paramType = AUTH_LEGACY_TYPE_PARAM; 475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt auth_getParam(pHandle->hAuth, ¶m); 476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 477a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if ((pHandle->legacyAuthType == AUTH_LEGACY_AUTO_SWITCH) && (param.content.authLegacyAuthType == AUTH_LEGACY_SHARED_KEY)) 478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.content.authLegacyAuthType = AUTH_LEGACY_OPEN_SYSTEM; 480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fStatus = auth_setParam(pHandle->hAuth, ¶m); 481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fStatus = auth_start(pHandle->hAuth); 482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_AUTH_REJECT; 487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_AUTH_FAIL, pHandle); 488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 491a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return fStatus; 493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 494a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 497a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_reportAssocStatus - Set a specific parameter to the MLME SM 498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 499a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 501a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Set a specific parameter to the MLME SM. 502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - hMlme - MLME SM context \n 506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I/O - pParam - Parameter \n 507a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa mlme_Start, mlme_Stop 513a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 514a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_reportAssocStatus(TI_HANDLE hMlme, TI_UINT16 status) 515a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pHandle; 517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS fStatus; 518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 519a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle = (mlme_t*)hMlme; 520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle == NULL) 522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 524a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pHandle->legacyAuthType == AUTH_LEGACY_NONE) 525a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 526a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->mlmeData.uStatusCode = status; 528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* If status is successful */ 530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status == 0) 531a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 532a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_SUCCESSFUL; 533a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_ASSOC_SUCCESS, pHandle); 534a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } else 535a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 536a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pHandle->mlmeData.mgmtStatus = STATUS_ASSOC_REJECT; 537a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fStatus = mlme_smEvent(&pHandle->currentState, MLME_SM_EVENT_ASSOC_FAIL, pHandle); 538a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 539a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 540a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return fStatus; 541a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 542a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 543a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 544a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 545a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 546a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* mlme_SetParam - Set a specific parameter to the MLME SM 547a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 548a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b Description: 549a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 550a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* Set a specific parameter to the MLME SM. 551a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 552a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b ARGS: 553a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 554a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I - hMlme - MLME SM context \n 555a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* I/O - pParam - Parameter \n 556a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 557a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \b RETURNS: 558a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 559a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* TI_OK if successful, TI_NOK otherwise. 560a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* 561a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt* \sa mlme_Start, mlme_Stop 562a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*/ 563a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hMlme) 564a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 565a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_t *pMlme = (mlme_t *)hMlme; 566a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 567a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 nextState; 568a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 569a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_GetNextState(pMlme->pMlmeSm, *currentState, event, &nextState); 570a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status != TI_OK) 571a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 572a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pMlme->hReport, REPORT_SEVERITY_ERROR, "MLME_SM: ERROR - failed getting next state \n"); 573a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 574a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return(TI_NOK); 575a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 576a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 577a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE3( pMlme->hReport, REPORT_SEVERITY_INFORMATION, "mlme_smEvent: <currentState = %d, event = %d> --> nextState = %d\n", *currentState, event, nextState); 578a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 579a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_Event(pMlme->pMlmeSm, currentState, event, (void *)pMlme); 580a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 581a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return(status); 582a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 583a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 584a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* state machine functions */ 585a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 586a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smStartIdle(mlme_t *pMlme) 587a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 588a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 589a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 590a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = auth_start(pMlme->hAuth); 591a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 592a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 593a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 594a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 595a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smClass3Idle(mlme_t *pMlme) 596a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 597a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 598a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 599a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 600a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 601a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 602a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAuthSuccessAuthWait(mlme_t *pMlme) 603a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 604a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 605a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 606a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pMlme->reAssoc) 607a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 608a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = reassoc_start(pMlme->hAssoc); 609a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 610a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt else 611a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 612a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = assoc_start(pMlme->hAssoc); 613a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 614a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 615a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 616a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 617a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 618a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAuthFailAuthWait(mlme_t *pMlme) 619a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 620a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 621a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 622a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = mlme_smReportStatus(pMlme); 623a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 624a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 625a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 626a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 627a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smStopAssocWait(mlme_t *pMlme) 628a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 629a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_stopAssocAndAuth(pMlme); 630a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 631a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 632a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 633a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAssocSuccessAssocWait(mlme_t *pMlme) 634a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 635a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 636a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 637a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = mlme_smReportStatus(pMlme); 638a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 639a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 640a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 641a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 642a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smAssocFailAssocWait(mlme_t *pMlme) 643a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 644a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 645a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 646a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = mlme_smReportStatus(pMlme); 647a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 648a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 649a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 650a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 651a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 652a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smStopAssoc(mlme_t *pMlme) 653a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 654a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt mlme_stopAssocAndAuth(pMlme); 655a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 656a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 657a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 658a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 659a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 660a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smNOP(mlme_t *pMlme) 661a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 662a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 663a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 664a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 665a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smActionUnexpected(mlme_t *pMlme) 666a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 667a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 668a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 669a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 670a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* local functions */ 671a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 672a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS mlme_smReportStatus(mlme_t *pMlme) 673a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 674a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 675a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 676a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (pMlme == NULL) 677a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 678a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_NOK; 679a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 680a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 681a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = conn_reportMlmeStatus(pMlme->hConn, pMlme->mlmeData.mgmtStatus, pMlme->mlmeData.uStatusCode); 682a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 683a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 684a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 685a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 686a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic void mlme_stopAssocAndAuth(mlme_t *pMlme) 687a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 688a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 689a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_BOOL sendDeAuth; 690a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_BOOL sendDisAssoc; 691a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 692a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Don't send deauth/disassoc, FW will do it on disconnect command */ 693a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sendDeAuth = TI_FALSE; 694a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sendDisAssoc = TI_FALSE; 695a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 696a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pMlme->hReport, REPORT_SEVERITY_INFORMATION, "mlme_stopAssocAndAuth: Auth/assoc stop without sending deauth/disassoc\n"); 697a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 698a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt assoc_setDisAssocFlag(pMlme->hAssoc, sendDisAssoc); 699a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt assoc_stop(pMlme->hAssoc); 700a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 701a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt auth_stop(pMlme->hAuth, sendDeAuth, pMlme->disConnReason ); 702a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 703a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************** 704a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt** 705a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt** MLME messages builder/Parser 706a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt** 707a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt*****************************************************************************/ 708a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 709a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 710a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 711a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 712a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 713a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 714a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 715