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, &param);
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, &param);
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