1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * connIbss.c 3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 43bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt * Copyright(c) 1998 - 2010 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 connIbss.c 35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief IBSS connection implementation 36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see connIbss.h 38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/ 41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* */ 42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* MODULE: connIbss.c */ 43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* PURPOSE: IBSS connection implementation */ 44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* */ 45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/***************************************************************************/ 46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __FILE_ID__ FILE_ID_26 48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "tidef.h" 49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "report.h" 50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "osApi.h" 51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "conn.h" 52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "connIbss.h" 53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "timer.h" 54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "fsm.h" 55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "siteMgrApi.h" 56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "sme.h" 57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "rsnApi.h" 58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "DataCtrl_Api.h" 59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "paramOut.h" 60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "connApi.h" 61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "EvHandler.h" 62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "currBss.h" 63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "TrafficMonitorAPI.h" 64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "healthMonitor.h" 65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "TWDriver.h" 66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Local functions prototypes */ 69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Local functions prototypes */ 70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData); 71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_selfWait(void *pData); 72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData); 74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt(void *pData); 76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData); 77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData); 78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait(void *pData); 79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData); 80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData); 81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionNop(void *pData); 82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData); 83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData); 84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData); 85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/********************************************/ 87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* Functions Implementations */ 88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/********************************************/ 89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * conn_ibssConfig 92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 93a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: IBSS Connection configuration function, called by the conection set param function 94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt in the selection phase. Configures the connection state machine to IBSS connection mode 95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 96a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: hConn - Connection handle. 97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 98a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 100a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 103a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS conn_ibssConfig(conn_t *pConn) 104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt fsm_actionCell_t smMatrix[CONN_IBSS_NUM_STATES][CONN_IBSS_NUM_EVENTS] = 107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for IDLE state */ 110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {STATE_CONN_IBSS_SELF_WAIT, idle_to_selfWait }, /* CONN_IBSS_CREATE */ 111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, idle_to_rsnWait }, /* CONN_IBSS_CONNECT */ 112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionNop }, /* CONN_IBSS_DISCONNECT */ 113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected }, /* CONN_IBSS_MERGE */ 116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for SELF_WAIT state */ 120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected }, /* CONN_IBSS_CREATE */ 121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected }, /* CONN_IBSS_CONNECT */ 122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, selfWait_to_waitToDisconnCmplt }, /* CONN_IBSS_DISCONNECT */ 123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, selfWait_to_rsnWait }, /* CONN_IBSS_STA_JOINED */ 125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, selfw_merge_rsnw }, /* CONN_IBSS_MERGE */ 126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for RSN_WAIT state */ 130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected }, /* CONN_IBSS_CREATE */ 131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected }, /* CONN_IBSS_CONNECT */ 132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, rsnWait_to_waitToDisconnCmplt }, /* CONN_IBSS_DISCONNECT */ 133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, rsnWait_to_connected }, /* CONN_IBSS_RSN_SUCC */ 134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, rsnw_merge_rsnw }, /* CONN_IBSS_MERGE */ 136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for CONNECTED state */ 140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_CREATE */ 141a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_CONNECT */ 142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, connected_to_waitToDisconnCmplt }, /* CONN_IBSS_DISCONNECT */ 143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, conn_merge_conn }, /* CONN_IBSS_MERGE */ 146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }, 148a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 149a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* next state and actions for STATE_CONN_IBSS_WAIT_DISCONN_CMPLT state */ 150a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_CREATE */ 151a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_CONNECT */ 152a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_DISCONNECT */ 153a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 154a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 155a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_MERGE */ 156a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt {STATE_CONN_IBSS_IDLE, waitDisconnToCmplt_to_idle } /* CONN_IBSS_DISCONN_COMPLETE */ 157a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 158a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 159a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt }; 160a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 161a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return fsm_Config(pConn->ibss_pFsm, (fsm_Matrix_t)smMatrix, CONN_IBSS_NUM_STATES, CONN_IBSS_NUM_EVENTS, conn_ibssSMEvent, pConn->hOs); 162a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 163a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 164a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 165a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 166a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * conn_ibssSMEvent 167a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 168a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: IBSS Connection SM event processing function, called by the connection API 169a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt Perform the following: 170a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt - Print the state movement as a result from the event 171a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt - Calls the generic state machine event processing function which preform the following: 172a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt - Calls the correspoding callback function 173a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt - Move to next state 174a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 175a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: currentState - Pointer to the connection current state. 176a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt event - Received event 177a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pConn - Connection handle 178a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 179a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 180a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 181a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 182a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 183a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 184a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtTI_STATUS conn_ibssSMEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hConn) 185a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 186a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn = (conn_t *)hConn; 187a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS status; 188a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT8 nextState; 189a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 190a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_GetNextState(pConn->ibss_pFsm, *currentState, event, &nextState); 191a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt if (status != TI_OK) 192a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt { 193a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "IBSS State machine error, failed getting next state\n"); 194a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return(TI_NOK); 195a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt } 196a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 197a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE3( pConn->hReport, REPORT_SEVERITY_INFORMATION, "conn_ibssSMEvent: <currentState = %d, event = %d> --> nextState = %d\n", *currentState, event, nextState); 198a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt status = fsm_Event(pConn->ibss_pFsm, currentState, event, (void *)pConn); 199a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 200a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return status; 201a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 202a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 203a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 204a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtvoid connIbss_DisconnectComplete (conn_t *pConn, TI_UINT8 *data, TI_UINT8 dataLength) 205a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 206a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* send an DISCONNECT COMPLETE event to the SM */ 207a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_ibssSMEvent(&pConn->state, CONN_IBSS_DISCONN_COMPLETE, (TI_HANDLE) pConn); 208a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 209a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 210a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/************************************************************************************************************/ 211a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* In the following section are listed the callback function used by the IBSS connection state machine */ 212a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/************************************************************************************************************/ 213a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 214a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 215a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * selfWait_to_rsnWait 216a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 217a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 218a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 219a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 220a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 221a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 222a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 223a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 224a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 225a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 226a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 227a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait (void *pData) 228a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 229a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn = (conn_t *)pData; 230a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t param; 231a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 232a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tmr_StopTimer (pConn->hConnTimer); 233a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 234a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 235a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.content.rxDataPortStatus = OPEN_EAPOL; 236a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt rxData_setParam (pConn->hRxData, ¶m); 237a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 238a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update TxMgmtQueue SM to enable EAPOL packets. */ 239a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL); 240a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 241a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return rsn_start (pConn->hRsn); 242a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 243a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 244a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 245a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 246a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * rsnWait_to_connected 247a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 248a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 249a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 250a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 251a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 252a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 253a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 254a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 255a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 256a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 257a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 258a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData) 259a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 260a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t param; 261a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 262a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn=(conn_t *)pData; 263a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 264a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TrafficMonitor_Start( pConn->hTrafficMonitor ); 265a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 266a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_CONNECTED); 267a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 268a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt siteMgr_start(pConn->hSiteMgr); 269a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 270a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 271a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.content.rxDataPortStatus = OPEN; 272a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt rxData_setParam(((conn_t *)pData)->hRxData, ¶m); 273a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 274a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update TxMgmtQueue SM to open Tx path to all packets. */ 275a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_OPEN); 276a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 277a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update current BSS connection type and mode */ 278a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt currBSS_updateConnectedState(pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT); 279a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 280a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sme_ReportConnStatus(((conn_t *)pData)->hSmeSm, STATUS_SUCCESSFUL, 0); 281a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 282a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 283a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 284a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 285a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData) 286a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 287a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn=(conn_t *)pData; 288a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t param; 289a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 290a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_printf("IBSS selfw_merge_rsnw!!!!!!!!!!\n"); 291a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 292a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tmr_StopTimer (pConn->hConnTimer); 293a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt siteMgr_join(pConn->hSiteMgr); 294a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 295a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 296a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.content.rxDataPortStatus = OPEN_EAPOL; 297a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt rxData_setParam (pConn->hRxData, ¶m); 298a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 299a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update TxMgmtQueue SM to enable EAPOL packets. */ 300a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL); 301a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 302a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return rsn_start (pConn->hRsn); 303a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 304a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 305a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 306a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 307a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData) 308a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 309a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn=(conn_t *)pData; 310a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 311a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_printf("IBSS rsnw_merge_rsnw!!!!!!!!!!\n"); 312a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 313a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt siteMgr_join(pConn->hSiteMgr); 314a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 315a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 316a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 317a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 318a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 319a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData) 320a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 321a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn=(conn_t *)pData; 322a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 323a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt os_printf("IBSS conn_merge_conn!!!!!!!!!!\n"); 324a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 325a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt siteMgr_join(pConn->hSiteMgr); 326a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 327a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 328a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 329a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 330a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData) 331a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 332a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn = (conn_t *)pData; 333a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 334a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Inform the SME about the connection lost */ 335a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* we use this status at SME, if != 0 means that assoc frame sent */ 336a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt sme_ReportConnStatus(pConn->hSmeSm, STATUS_UNSPECIFIED, 1); 337a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 338a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 339a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 340a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 341a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 342a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 343a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * actionUnexpected 344a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 345a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 346a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 347a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 348a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 349a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 350a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 351a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 352a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 353a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 354a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 355a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData) 356a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 357a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifdef TI_DBG 358a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn = (conn_t *)pData; 359a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 360a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "State machine error, unexpected Event\n\n"); 361a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /*TI_DBG*/ 362a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 363a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 364a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 365a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 366a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 367a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * actionNop 368a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 369a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 370a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 371a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 372a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 373a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 374a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 375a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 376a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 377a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 378a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 379a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS actionNop(void *pData) 380a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 381a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 382a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 383a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 384a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 385a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 386a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * selfWait_to_waitToDisconnCmplt 387a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 388a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 389a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 390a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 391a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 392a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 393a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 394a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 395a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 396a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 397a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 398a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt (void *pData) 399a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 400a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn = (conn_t *)pData; 401a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t param; 402a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 403a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tmr_StopTimer (pConn->hConnTimer); 404a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 405a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt siteMgr_removeSelfSite(pConn->hSiteMgr); 406a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 407a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update current BSS connection type and mode */ 408a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt currBSS_updateConnectedState(pConn->hCurrBss, TI_FALSE, BSS_INDEPENDENT); 409a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 410a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* stop beacon generation */ 411a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 412a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.content.rxDataPortStatus = CLOSE; 413a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt rxData_setParam(pConn->hRxData, ¶m); 414a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 415a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update TxMgmtQueue SM to close Tx path. */ 416a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_CLOSE); 417a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 418a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TWD_CmdFwDisconnect (pConn->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED); 419a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 420a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 421a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 422a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 423a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 424a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 425a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 426a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * rsnWait_to_waitToDisconnCmplt 427a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 428a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 429a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 430a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 431a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 432a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 433a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 434a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 435a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 436a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 437a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 438a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData) 439a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 4403bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt paramInfo_t param; 441a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_STATUS tStatus; 442a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 443a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tStatus = rsn_stop(((conn_t *)pData)->hRsn, TI_FALSE); 444a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 445a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 446a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.content.rxDataPortStatus = CLOSE; 447a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt rxData_setParam(((conn_t *)pData)->hRxData, ¶m); 448a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 449a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update TxMgmtQueue SM to close Tx path. */ 450a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_CLOSE); 451a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 452a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update current BSS connection type and mode */ 453a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_FALSE, BSS_INDEPENDENT); 454a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 455a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Stop beacon generation */ 456a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TWD_CmdFwDisconnect (((conn_t *)pData)->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED); 457a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 458a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return tStatus; 459a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 460a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 461a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 462a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 463a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * connected_to_waitToDisconnCmplt 464a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 465a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 466a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 467a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 468a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 469a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 470a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 471a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 472a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 473a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 474a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 475a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData) 476a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 477a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn=(conn_t *)pData; 478a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 479a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TrafficMonitor_Stop(pConn->hTrafficMonitor); 480a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 481a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_DISCONNECTED); 482a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 483a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* The logic of this action is identical to rsnWait_to_idle */ 484a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return rsnWait_to_waitToDisconnCmplt(pConn); 485a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 486a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 487a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 488a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 489a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 490a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 491a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 492a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * idle_to_selfWait 493a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 494a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 495a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 496a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 497a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 498a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 499a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 500a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 501a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 502a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 503a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 504a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_selfWait (void *pData) 505a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 506a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_t *pConn = (conn_t *)pData; 507a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT16 randomTime; 508a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 509a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt siteMgr_join (pConn->hSiteMgr); 510a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 511a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* get a randomTime that is constructed of the lower 13 bits ot the system time to 512a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt get a MS random time of ~8000 ms */ 513a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt randomTime = os_timeStampMs (pConn->hOs) & 0x1FFF; 514a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 515a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update current BSS connection type and mode */ 516a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt currBSS_updateConnectedState (pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT); 517a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 518a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt tmr_StartTimer (pConn->hConnTimer, 519a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt conn_timeout, 520a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt (TI_HANDLE)pConn, 521a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt pConn->timeout + randomTime, 522a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_FALSE); 523a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 5243bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt /* Notify that the driver is associated to the supplicant\IP stack. */ 5253bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt EvHandlerSendEvent (pConn->hEvHandler, IPC_EVENT_ASSOCIATED, NULL, 0); 5263bb9a92880f8cda8c242707ad02077f13b009632Dmitry Shmidt 527a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return TI_OK; 528a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 529a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 530a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 531a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 532a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/*********************************************************************** 533a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * idle_to_rsnWait 534a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 535a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtDESCRIPTION: 536a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 537a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 538a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtINPUT: 539a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 540a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtOUTPUT: 541a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 542a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 543a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 544a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt************************************************************************/ 545a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData) 546a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 547a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt paramInfo_t param; 548a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 549a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt siteMgr_join(((conn_t *)pData)->hSiteMgr); 550a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 551a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 552a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt param.content.rxDataPortStatus = OPEN_EAPOL; 553a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt rxData_setParam(((conn_t *)pData)->hRxData, ¶m); 554a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 555a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update TxMgmtQueue SM to enable EAPOL packets. */ 556a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_EAPOL); 557a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 558a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* 559a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Notify that the driver is associated to the supplicant\IP stack. 560a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 561a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EvHandlerSendEvent(((conn_t *)pData)->hEvHandler, IPC_EVENT_ASSOCIATED, NULL,0); 562a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 563a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* Update current BSS connection type and mode */ 564a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_TRUE, BSS_INDEPENDENT); 565a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 566a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt return rsn_start(((conn_t *)pData)->hRsn); 567a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} 568a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 569