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