164064216a8433360745f69edddce19a606659163The Android Open Source Project/** \file conn.c 264064216a8433360745f69edddce19a606659163The Android Open Source Project * \brief connection module interface 364064216a8433360745f69edddce19a606659163The Android Open Source Project * 464064216a8433360745f69edddce19a606659163The Android Open Source Project * \see conn.h 564064216a8433360745f69edddce19a606659163The Android Open Source Project */ 664064216a8433360745f69edddce19a606659163The Android Open Source Project/**************************************************************************** 764064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 864064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 964064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| All rights reserved. |** 1164064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1264064216a8433360745f69edddce19a606659163The Android Open Source Project**| Redistribution and use in source and binary forms, with or without |** 1364064216a8433360745f69edddce19a606659163The Android Open Source Project**| modification, are permitted provided that the following conditions |** 1464064216a8433360745f69edddce19a606659163The Android Open Source Project**| are met: |** 1564064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1664064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions of source code must retain the above copyright |** 1764064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer. |** 1864064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Redistributions in binary form must reproduce the above copyright |** 1964064216a8433360745f69edddce19a606659163The Android Open Source Project**| notice, this list of conditions and the following disclaimer in |** 2064064216a8433360745f69edddce19a606659163The Android Open Source Project**| the documentation and/or other materials provided with the |** 2164064216a8433360745f69edddce19a606659163The Android Open Source Project**| distribution. |** 2264064216a8433360745f69edddce19a606659163The Android Open Source Project**| * Neither the name Texas Instruments nor the names of its |** 2364064216a8433360745f69edddce19a606659163The Android Open Source Project**| contributors may be used to endorse or promote products derived |** 2464064216a8433360745f69edddce19a606659163The Android Open Source Project**| from this software without specific prior written permission. |** 2564064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 2664064216a8433360745f69edddce19a606659163The Android Open Source Project**| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 2764064216a8433360745f69edddce19a606659163The Android Open Source Project**| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 2864064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 2964064216a8433360745f69edddce19a606659163The Android Open Source Project**| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 3064064216a8433360745f69edddce19a606659163The Android Open Source Project**| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 3164064216a8433360745f69edddce19a606659163The Android Open Source Project**| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 3264064216a8433360745f69edddce19a606659163The Android Open Source Project**| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 3364064216a8433360745f69edddce19a606659163The Android Open Source Project**| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 3464064216a8433360745f69edddce19a606659163The Android Open Source Project**| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 3564064216a8433360745f69edddce19a606659163The Android Open Source Project**| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 3664064216a8433360745f69edddce19a606659163The Android Open Source Project**| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 3764064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 3864064216a8433360745f69edddce19a606659163The Android Open Source Project**+-----------------------------------------------------------------------+** 3964064216a8433360745f69edddce19a606659163The Android Open Source Project****************************************************************************/ 4064064216a8433360745f69edddce19a606659163The Android Open Source Project 4164064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************************************/ 4264064216a8433360745f69edddce19a606659163The Android Open Source Project/* */ 4364064216a8433360745f69edddce19a606659163The Android Open Source Project/* MODULE: conn.c */ 4464064216a8433360745f69edddce19a606659163The Android Open Source Project/* PURPOSE: Connection module interface. The connection itself is implemented in the files */ 4564064216a8433360745f69edddce19a606659163The Android Open Source Project/* connInfra, connIbss & connSelf. This file distributes the events received to */ 4664064216a8433360745f69edddce19a606659163The Android Open Source Project/* one of the modules based on the current connection type. */ 4764064216a8433360745f69edddce19a606659163The Android Open Source Project/* */ 4864064216a8433360745f69edddce19a606659163The Android Open Source Project/****************************************************************************************************/ 4964064216a8433360745f69edddce19a606659163The Android Open Source Project 5064064216a8433360745f69edddce19a606659163The Android Open Source Project 5164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "report.h" 5264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "osTIType.h" 5364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "osApi.h" 5464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "conn.h" 5564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "connApi.h" 5664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "connIbss.h" 5764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "connInfra.h" 5864064216a8433360745f69edddce19a606659163The Android Open Source Project#include "802_11Defs.h" 5964064216a8433360745f69edddce19a606659163The Android Open Source Project#include "utils.h" 6064064216a8433360745f69edddce19a606659163The Android Open Source Project#include "smeApi.h" 6164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "paramOut.h" 6264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "paramIn.h" 6364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "siteMgrApi.h" 6464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "smeSmApi.h" 6564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "scrApi.h" 6664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "healthMonitor.h" 6764064216a8433360745f69edddce19a606659163The Android Open Source Project#include "qosMngr_API.h" 6864064216a8433360745f69edddce19a606659163The Android Open Source Project 6964064216a8433360745f69edddce19a606659163The Android Open Source Project#define CONN_INIT_BIT 1 7064064216a8433360745f69edddce19a606659163The Android Open Source Project#define TIMER_INIT_BIT 2 7164064216a8433360745f69edddce19a606659163The Android Open Source Project#define IBSS_SM_INIT_BIT 3 7264064216a8433360745f69edddce19a606659163The Android Open Source Project#define INFRA_SM_INIT_BIT 4 7364064216a8433360745f69edddce19a606659163The Android Open Source Project#define INFRA_DISASSOC_TIMER_INIT_BIT 6 7464064216a8433360745f69edddce19a606659163The Android Open Source Project 7564064216a8433360745f69edddce19a606659163The Android Open Source Project/* Local functions prototypes */ 7664064216a8433360745f69edddce19a606659163The Android Open Source Project 7764064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void conn_timeout(TI_HANDLE hConn); 7864064216a8433360745f69edddce19a606659163The Android Open Source Project 7964064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void release_module(conn_t *pConn, UINT32 initVec); 8064064216a8433360745f69edddce19a606659163The Android Open Source Project 8164064216a8433360745f69edddce19a606659163The Android Open Source Project/* Interface functions Implementation */ 8264064216a8433360745f69edddce19a606659163The Android Open Source Project 8364064216a8433360745f69edddce19a606659163The Android Open Source Project/************************************************************************ 8464064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_create * 8564064216a8433360745f69edddce19a606659163The Android Open Source Project ************************************************************************ 8664064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Connection module creation function, called by the config mgr in creation phase 8764064216a8433360745f69edddce19a606659163The Android Open Source Project performs the following: 8864064216a8433360745f69edddce19a606659163The Android Open Source Project - Allocate the connection handle 8964064216a8433360745f69edddce19a606659163The Android Open Source Project - Create the connection timer 9064064216a8433360745f69edddce19a606659163The Android Open Source Project - Create the connection state machine 9164064216a8433360745f69edddce19a606659163The Android Open Source Project 9264064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hOs - Handle to OS 9364064216a8433360745f69edddce19a606659163The Android Open Source Project 9464064216a8433360745f69edddce19a606659163The Android Open Source Project 9564064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 9664064216a8433360745f69edddce19a606659163The Android Open Source Project 9764064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: Handle to the connection module on success, NULL otherwise 9864064216a8433360745f69edddce19a606659163The Android Open Source Project 9964064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 10064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE conn_create(TI_HANDLE hOs) 10164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 10264064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn; 10364064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 initVec; 10464064216a8433360745f69edddce19a606659163The Android Open Source Project fsm_stateMachine_t *pFsm; 10564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_STATUS status; 10664064216a8433360745f69edddce19a606659163The Android Open Source Project 10764064216a8433360745f69edddce19a606659163The Android Open Source Project initVec = 0; 10864064216a8433360745f69edddce19a606659163The Android Open Source Project 10964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn = os_memoryAlloc(hOs, sizeof(conn_t)); 11064064216a8433360745f69edddce19a606659163The Android Open Source Project if (pConn == NULL) 11164064216a8433360745f69edddce19a606659163The Android Open Source Project return NULL; 11264064216a8433360745f69edddce19a606659163The Android Open Source Project 11364064216a8433360745f69edddce19a606659163The Android Open Source Project initVec |= (1<<CONN_INIT_BIT); 11464064216a8433360745f69edddce19a606659163The Android Open Source Project 11564064216a8433360745f69edddce19a606659163The Android Open Source Project /* Rename to connSelfIbssTimer */ 11664064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->pTimer = os_timerCreate(hOs, conn_timeout, pConn); 11764064216a8433360745f69edddce19a606659163The Android Open Source Project if (pConn->pTimer == NULL) 11864064216a8433360745f69edddce19a606659163The Android Open Source Project { 11964064216a8433360745f69edddce19a606659163The Android Open Source Project release_module(pConn, initVec); 12064064216a8433360745f69edddce19a606659163The Android Open Source Project return NULL; 12164064216a8433360745f69edddce19a606659163The Android Open Source Project } 12264064216a8433360745f69edddce19a606659163The Android Open Source Project 12364064216a8433360745f69edddce19a606659163The Android Open Source Project initVec |= (1<<TIMER_INIT_BIT); 12464064216a8433360745f69edddce19a606659163The Android Open Source Project 12564064216a8433360745f69edddce19a606659163The Android Open Source Project 12664064216a8433360745f69edddce19a606659163The Android Open Source Project /* Creating connection Ibss SM */ 12764064216a8433360745f69edddce19a606659163The Android Open Source Project status = fsm_Create(hOs, &pFsm, CONN_IBSS_NUM_STATES, CONN_IBSS_NUM_EVENTS); 12864064216a8433360745f69edddce19a606659163The Android Open Source Project if (status != OK) 12964064216a8433360745f69edddce19a606659163The Android Open Source Project { 13064064216a8433360745f69edddce19a606659163The Android Open Source Project release_module(pConn, initVec); 13164064216a8433360745f69edddce19a606659163The Android Open Source Project return NULL; 13264064216a8433360745f69edddce19a606659163The Android Open Source Project } 13364064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->ibss_pFsm = pFsm; 13464064216a8433360745f69edddce19a606659163The Android Open Source Project 13564064216a8433360745f69edddce19a606659163The Android Open Source Project initVec |= (1<<IBSS_SM_INIT_BIT); 13664064216a8433360745f69edddce19a606659163The Android Open Source Project 13764064216a8433360745f69edddce19a606659163The Android Open Source Project /* Creating connection Infra SM */ 13864064216a8433360745f69edddce19a606659163The Android Open Source Project status = fsm_Create(hOs, &pFsm, CONN_INFRA_NUM_STATES, CONN_INFRA_NUM_EVENTS); 13964064216a8433360745f69edddce19a606659163The Android Open Source Project if (status != OK) 14064064216a8433360745f69edddce19a606659163The Android Open Source Project { 14164064216a8433360745f69edddce19a606659163The Android Open Source Project release_module(pConn, initVec); 14264064216a8433360745f69edddce19a606659163The Android Open Source Project return NULL; 14364064216a8433360745f69edddce19a606659163The Android Open Source Project } 14464064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->infra_pFsm = pFsm; 14564064216a8433360745f69edddce19a606659163The Android Open Source Project 14664064216a8433360745f69edddce19a606659163The Android Open Source Project initVec |= (1<<INFRA_SM_INIT_BIT); 14764064216a8433360745f69edddce19a606659163The Android Open Source Project 14864064216a8433360745f69edddce19a606659163The Android Open Source Project 14964064216a8433360745f69edddce19a606659163The Android Open Source Project /* ------- */ 15064064216a8433360745f69edddce19a606659163The Android Open Source Project 15164064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hOs = hOs; 15264064216a8433360745f69edddce19a606659163The Android Open Source Project 15364064216a8433360745f69edddce19a606659163The Android Open Source Project return(pConn); 15464064216a8433360745f69edddce19a606659163The Android Open Source Project} 15564064216a8433360745f69edddce19a606659163The Android Open Source Project 15664064216a8433360745f69edddce19a606659163The Android Open Source Project 15764064216a8433360745f69edddce19a606659163The Android Open Source Project/************************************************************************ 15864064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_config * 15964064216a8433360745f69edddce19a606659163The Android Open Source Project ************************************************************************ 16064064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Connection module configuration function, called by the config mgr in configuration phase 16164064216a8433360745f69edddce19a606659163The Android Open Source Project performs the following: 16264064216a8433360745f69edddce19a606659163The Android Open Source Project - Reset & initiailzes local variables 16364064216a8433360745f69edddce19a606659163The Android Open Source Project - Init the handles to be used by the module 16464064216a8433360745f69edddce19a606659163The Android Open Source Project 16564064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle 16664064216a8433360745f69edddce19a606659163The Android Open Source Project List of handles to be used by the module 16764064216a8433360745f69edddce19a606659163The Android Open Source Project pConnInitParams - Init table of the module. 16864064216a8433360745f69edddce19a606659163The Android Open Source Project 16964064216a8433360745f69edddce19a606659163The Android Open Source Project 17064064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 17164064216a8433360745f69edddce19a606659163The Android Open Source Project 17264064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 17364064216a8433360745f69edddce19a606659163The Android Open Source Project 17464064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 17564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_config(TI_HANDLE hConn, 17664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hSiteMgr, 17764064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hSmeSm, 17864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hMlmeSm, 17964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hRsn, 18064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hRxData, 18164064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hTxData, 18264064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hReport, 18364064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hOs, 18464064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hPwrMngr, 18564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hCtrlData, 18664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hMeasurementMgr, 18764064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hTrafficMonitor, 18864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hScr, 18964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hExcMngr, 19064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hQosMngr, 19164064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hHalCtrl, 19264064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hScanCnc, 19364064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hCurrBss, 19464064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hSwitchChannel, 19564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hEvHandler, 19664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hHealthMonitor, 19764064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hMacServices, 19864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hRegulatoryDomain, 19964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE hSoftGemini, 20064064216a8433360745f69edddce19a606659163The Android Open Source Project connInitParams_t *pConnInitParams) 20164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 20264064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 20364064216a8433360745f69edddce19a606659163The Android Open Source Project 20464064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->state = 0; 20564064216a8433360745f69edddce19a606659163The Android Open Source Project os_memoryZero(hOs, &(pConn->smContext), sizeof(connSmContext_t)); 20664064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->timeout = pConnInitParams->connSelfTimeout; 20764064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hSiteMgr = hSiteMgr; 20864064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hSmeSm = hSmeSm; 20964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hMlmeSm = hMlmeSm; 21064064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hRsn = hRsn; 21164064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hRxData = hRxData; 21264064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hTxData = hTxData; 21364064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hReport = hReport; 21464064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hOs = hOs; 21564064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hPwrMngr = hPwrMngr; 21664064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hCtrlData = hCtrlData; 21764064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hMeasurementMgr = hMeasurementMgr; 21864064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hTrafficMonitor = hTrafficMonitor; 21964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hScr = hScr; 22064064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hExcMngr = hExcMngr; 22164064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hQosMngr = hQosMngr; 22264064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hHalCtrl = hHalCtrl; 22364064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hScanCnc = hScanCnc; 22464064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hCurrBss = hCurrBss; 22564064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hSwitchChannel = hSwitchChannel; 22664064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hEvHandler = hEvHandler; 22764064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hHealthMonitor = hHealthMonitor; 22864064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hMacServices = hMacServices; 22964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hSoftGemini = hSoftGemini; 23064064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->hRegulatoryDomain = hRegulatoryDomain; 23164064216a8433360745f69edddce19a606659163The Android Open Source Project 23264064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->connType = CONN_TYPE_FIRST_CONN; 23364064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->ibssDisconnectCount = 0; 23464064216a8433360745f69edddce19a606659163The Android Open Source Project 23564064216a8433360745f69edddce19a606659163The Android Open Source Project whalCtrl_EventMbox_RegisterForEvent(pConn->hHalCtrl, HAL_EVENT_JOIN_CMPLT, 23664064216a8433360745f69edddce19a606659163The Android Open Source Project (void *)connInfra_JoinCmpltNotification, pConn); 23764064216a8433360745f69edddce19a606659163The Android Open Source Project 23864064216a8433360745f69edddce19a606659163The Android Open Source Project whalCtrl_EventMbox_Enable(pConn->hHalCtrl, HAL_EVENT_JOIN_CMPLT); 23964064216a8433360745f69edddce19a606659163The Android Open Source Project 24064064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INIT(hReport, CONN_MODULE_LOG, (".....Connection configured successfully\n")); 24164064216a8433360745f69edddce19a606659163The Android Open Source Project 24264064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 24364064216a8433360745f69edddce19a606659163The Android Open Source Project} 24464064216a8433360745f69edddce19a606659163The Android Open Source Project 24564064216a8433360745f69edddce19a606659163The Android Open Source Project/************************************************************************ 24664064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_unLoad * 24764064216a8433360745f69edddce19a606659163The Android Open Source Project ************************************************************************ 24864064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Connection module unload function, called by the config mgr in the unlod phase 24964064216a8433360745f69edddce19a606659163The Android Open Source Project performs the following: 25064064216a8433360745f69edddce19a606659163The Android Open Source Project - Free all memory aloocated by the module 25164064216a8433360745f69edddce19a606659163The Android Open Source Project 25264064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 25364064216a8433360745f69edddce19a606659163The Android Open Source Project 25464064216a8433360745f69edddce19a606659163The Android Open Source Project 25564064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 25664064216a8433360745f69edddce19a606659163The Android Open Source Project 25764064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 25864064216a8433360745f69edddce19a606659163The Android Open Source Project 25964064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 26064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_unLoad(TI_HANDLE hConn) 26164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 26264064216a8433360745f69edddce19a606659163The Android Open Source Project UINT32 initVec; 26364064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 26464064216a8433360745f69edddce19a606659163The Android Open Source Project 26564064216a8433360745f69edddce19a606659163The Android Open Source Project if (!pConn) 26664064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 26764064216a8433360745f69edddce19a606659163The Android Open Source Project 26864064216a8433360745f69edddce19a606659163The Android Open Source Project initVec = 0xFFFF; 26964064216a8433360745f69edddce19a606659163The Android Open Source Project release_module(pConn, initVec); 27064064216a8433360745f69edddce19a606659163The Android Open Source Project 27164064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 27264064216a8433360745f69edddce19a606659163The Android Open Source Project} 27364064216a8433360745f69edddce19a606659163The Android Open Source Project 27464064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 27564064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_setParam 27664064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 27764064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Connection set param function, called by the following: 27864064216a8433360745f69edddce19a606659163The Android Open Source Project - config mgr in order to set a parameter from the OS abstraction layer. 27964064216a8433360745f69edddce19a606659163The Android Open Source Project - Form inside the driver 28064064216a8433360745f69edddce19a606659163The Android Open Source Project In this fuction, the site manager configures the connection type in the select phase. 28164064216a8433360745f69edddce19a606659163The Android Open Source Project The connection type is used to distribute the connection events to the corresponding connection SM 28264064216a8433360745f69edddce19a606659163The Android Open Source Project 28364064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 28464064216a8433360745f69edddce19a606659163The Android Open Source Project pParam - Pointer to the parameter 28564064216a8433360745f69edddce19a606659163The Android Open Source Project 28664064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 28764064216a8433360745f69edddce19a606659163The Android Open Source Project 28864064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 28964064216a8433360745f69edddce19a606659163The Android Open Source Project 29064064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 29164064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_setParam(TI_HANDLE hConn, 29264064216a8433360745f69edddce19a606659163The Android Open Source Project paramInfo_t *pParam) 29364064216a8433360745f69edddce19a606659163The Android Open Source Project{ 29464064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 29564064216a8433360745f69edddce19a606659163The Android Open Source Project 29664064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pParam->paramType) 29764064216a8433360745f69edddce19a606659163The Android Open Source Project { 29864064216a8433360745f69edddce19a606659163The Android Open Source Project case CONN_TYPE_PARAM: 29964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->currentConnType = pParam->content.connType; 30064064216a8433360745f69edddce19a606659163The Android Open Source Project switch (pParam->content.connType) 30164064216a8433360745f69edddce19a606659163The Android Open Source Project { 30264064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_IBSS: 30364064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_SELF: 30464064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_ibssConfig(pConn); 30564064216a8433360745f69edddce19a606659163The Android Open Source Project 30664064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_INFRA: 30764064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_infraConfig(pConn); 30864064216a8433360745f69edddce19a606659163The Android Open Source Project 30964064216a8433360745f69edddce19a606659163The Android Open Source Project default: 31064064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pConn->hReport, CONN_MODULE_LOG, ("Set connection type, type is not valid, %d\n\n", pParam->content.connType)); 31164064216a8433360745f69edddce19a606659163The Android Open Source Project return PARAM_VALUE_NOT_VALID; 31264064216a8433360745f69edddce19a606659163The Android Open Source Project } 31364064216a8433360745f69edddce19a606659163The Android Open Source Project 31464064216a8433360745f69edddce19a606659163The Android Open Source Project case CONN_SELF_TIMEOUT_PARAM: 31564064216a8433360745f69edddce19a606659163The Android Open Source Project if ((pParam->content.connSelfTimeout < CONN_SELF_TIMEOUT_MIN) || (pParam->content.connSelfTimeout > CONN_SELF_TIMEOUT_MAX)) 31664064216a8433360745f69edddce19a606659163The Android Open Source Project return PARAM_VALUE_NOT_VALID; 31764064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->timeout = pParam->content.connSelfTimeout; 31864064216a8433360745f69edddce19a606659163The Android Open Source Project break; 31964064216a8433360745f69edddce19a606659163The Android Open Source Project 32064064216a8433360745f69edddce19a606659163The Android Open Source Project default: 32164064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pConn->hReport, CONN_MODULE_LOG, ("Set param, Params is not supported, %d\n\n", pParam->paramType)); 32264064216a8433360745f69edddce19a606659163The Android Open Source Project return PARAM_NOT_SUPPORTED; 32364064216a8433360745f69edddce19a606659163The Android Open Source Project } 32464064216a8433360745f69edddce19a606659163The Android Open Source Project 32564064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 32664064216a8433360745f69edddce19a606659163The Android Open Source Project} 32764064216a8433360745f69edddce19a606659163The Android Open Source Project 32864064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 32964064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_getParam 33064064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 33164064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Connection get param function, called by the following: 33264064216a8433360745f69edddce19a606659163The Android Open Source Project - config mgr in order to get a parameter from the OS abstraction layer. 33364064216a8433360745f69edddce19a606659163The Android Open Source Project - Fomr inside the dirver 33464064216a8433360745f69edddce19a606659163The Android Open Source Project 33564064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 33664064216a8433360745f69edddce19a606659163The Android Open Source Project pParam - Pointer to the parameter 33764064216a8433360745f69edddce19a606659163The Android Open Source Project 33864064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 33964064216a8433360745f69edddce19a606659163The Android Open Source Project 34064064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 34164064216a8433360745f69edddce19a606659163The Android Open Source Project 34264064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 34364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_getParam(TI_HANDLE hConn, 34464064216a8433360745f69edddce19a606659163The Android Open Source Project paramInfo_t *pParam) 34564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 34664064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 34764064216a8433360745f69edddce19a606659163The Android Open Source Project 34864064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pParam->paramType) 34964064216a8433360745f69edddce19a606659163The Android Open Source Project { 35064064216a8433360745f69edddce19a606659163The Android Open Source Project case CONN_TYPE_PARAM: 35164064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->content.connType = pConn->currentConnType; 35264064216a8433360745f69edddce19a606659163The Android Open Source Project break; 35364064216a8433360745f69edddce19a606659163The Android Open Source Project 35464064216a8433360745f69edddce19a606659163The Android Open Source Project case CONN_SELF_TIMEOUT_PARAM: 35564064216a8433360745f69edddce19a606659163The Android Open Source Project pParam->content.connSelfTimeout = pConn->timeout; 35664064216a8433360745f69edddce19a606659163The Android Open Source Project break; 35764064216a8433360745f69edddce19a606659163The Android Open Source Project 35864064216a8433360745f69edddce19a606659163The Android Open Source Project default: 35964064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pConn->hReport, CONN_MODULE_LOG, ("Get param, Params is not supported, %d\n\n", pParam->paramType)); 36064064216a8433360745f69edddce19a606659163The Android Open Source Project return PARAM_NOT_SUPPORTED; 36164064216a8433360745f69edddce19a606659163The Android Open Source Project } 36264064216a8433360745f69edddce19a606659163The Android Open Source Project 36364064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 36464064216a8433360745f69edddce19a606659163The Android Open Source Project} 36564064216a8433360745f69edddce19a606659163The Android Open Source Project 36664064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 36764064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_start 36864064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 36964064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Called by the SME SM in order to start the connection SM 37064064216a8433360745f69edddce19a606659163The Android Open Source Project This function start the current connection SM 37164064216a8433360745f69edddce19a606659163The Android Open Source Project 37264064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 37364064216a8433360745f69edddce19a606659163The Android Open Source Project 37464064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 37564064216a8433360745f69edddce19a606659163The Android Open Source Project 37664064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 37764064216a8433360745f69edddce19a606659163The Android Open Source Project 37864064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 37964064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_start(TI_HANDLE hConn, connType_e connType, 38064064216a8433360745f69edddce19a606659163The Android Open Source Project conn_status_callback_t pConnStatusCB, 38164064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE connStatCbObj, 38264064216a8433360745f69edddce19a606659163The Android Open Source Project BOOL disConEraseKeys, 38364064216a8433360745f69edddce19a606659163The Android Open Source Project BOOL reNegotiateTspec) 38464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 38564064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 38645544f73189f4649d4afb21a0dab72cd70971e2fDmitry Shmidt paramInfoPartial_t param; 38764064216a8433360745f69edddce19a606659163The Android Open Source Project 38864064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->pConnStatusCB = pConnStatusCB; 38964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->connStatCbObj = connStatCbObj; 39064064216a8433360745f69edddce19a606659163The Android Open Source Project 39164064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->connType = connType; 39264064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConEraseKeys = disConEraseKeys; 39364064216a8433360745f69edddce19a606659163The Android Open Source Project 39464064216a8433360745f69edddce19a606659163The Android Open Source Project /* Initialize the DISASSOCIATE event parameters to default */ 39564064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventReason = STATUS_UNSPECIFIED; 39664064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventStatusCode = 0; 39764064216a8433360745f69edddce19a606659163The Android Open Source Project 39864064216a8433360745f69edddce19a606659163The Android Open Source Project /* If requested, re-negotiate voice TSPEC */ 39964064216a8433360745f69edddce19a606659163The Android Open Source Project param.paramType = QOS_MNGR_VOICE_RE_NEGOTIATE_TSPEC; 40064064216a8433360745f69edddce19a606659163The Android Open Source Project param.content.TspecConfigure.voiceTspecConfigure = reNegotiateTspec; 40164064216a8433360745f69edddce19a606659163The Android Open Source Project param.content.TspecConfigure.videoTspecConfigure = reNegotiateTspec; 40245544f73189f4649d4afb21a0dab72cd70971e2fDmitry Shmidt qosMngr_setParamsPartial(pConn->hQosMngr, ¶m); 40364064216a8433360745f69edddce19a606659163The Android Open Source Project 40464064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pConn->currentConnType) 40564064216a8433360745f69edddce19a606659163The Android Open Source Project { 40664064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_IBSS: 40764064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_ibssSMEvent(&pConn->state, CONN_IBSS_CONNECT, (TI_HANDLE) pConn); 40864064216a8433360745f69edddce19a606659163The Android Open Source Project 40964064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_SELF: 41064064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_ibssSMEvent(&pConn->state, CONN_IBSS_CREATE, (TI_HANDLE) pConn); 41164064216a8433360745f69edddce19a606659163The Android Open Source Project 41264064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_INFRA: 41364064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_infraSMEvent(&pConn->state, CONN_INFRA_CONNECT, (TI_HANDLE) pConn); 41464064216a8433360745f69edddce19a606659163The Android Open Source Project 41564064216a8433360745f69edddce19a606659163The Android Open Source Project default: 41664064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pConn->hReport, CONN_MODULE_LOG, ("Start connection, invalid type %d\n\n", pConn->currentConnType)); 41764064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 41864064216a8433360745f69edddce19a606659163The Android Open Source Project 41964064216a8433360745f69edddce19a606659163The Android Open Source Project } 42064064216a8433360745f69edddce19a606659163The Android Open Source Project} 42164064216a8433360745f69edddce19a606659163The Android Open Source Project 42264064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 42364064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_stop 42464064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 42564064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Called by the SME SM in order to stop the connection SM 42664064216a8433360745f69edddce19a606659163The Android Open Source Project This function stop the current connection SM. 42764064216a8433360745f69edddce19a606659163The Android Open Source Project 42864064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 42964064216a8433360745f69edddce19a606659163The Android Open Source Project 43064064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 43164064216a8433360745f69edddce19a606659163The Android Open Source Project 43264064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 43364064216a8433360745f69edddce19a606659163The Android Open Source Project 43464064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 43564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_stop(TI_HANDLE hConn, 43664064216a8433360745f69edddce19a606659163The Android Open Source Project disConnType_e disConnType, 43764064216a8433360745f69edddce19a606659163The Android Open Source Project mgmtStatus_e reason, 43864064216a8433360745f69edddce19a606659163The Android Open Source Project BOOL disConEraseKeys, 43964064216a8433360745f69edddce19a606659163The Android Open Source Project conn_status_callback_t pConnStatusCB, 44064064216a8433360745f69edddce19a606659163The Android Open Source Project TI_HANDLE connStatCbObj ) 44164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 44264064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 44364064216a8433360745f69edddce19a606659163The Android Open Source Project 44464064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->pConnStatusCB = pConnStatusCB; 44564064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->connStatCbObj = connStatCbObj; 44664064216a8433360745f69edddce19a606659163The Android Open Source Project 44764064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConnType = disConnType; 44864064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConnReasonToAP = reason; 44964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConEraseKeys = disConEraseKeys; 45064064216a8433360745f69edddce19a606659163The Android Open Source Project 45164064216a8433360745f69edddce19a606659163The Android Open Source Project /* 45264064216a8433360745f69edddce19a606659163The Android Open Source Project * Mark the disconnection reason as unspecified to indicate that conn module has no information regarding the DISASSOCIATE event to be raised 45364064216a8433360745f69edddce19a606659163The Android Open Source Project * by the SME 45464064216a8433360745f69edddce19a606659163The Android Open Source Project */ 45564064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventReason = STATUS_UNSPECIFIED; 45664064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventStatusCode = 0; 45764064216a8433360745f69edddce19a606659163The Android Open Source Project 45864064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pConn->hReport, CONN_MODULE_LOG, ("conn_stop, disConnType %d, reason=%d, disConEraseKeys=%d\n\n", 45964064216a8433360745f69edddce19a606659163The Android Open Source Project disConnType, reason, disConEraseKeys)); 46064064216a8433360745f69edddce19a606659163The Android Open Source Project 46164064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pConn->currentConnType) 46264064216a8433360745f69edddce19a606659163The Android Open Source Project { 46364064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_IBSS: 46464064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_SELF: 46564064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->ibssDisconnectCount++; 46664064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_ibssSMEvent(&pConn->state, CONN_IBSS_DISCONNECT, (TI_HANDLE) pConn); 46764064216a8433360745f69edddce19a606659163The Android Open Source Project 46864064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_INFRA: 46964064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_infraSMEvent(&pConn->state, CONN_INFRA_DISCONNECT, (TI_HANDLE) pConn); 47064064216a8433360745f69edddce19a606659163The Android Open Source Project 47164064216a8433360745f69edddce19a606659163The Android Open Source Project 47264064216a8433360745f69edddce19a606659163The Android Open Source Project default: 47364064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_ERROR(pConn->hReport, CONN_MODULE_LOG, ("Stop connection, invalid type %d\n\n", pConn->currentConnType)); 47464064216a8433360745f69edddce19a606659163The Android Open Source Project return NOK; 47564064216a8433360745f69edddce19a606659163The Android Open Source Project } 47664064216a8433360745f69edddce19a606659163The Android Open Source Project} 47764064216a8433360745f69edddce19a606659163The Android Open Source Project 47864064216a8433360745f69edddce19a606659163The Android Open Source Project 47964064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 48064064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_reportMlmeStatus 48164064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 48264064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Called by the MLME SM when MLME status changed. 48364064216a8433360745f69edddce19a606659163The Android Open Source Project Valid only in the case that the current connection type is infrastructure 48464064216a8433360745f69edddce19a606659163The Android Open Source Project The function calls the connection infra SM with MLME success or MLME failure 48564064216a8433360745f69edddce19a606659163The Android Open Source Project according to the status 48664064216a8433360745f69edddce19a606659163The Android Open Source Project 48764064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 48864064216a8433360745f69edddce19a606659163The Android Open Source Project status - MLME status 48964064216a8433360745f69edddce19a606659163The Android Open Source Project 49064064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 49164064216a8433360745f69edddce19a606659163The Android Open Source Project 49264064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 49364064216a8433360745f69edddce19a606659163The Android Open Source Project 49464064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 49564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_reportMlmeStatus(TI_HANDLE hConn, 49664064216a8433360745f69edddce19a606659163The Android Open Source Project mgmtStatus_e status, UINT16 uStatusCode) 49764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 49864064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 49964064216a8433360745f69edddce19a606659163The Android Open Source Project 50064064216a8433360745f69edddce19a606659163The Android Open Source Project /* Save the reason for the use of the SME when triggering DISASSOCIATE event */ 50164064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventReason = status; 50264064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventStatusCode = uStatusCode; 50364064216a8433360745f69edddce19a606659163The Android Open Source Project 50464064216a8433360745f69edddce19a606659163The Android Open Source Project if (status == STATUS_SUCCESSFUL) 50564064216a8433360745f69edddce19a606659163The Android Open Source Project { 50664064216a8433360745f69edddce19a606659163The Android Open Source Project conn_infraSMEvent(&pConn->state, CONN_INFRA_MLME_SUCC, pConn); 50764064216a8433360745f69edddce19a606659163The Android Open Source Project } 50864064216a8433360745f69edddce19a606659163The Android Open Source Project else 50964064216a8433360745f69edddce19a606659163The Android Open Source Project { 51064064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_OS_REPORT(("-------------------------------------\n")); 51164064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_OS_REPORT((" CONN LOST \n")); 51264064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_OS_REPORT(("-------------------------------------\n")); 51364064216a8433360745f69edddce19a606659163The Android Open Source Project 51464064216a8433360745f69edddce19a606659163The Android Open Source Project if( pConn->connType == CONN_TYPE_ROAM ) 51564064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConnType = DISCONN_TYPE_IMMEDIATE; 51664064216a8433360745f69edddce19a606659163The Android Open Source Project else /* connType == CONN_TYPE_ESS */ 51764064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConnType = DISCONN_TYPE_DEAUTH; 51864064216a8433360745f69edddce19a606659163The Android Open Source Project 51964064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pConn->hReport, CONN_MODULE_LOG, 52064064216a8433360745f69edddce19a606659163The Android Open Source Project ("conn_reportMlmeStatus, disAssocEventReason %d, disAssocEventStatusCode = %d, connType=%d, disConnType=%d \n", 52164064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventReason, pConn->smContext.disAssocEventStatusCode, pConn->connType, pConn->disConnType)); 52264064216a8433360745f69edddce19a606659163The Android Open Source Project 52364064216a8433360745f69edddce19a606659163The Android Open Source Project conn_infraSMEvent(&pConn->state, CONN_INFRA_DISCONNECT, pConn); 52464064216a8433360745f69edddce19a606659163The Android Open Source Project } 52564064216a8433360745f69edddce19a606659163The Android Open Source Project 52664064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 52764064216a8433360745f69edddce19a606659163The Android Open Source Project} 52864064216a8433360745f69edddce19a606659163The Android Open Source Project 52964064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 53064064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_reportRsnStatus 53164064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 53264064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Called by the RSN SM when RSN status changed. 53364064216a8433360745f69edddce19a606659163The Android Open Source Project This function calls the current connection SM with RSN success or RSN failure based on the status 53464064216a8433360745f69edddce19a606659163The Android Open Source Project 53564064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 53664064216a8433360745f69edddce19a606659163The Android Open Source Project status - RSN status 53764064216a8433360745f69edddce19a606659163The Android Open Source Project 53864064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 53964064216a8433360745f69edddce19a606659163The Android Open Source Project 54064064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 54164064216a8433360745f69edddce19a606659163The Android Open Source Project 54264064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 54364064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_reportRsnStatus(TI_HANDLE hConn, 54464064216a8433360745f69edddce19a606659163The Android Open Source Project mgmtStatus_e status) 54564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 54664064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 54764064216a8433360745f69edddce19a606659163The Android Open Source Project 54864064216a8433360745f69edddce19a606659163The Android Open Source Project /* Save the reason for the use of the SME when triggering DISASSOCIATE event. For now we just have STATUS_SECURITY_FAILURE */ 54964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventReason = status; 55064064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventStatusCode = 0; /* For now we don't use this parameter in RSN */ 55164064216a8433360745f69edddce19a606659163The Android Open Source Project 55264064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pConn->currentConnType) 55364064216a8433360745f69edddce19a606659163The Android Open Source Project { 55464064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_IBSS: 55564064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_SELF: 55664064216a8433360745f69edddce19a606659163The Android Open Source Project if (status == STATUS_SUCCESSFUL) 55764064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_ibssSMEvent(&pConn->state, CONN_IBSS_RSN_SUCC, (TI_HANDLE) pConn); 55864064216a8433360745f69edddce19a606659163The Android Open Source Project else 55964064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_ibssSMEvent(&pConn->state, CONN_IBSS_DISCONNECT, (TI_HANDLE) pConn); 56064064216a8433360745f69edddce19a606659163The Android Open Source Project 56164064216a8433360745f69edddce19a606659163The Android Open Source Project 56264064216a8433360745f69edddce19a606659163The Android Open Source Project 56364064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_INFRA: 56464064216a8433360745f69edddce19a606659163The Android Open Source Project if (status == STATUS_SUCCESSFUL) 56564064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_infraSMEvent(&pConn->state, CONN_INFRA_RSN_SUCC, (TI_HANDLE) pConn); 56664064216a8433360745f69edddce19a606659163The Android Open Source Project 56764064216a8433360745f69edddce19a606659163The Android Open Source Project else{ /* status == STATUS_SECURITY_FAILURE */ 56864064216a8433360745f69edddce19a606659163The Android Open Source Project /* 56964064216a8433360745f69edddce19a606659163The Android Open Source Project * In infrastructure - if the connection is standard 802.11 connection (ESS) then 57064064216a8433360745f69edddce19a606659163The Android Open Source Project * need to disassociate. In roaming mode, the connection is stopped without sending 57164064216a8433360745f69edddce19a606659163The Android Open Source Project * the reassociation frame. 57264064216a8433360745f69edddce19a606659163The Android Open Source Project */ 57364064216a8433360745f69edddce19a606659163The Android Open Source Project if( pConn->connType == CONN_TYPE_ROAM ) 57464064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConnType = DISCONN_TYPE_IMMEDIATE; 57564064216a8433360745f69edddce19a606659163The Android Open Source Project else /* connType == CONN_TYPE_ESS */ 57664064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->disConnType = DISCONN_TYPE_DISASSOC; 57764064216a8433360745f69edddce19a606659163The Android Open Source Project 57864064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_REPORT_INFORMATION(pConn->hReport, CONN_MODULE_LOG, ("conn_reportRsnStatus, disAssocEventReason %d, connType=%d, disConnType=%d \n\n", 57964064216a8433360745f69edddce19a606659163The Android Open Source Project pConn->smContext.disAssocEventReason, pConn->connType, pConn->disConnType)); 58064064216a8433360745f69edddce19a606659163The Android Open Source Project 58164064216a8433360745f69edddce19a606659163The Android Open Source Project return conn_infraSMEvent(&pConn->state, CONN_INFRA_DISCONNECT, (TI_HANDLE) pConn); 58264064216a8433360745f69edddce19a606659163The Android Open Source Project } 58364064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_NONE: 58464064216a8433360745f69edddce19a606659163The Android Open Source Project break; 58564064216a8433360745f69edddce19a606659163The Android Open Source Project } 58664064216a8433360745f69edddce19a606659163The Android Open Source Project 58764064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 58864064216a8433360745f69edddce19a606659163The Android Open Source Project} 58964064216a8433360745f69edddce19a606659163The Android Open Source Project 59064064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 59164064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_timeout 59264064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 59364064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Called by the OS abstraction layer when the self timer expired 59464064216a8433360745f69edddce19a606659163The Android Open Source Project Valid only if the current connection type is self 59564064216a8433360745f69edddce19a606659163The Android Open Source Project This function calls the self connection SM with timeout event 59664064216a8433360745f69edddce19a606659163The Android Open Source Project 59764064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 59864064216a8433360745f69edddce19a606659163The Android Open Source Project 59964064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 60064064216a8433360745f69edddce19a606659163The Android Open Source Project 60164064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 60264064216a8433360745f69edddce19a606659163The Android Open Source Project 60364064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 60464064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void conn_timeout(void *pContext) 60564064216a8433360745f69edddce19a606659163The Android Open Source Project{ 60664064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)pContext; 60764064216a8433360745f69edddce19a606659163The Android Open Source Project 60864064216a8433360745f69edddce19a606659163The Android Open Source Project switch(pConn->currentConnType) 60964064216a8433360745f69edddce19a606659163The Android Open Source Project { 61064064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_IBSS: 61164064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_SELF: 61264064216a8433360745f69edddce19a606659163The Android Open Source Project conn_ibssSMEvent(&pConn->state, CONN_IBSS_DISCONNECT, pConn); 61364064216a8433360745f69edddce19a606659163The Android Open Source Project break; 61464064216a8433360745f69edddce19a606659163The Android Open Source Project 61564064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_INFRA: 61664064216a8433360745f69edddce19a606659163The Android Open Source Project conn_infraSMEvent(&pConn->state, CONN_INFRA_DISCONN_COMPLETE, (TI_HANDLE) pConn); 61764064216a8433360745f69edddce19a606659163The Android Open Source Project healthMonitor_sendFailureEvent(pConn->hHealthMonitor, DISCONNECT_TIMEOUT); 61864064216a8433360745f69edddce19a606659163The Android Open Source Project break; 61964064216a8433360745f69edddce19a606659163The Android Open Source Project 62064064216a8433360745f69edddce19a606659163The Android Open Source Project case CONNECTION_NONE: 62164064216a8433360745f69edddce19a606659163The Android Open Source Project break; 62264064216a8433360745f69edddce19a606659163The Android Open Source Project } 62364064216a8433360745f69edddce19a606659163The Android Open Source Project 62464064216a8433360745f69edddce19a606659163The Android Open Source Project return; 62564064216a8433360745f69edddce19a606659163The Android Open Source Project} 62664064216a8433360745f69edddce19a606659163The Android Open Source Project 62764064216a8433360745f69edddce19a606659163The Android Open Source Project 62864064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 62964064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_join 63064064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 63164064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Called by the site manager when detecting that another station joined our own created IBSS 63264064216a8433360745f69edddce19a606659163The Android Open Source Project Valid only if the current connection type is self 63364064216a8433360745f69edddce19a606659163The Android Open Source Project This function calls the self connection SM with join event 63464064216a8433360745f69edddce19a606659163The Android Open Source Project 63564064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 63664064216a8433360745f69edddce19a606659163The Android Open Source Project 63764064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 63864064216a8433360745f69edddce19a606659163The Android Open Source Project 63964064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 64064064216a8433360745f69edddce19a606659163The Android Open Source Project 64164064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 64264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS conn_ibssStaJoined(TI_HANDLE hConn) 64364064216a8433360745f69edddce19a606659163The Android Open Source Project{ 64464064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 64564064216a8433360745f69edddce19a606659163The Android Open Source Project conn_ibssSMEvent(&pConn->state, CONN_IBSS_STA_JOINED, pConn); 64664064216a8433360745f69edddce19a606659163The Android Open Source Project return OK; 64764064216a8433360745f69edddce19a606659163The Android Open Source Project} 64864064216a8433360745f69edddce19a606659163The Android Open Source Project 64964064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 65064064216a8433360745f69edddce19a606659163The Android Open Source Project * release_module 65164064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 65264064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: Called by the un load function 65364064216a8433360745f69edddce19a606659163The Android Open Source Project Go over the vector, for each bit that is set, release the corresponding module. 65464064216a8433360745f69edddce19a606659163The Android Open Source Project 65564064216a8433360745f69edddce19a606659163The Android Open Source ProjectINPUT: hConn - Connection handle. 65664064216a8433360745f69edddce19a606659163The Android Open Source Project initVec - Vector that contains a bit set for each module thah had been initiualized 65764064216a8433360745f69edddce19a606659163The Android Open Source Project 65864064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 65964064216a8433360745f69edddce19a606659163The Android Open Source Project 66064064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 66164064216a8433360745f69edddce19a606659163The Android Open Source Project 66264064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 66364064216a8433360745f69edddce19a606659163The Android Open Source Projectstatic void release_module(conn_t *pConn, UINT32 initVec) 66464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 66564064216a8433360745f69edddce19a606659163The Android Open Source Project if (initVec & (1 << IBSS_SM_INIT_BIT)) 66664064216a8433360745f69edddce19a606659163The Android Open Source Project fsm_Unload(pConn->hOs, pConn->ibss_pFsm); 66764064216a8433360745f69edddce19a606659163The Android Open Source Project 66864064216a8433360745f69edddce19a606659163The Android Open Source Project if (initVec & (1 << INFRA_SM_INIT_BIT)) 66964064216a8433360745f69edddce19a606659163The Android Open Source Project fsm_Unload(pConn->hOs, pConn->infra_pFsm); 67064064216a8433360745f69edddce19a606659163The Android Open Source Project 67164064216a8433360745f69edddce19a606659163The Android Open Source Project if (initVec & (1 << TIMER_INIT_BIT)) 67264064216a8433360745f69edddce19a606659163The Android Open Source Project utils_nullTimerDestroy(pConn->hOs, pConn->pTimer); 67364064216a8433360745f69edddce19a606659163The Android Open Source Project 67445544f73189f4649d4afb21a0dab72cd70971e2fDmitry Shmidt if (initVec & (1 << CONN_INIT_BIT)) 67564064216a8433360745f69edddce19a606659163The Android Open Source Project utils_nullMemoryFree(pConn->hOs, pConn, sizeof(conn_t)); 67664064216a8433360745f69edddce19a606659163The Android Open Source Project 67764064216a8433360745f69edddce19a606659163The Android Open Source Project initVec = 0; 67864064216a8433360745f69edddce19a606659163The Android Open Source Project} 67964064216a8433360745f69edddce19a606659163The Android Open Source Project 68064064216a8433360745f69edddce19a606659163The Android Open Source Project 68164064216a8433360745f69edddce19a606659163The Android Open Source Project/*********************************************************************** 68264064216a8433360745f69edddce19a606659163The Android Open Source Project * conn_waitToDisassoc 68364064216a8433360745f69edddce19a606659163The Android Open Source Project *********************************************************************** 68464064216a8433360745f69edddce19a606659163The Android Open Source ProjectDESCRIPTION: 68564064216a8433360745f69edddce19a606659163The Android Open Source Project 68664064216a8433360745f69edddce19a606659163The Android Open Source Project INPUT: hConn - Connection handle. 68764064216a8433360745f69edddce19a606659163The Android Open Source Project 68864064216a8433360745f69edddce19a606659163The Android Open Source ProjectOUTPUT: 68964064216a8433360745f69edddce19a606659163The Android Open Source Project 69064064216a8433360745f69edddce19a606659163The Android Open Source ProjectRETURN: OK on success, NOK otherwise 69164064216a8433360745f69edddce19a606659163The Android Open Source Project 69264064216a8433360745f69edddce19a606659163The Android Open Source Project************************************************************************/ 69364064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid conn_disConnFrameSentCBFunc(TI_HANDLE hConn) 69464064216a8433360745f69edddce19a606659163The Android Open Source Project{ 69564064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 69664064216a8433360745f69edddce19a606659163The Android Open Source Project 69764064216a8433360745f69edddce19a606659163The Android Open Source Project conn_infraSMEvent(&pConn->state, CONN_INFRA_DISCONN_COMPLETE, (TI_HANDLE) pConn); 69864064216a8433360745f69edddce19a606659163The Android Open Source Project} 69964064216a8433360745f69edddce19a606659163The Android Open Source Project 70064064216a8433360745f69edddce19a606659163The Android Open Source Project/** 70164064216a8433360745f69edddce19a606659163The Android Open Source Project* 70264064216a8433360745f69edddce19a606659163The Android Open Source Project* conn_ibssPrintStatistics 70364064216a8433360745f69edddce19a606659163The Android Open Source Project* 70464064216a8433360745f69edddce19a606659163The Android Open Source Project* \b Description: 70564064216a8433360745f69edddce19a606659163The Android Open Source Project* 70664064216a8433360745f69edddce19a606659163The Android Open Source Project* Called by Site Manager when request to print statistics is requested from CLI 70764064216a8433360745f69edddce19a606659163The Android Open Source Project* 70864064216a8433360745f69edddce19a606659163The Android Open Source Project* \b ARGS: Connection handle 70964064216a8433360745f69edddce19a606659163The Android Open Source Project* 71064064216a8433360745f69edddce19a606659163The Android Open Source Project* \b RETURNS: 71164064216a8433360745f69edddce19a606659163The Android Open Source Project* 71264064216a8433360745f69edddce19a606659163The Android Open Source Project* None. 71364064216a8433360745f69edddce19a606659163The Android Open Source Project* 71464064216a8433360745f69edddce19a606659163The Android Open Source Project* \sa 71564064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 71664064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid conn_ibssPrintStatistics(TI_HANDLE hConn) 71764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 71864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef REPORT_LOG 71964064216a8433360745f69edddce19a606659163The Android Open Source Project conn_t *pConn = (conn_t *)hConn; 72064064216a8433360745f69edddce19a606659163The Android Open Source Project 72164064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_OS_REPORT(("- IBSS Disconnect = %d\n", pConn->ibssDisconnectCount)); 72264064216a8433360745f69edddce19a606659163The Android Open Source Project WLAN_OS_REPORT(("\n")); 72364064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 72464064216a8433360745f69edddce19a606659163The Android Open Source Project} 72564064216a8433360745f69edddce19a606659163The Android Open Source Project 726