1981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* 2981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * connIbss.c 3981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 4981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * All rights reserved. 6981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 7981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Redistribution and use in source and binary forms, with or without 8981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * modification, are permitted provided that the following conditions 9981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * are met: 10981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 11981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Redistributions of source code must retain the above copyright 12981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * notice, this list of conditions and the following disclaimer. 13981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Redistributions in binary form must reproduce the above copyright 14981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * notice, this list of conditions and the following disclaimer in 15981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * the documentation and/or other materials provided with the 16981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * distribution. 17981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * * Neither the name Texas Instruments nor the names of its 18981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * contributors may be used to endorse or promote products derived 19981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * from this software without specific prior written permission. 20981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 21981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 33981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 34981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/** \file connIbss.c 35981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * \brief IBSS connection implementation 36981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * 37981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * \see connIbss.h 38981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 39981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 40981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/ 41981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* */ 42981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* MODULE: connIbss.c */ 43981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* PURPOSE: IBSS connection implementation */ 44981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* */ 45981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/***************************************************************************/ 46981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 47981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#define __FILE_ID__ FILE_ID_26 48981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "tidef.h" 49981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "report.h" 50981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "osApi.h" 51981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "conn.h" 52981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "connIbss.h" 53981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "timer.h" 54981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "fsm.h" 55981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "siteMgrApi.h" 56981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "sme.h" 57981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "rsnApi.h" 58981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "DataCtrl_Api.h" 59981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "paramOut.h" 60981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "connApi.h" 61981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "EvHandler.h" 62981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "currBss.h" 63981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "TrafficMonitorAPI.h" 64981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "healthMonitor.h" 65981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#include "TWDriver.h" 66981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 67981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 68981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Local functions prototypes */ 69981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Local functions prototypes */ 70981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData); 71981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_selfWait(void *pData); 72981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 73981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData); 74981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 75981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt(void *pData); 76981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData); 77981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData); 78981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait(void *pData); 79981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData); 80981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData); 81981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionNop(void *pData); 82981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData); 83981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData); 84981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData); 85981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 86981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/********************************************/ 87981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* Functions Implementations */ 88981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/********************************************/ 89981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 90981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 91981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * conn_ibssConfig 92981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 93981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: IBSS Connection configuration function, called by the conection set param function 94981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt in the selection phase. Configures the connection state machine to IBSS connection mode 95981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 96981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: hConn - Connection handle. 97981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 98981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 99981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 100981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 101981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 102981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 103981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS conn_ibssConfig(conn_t *pConn) 104981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 105981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 106981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt fsm_actionCell_t smMatrix[CONN_IBSS_NUM_STATES][CONN_IBSS_NUM_EVENTS] = 107981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 108981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 109981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for IDLE state */ 110981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { {STATE_CONN_IBSS_SELF_WAIT, idle_to_selfWait }, /* CONN_IBSS_CREATE */ 111981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, idle_to_rsnWait }, /* CONN_IBSS_CONNECT */ 112981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionNop }, /* CONN_IBSS_DISCONNECT */ 113981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 114981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 115981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected }, /* CONN_IBSS_MERGE */ 116981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_IDLE, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 117981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }, 118981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 119981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for SELF_WAIT state */ 120981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected }, /* CONN_IBSS_CREATE */ 121981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected }, /* CONN_IBSS_CONNECT */ 122981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, selfWait_to_waitToDisconnCmplt }, /* CONN_IBSS_DISCONNECT */ 123981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 124981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, selfWait_to_rsnWait }, /* CONN_IBSS_STA_JOINED */ 125981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, selfw_merge_rsnw }, /* CONN_IBSS_MERGE */ 126981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_SELF_WAIT, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 127981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }, 128981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 129981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for RSN_WAIT state */ 130981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected }, /* CONN_IBSS_CREATE */ 131981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected }, /* CONN_IBSS_CONNECT */ 132981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, rsnWait_to_waitToDisconnCmplt }, /* CONN_IBSS_DISCONNECT */ 133981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, rsnWait_to_connected }, /* CONN_IBSS_RSN_SUCC */ 134981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 135981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, rsnw_merge_rsnw }, /* CONN_IBSS_MERGE */ 136981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_RSN_WAIT, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 137981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }, 138981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 139981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for CONNECTED state */ 140981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_CREATE */ 141981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_CONNECT */ 142981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, connected_to_waitToDisconnCmplt }, /* CONN_IBSS_DISCONNECT */ 143981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 144981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 145981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, conn_merge_conn }, /* CONN_IBSS_MERGE */ 146981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_CONNECTED, actionUnexpected } /* CONN_IBSS_DISCONN_COMPLETE */ 147981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }, 148981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 149981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* next state and actions for STATE_CONN_IBSS_WAIT_DISCONN_CMPLT state */ 150981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_CREATE */ 151981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_CONNECT */ 152981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_DISCONNECT */ 153981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_RSN_SUCC */ 154981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_STA_JOINED */ 155981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_WAIT_DISCONN_CMPLT, actionUnexpected }, /* CONN_IBSS_MERGE */ 156981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt {STATE_CONN_IBSS_IDLE, waitDisconnToCmplt_to_idle } /* CONN_IBSS_DISCONN_COMPLETE */ 157981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 158981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 159981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt }; 160981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 161981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return fsm_Config(pConn->ibss_pFsm, (fsm_Matrix_t)smMatrix, CONN_IBSS_NUM_STATES, CONN_IBSS_NUM_EVENTS, conn_ibssSMEvent, pConn->hOs); 162981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 163981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 164981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 165981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 166981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * conn_ibssSMEvent 167981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 168981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: IBSS Connection SM event processing function, called by the connection API 169981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt Perform the following: 170981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt - Print the state movement as a result from the event 171981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt - Calls the generic state machine event processing function which preform the following: 172981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt - Calls the correspoding callback function 173981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt - Move to next state 174981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 175981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: currentState - Pointer to the connection current state. 176981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt event - Received event 177981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pConn - Connection handle 178981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 179981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 180981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 181981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 182981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 183981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 184981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtTI_STATUS conn_ibssSMEvent(TI_UINT8 *currentState, TI_UINT8 event, TI_HANDLE hConn) 185981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 186981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn = (conn_t *)hConn; 187981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_STATUS status; 188981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT8 nextState; 189981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 190981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = fsm_GetNextState(pConn->ibss_pFsm, *currentState, event, &nextState); 191981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt if (status != TI_OK) 192981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt { 193981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "IBSS State machine error, failed getting next state\n"); 194981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return(TI_NOK); 195981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt } 196981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 197981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE3( pConn->hReport, REPORT_SEVERITY_INFORMATION, "conn_ibssSMEvent: <currentState = %d, event = %d> --> nextState = %d\n", *currentState, event, nextState); 198981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt status = fsm_Event(pConn->ibss_pFsm, currentState, event, (void *)pConn); 199981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 200981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return status; 201981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 202981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 203981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 204981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtvoid connIbss_DisconnectComplete (conn_t *pConn, TI_UINT8 *data, TI_UINT8 dataLength) 205981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 206981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* send an DISCONNECT COMPLETE event to the SM */ 207981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_ibssSMEvent(&pConn->state, CONN_IBSS_DISCONN_COMPLETE, (TI_HANDLE) pConn); 208981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 209981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 210981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/************************************************************************************************************/ 211981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/* In the following section are listed the callback function used by the IBSS connection state machine */ 212981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/************************************************************************************************************/ 213981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 214981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 215981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * selfWait_to_rsnWait 216981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 217981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 218981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 219981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 220981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 221981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 222981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 223981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 224981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 225981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 226981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 227981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_rsnWait (void *pData) 228981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 229981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn = (conn_t *)pData; 230981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t param; 231981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 232981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tmr_StopTimer (pConn->hConnTimer); 233981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 234981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 235981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.content.rxDataPortStatus = OPEN_EAPOL; 236981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxData_setParam (pConn->hRxData, ¶m); 237981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 238981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update TxMgmtQueue SM to enable EAPOL packets. */ 239981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL); 240981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 241981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 242981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Notify that the driver is associated to the supplicant\IP stack. 243981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 244981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EvHandlerSendEvent (pConn->hEvHandler, IPC_EVENT_ASSOCIATED, NULL, 0); 245981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 246981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return rsn_start (pConn->hRsn); 247981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 248981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 249981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 250981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 251981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * rsnWait_to_connected 252981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 253981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 254981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 255981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 256981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 257981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 258981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 259981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 260981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 261981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 262981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 263981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_connected(void *pData) 264981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 265981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t param; 266981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 267981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn=(conn_t *)pData; 268981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 269981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficMonitor_Start( pConn->hTrafficMonitor ); 270981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 271981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_CONNECTED); 272981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 273981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt siteMgr_start(pConn->hSiteMgr); 274981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 275981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 276981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.content.rxDataPortStatus = OPEN; 277981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxData_setParam(((conn_t *)pData)->hRxData, ¶m); 278981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 279981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update TxMgmtQueue SM to open Tx path to all packets. */ 280981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_OPEN); 281981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 282981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update current BSS connection type and mode */ 283981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt currBSS_updateConnectedState(pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT); 284981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 285981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt sme_ReportConnStatus(((conn_t *)pData)->hSmeSm, STATUS_SUCCESSFUL, 0); 286981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 287981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 288981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 289981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 290981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfw_merge_rsnw(void *pData) 291981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 292981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn=(conn_t *)pData; 293981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t param; 294981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 295981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_printf("IBSS selfw_merge_rsnw!!!!!!!!!!\n"); 296981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 297981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tmr_StopTimer (pConn->hConnTimer); 298981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt siteMgr_join(pConn->hSiteMgr); 299981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 300981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 301981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.content.rxDataPortStatus = OPEN_EAPOL; 302981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxData_setParam (pConn->hRxData, ¶m); 303981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 304981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update TxMgmtQueue SM to enable EAPOL packets. */ 305981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_EAPOL); 306981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 307981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 308981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Notify that the driver is associated to the supplicant\IP stack. 309981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 310981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EvHandlerSendEvent (pConn->hEvHandler, IPC_EVENT_ASSOCIATED, NULL, 0); 311981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 312981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return rsn_start (pConn->hRsn); 313981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 314981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 315981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 316981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 317981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnw_merge_rsnw(void *pData) 318981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 319981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn=(conn_t *)pData; 320981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 321981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_printf("IBSS rsnw_merge_rsnw!!!!!!!!!!\n"); 322981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 323981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt siteMgr_join(pConn->hSiteMgr); 324981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 325981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 326981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 327981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 328981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 329981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS conn_merge_conn(void *pData) 330981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 331981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn=(conn_t *)pData; 332981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 333981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt os_printf("IBSS conn_merge_conn!!!!!!!!!!\n"); 334981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 335981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt siteMgr_join(pConn->hSiteMgr); 336981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 337981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 338981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 339981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 340981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS waitDisconnToCmplt_to_idle (void *pData) 341981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 342981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn = (conn_t *)pData; 343981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 344981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Inform the SME about the connection lost */ 345981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* we use this status at SME, if != 0 means that assoc frame sent */ 346981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt sme_ReportConnStatus(pConn->hSmeSm, STATUS_UNSPECIFIED, 1); 347981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 348981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 349981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 350981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 351981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 352981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 353981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * actionUnexpected 354981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 355981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 356981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 357981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 358981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 359981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 360981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 361981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 362981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 363981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 364981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 365981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionUnexpected(void *pData) 366981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 367981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#ifdef TI_DBG 368981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn = (conn_t *)pData; 369981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 370981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TRACE0(pConn->hReport, REPORT_SEVERITY_SM, "State machine error, unexpected Event\n\n"); 371981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt#endif /*TI_DBG*/ 372981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 373981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 374981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 375981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 376981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 377981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * actionNop 378981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 379981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 380981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 381981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 382981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 383981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 384981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 385981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 386981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 387981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 388981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 389981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS actionNop(void *pData) 390981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 391981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 392981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 393981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 394981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 395981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 396981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * selfWait_to_waitToDisconnCmplt 397981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 398981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 399981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 400981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 401981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 402981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 403981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 404981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 405981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 406981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 407981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 408981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS selfWait_to_waitToDisconnCmplt (void *pData) 409981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 410981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn = (conn_t *)pData; 411981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t param; 412981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 413981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tmr_StopTimer (pConn->hConnTimer); 414981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 415981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt siteMgr_removeSelfSite(pConn->hSiteMgr); 416981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 417981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update current BSS connection type and mode */ 418981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt currBSS_updateConnectedState(pConn->hCurrBss, TI_FALSE, BSS_INDEPENDENT); 419981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 420981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* stop beacon generation */ 421981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 422981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.content.rxDataPortStatus = CLOSE; 423981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxData_setParam(pConn->hRxData, ¶m); 424981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 425981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update TxMgmtQueue SM to close Tx path. */ 426981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txMgmtQ_SetConnState (pConn->hTxMgmtQ, TX_CONN_STATE_CLOSE); 427981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 428981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TWD_CmdFwDisconnect (pConn->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED); 429981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 430981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 431981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 432981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 433981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 434981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 435981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 436981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * rsnWait_to_waitToDisconnCmplt 437981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 438981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 439981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 440981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 441981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 442981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 443981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 444981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 445981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 446981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 447981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 448981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS rsnWait_to_waitToDisconnCmplt(void *pData) 449981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 450981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t param; 451653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt TI_STATUS tStatus; 452981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 453653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt tStatus = rsn_stop(((conn_t *)pData)->hRsn, TI_FALSE); 454981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 455981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 456981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.content.rxDataPortStatus = CLOSE; 457981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxData_setParam(((conn_t *)pData)->hRxData, ¶m); 458981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 459981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update TxMgmtQueue SM to close Tx path. */ 460981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_CLOSE); 461981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 462981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update current BSS connection type and mode */ 463981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_FALSE, BSS_INDEPENDENT); 464981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 465981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Stop beacon generation */ 466981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TWD_CmdFwDisconnect (((conn_t *)pData)->hTWD, DISCONNECT_IMMEDIATE, STATUS_UNSPECIFIED); 467981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 468653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt return tStatus; 469981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 470981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 471981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 472981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 473981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * connected_to_waitToDisconnCmplt 474981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 475981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 476981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 477981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 478981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 479981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 480981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 481981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 482981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 483981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 484981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 485981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS connected_to_waitToDisconnCmplt(void *pData) 486981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 487981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn=(conn_t *)pData; 488981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 489981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TrafficMonitor_Stop(pConn->hTrafficMonitor); 490981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 491981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt healthMonitor_setState(pConn->hHealthMonitor, HEALTH_MONITOR_STATE_DISCONNECTED); 492981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 493981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* The logic of this action is identical to rsnWait_to_idle */ 494981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return rsnWait_to_waitToDisconnCmplt(pConn); 495981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 496981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 497981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 498981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 499981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 500981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 501981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 502981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * idle_to_selfWait 503981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 504981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 505981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 506981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 507981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 508981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 509981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 510981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 511981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 512981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 513981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 514981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_selfWait (void *pData) 515981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 516981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_t *pConn = (conn_t *)pData; 517981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_UINT16 randomTime; 518981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 519981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt siteMgr_join (pConn->hSiteMgr); 520981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 521981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* get a randomTime that is constructed of the lower 13 bits ot the system time to 522981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt get a MS random time of ~8000 ms */ 523981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt randomTime = os_timeStampMs (pConn->hOs) & 0x1FFF; 524981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 525981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update current BSS connection type and mode */ 526981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt currBSS_updateConnectedState (pConn->hCurrBss, TI_TRUE, BSS_INDEPENDENT); 527981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 528981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt tmr_StartTimer (pConn->hConnTimer, 529981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt conn_timeout, 530981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt (TI_HANDLE)pConn, 531981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt pConn->timeout + randomTime, 532981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt TI_FALSE); 533981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 534981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return TI_OK; 535981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 536981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 537981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 538981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 539981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt/*********************************************************************** 540981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * idle_to_rsnWait 541981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt *********************************************************************** 542981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtDESCRIPTION: 543981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 544981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 545981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtINPUT: 546981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 547981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtOUTPUT: 548981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 549981801b95b81e6d1c7a2085967406e86af0f08fcDmitry ShmidtRETURN: TI_OK on success, TI_NOK otherwise 550981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 551981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt************************************************************************/ 552981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidtstatic TI_STATUS idle_to_rsnWait(void *pData) 553981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt{ 554981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt paramInfo_t param; 555981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 556981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt siteMgr_join(((conn_t *)pData)->hSiteMgr); 557981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 558981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.paramType = RX_DATA_PORT_STATUS_PARAM; 559981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt param.content.rxDataPortStatus = OPEN_EAPOL; 560981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt rxData_setParam(((conn_t *)pData)->hRxData, ¶m); 561981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 562981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update TxMgmtQueue SM to enable EAPOL packets. */ 563981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt txMgmtQ_SetConnState (((conn_t *)pData)->hTxMgmtQ, TX_CONN_STATE_EAPOL); 564981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 565981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* 566981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt * Notify that the driver is associated to the supplicant\IP stack. 567981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt */ 568981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt EvHandlerSendEvent(((conn_t *)pData)->hEvHandler, IPC_EVENT_ASSOCIATED, NULL,0); 569981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 570981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt /* Update current BSS connection type and mode */ 571981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt currBSS_updateConnectedState(((conn_t *)pData)->hCurrBss, TI_TRUE, BSS_INDEPENDENT); 572981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 573981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt return rsn_start(((conn_t *)pData)->hRsn); 574981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt} 575981801b95b81e6d1c7a2085967406e86af0f08fcDmitry Shmidt 576