164064216a8433360745f69edddce19a606659163The Android Open Source Project/** \file utilsReplvl.h
264064216a8433360745f69edddce19a606659163The Android Open Source Project *  \brief Report level API
364064216a8433360745f69edddce19a606659163The Android Open Source Project *
464064216a8433360745f69edddce19a606659163The Android Open Source Project *  \see utilsReplvl.c
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:	utilsReplvl.h																*/
4464064216a8433360745f69edddce19a606659163The Android Open Source Project/*    PURPOSE:	Report level API			 								*/
4564064216a8433360745f69edddce19a606659163The Android Open Source Project/*																									*/
4664064216a8433360745f69edddce19a606659163The Android Open Source Project/***************************************************************************/
4764064216a8433360745f69edddce19a606659163The Android Open Source Project#ifndef __RSN_API_H__
4864064216a8433360745f69edddce19a606659163The Android Open Source Project#define __RSN_API_H__
4964064216a8433360745f69edddce19a606659163The Android Open Source Project
5064064216a8433360745f69edddce19a606659163The Android Open Source Project#include "osTIType.h"
5164064216a8433360745f69edddce19a606659163The Android Open Source Project#include "paramOut.h"
5264064216a8433360745f69edddce19a606659163The Android Open Source Project#include "paramIn.h"
5364064216a8433360745f69edddce19a606659163The Android Open Source Project#include "memMngrEx.h"
5464064216a8433360745f69edddce19a606659163The Android Open Source Project#include "802_11Defs.h"
5564064216a8433360745f69edddce19a606659163The Android Open Source Project
5664064216a8433360745f69edddce19a606659163The Android Open Source Project/* Constants */
5764064216a8433360745f69edddce19a606659163The Android Open Source Project
5864064216a8433360745f69edddce19a606659163The Android Open Source Project#define RSN_MAC_ADDR_LEN			6
5964064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_KEY_RSC_LEN				8
6064064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_SSN_KEY_DATA_LENGTH		32
6164064216a8433360745f69edddce19a606659163The Android Open Source Project#define RSN_AUTH_FAILURE_TIMEOUT    30000
6264064216a8433360745f69edddce19a606659163The Android Open Source Project
6364064216a8433360745f69edddce19a606659163The Android Open Source Project/* Enumerations */
6464064216a8433360745f69edddce19a606659163The Android Open Source Project
6564064216a8433360745f69edddce19a606659163The Android Open Source Project/** RSN key management suites */
6664064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
6764064216a8433360745f69edddce19a606659163The Android Open Source Project{
6864064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_KEY_MNG_NONE				= 0,		/**< no key management available */
6964064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_KEY_MNG_802_1X				= 1,		/**< "802.1X" key management */
7064064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_KEY_MNG_WPA			        = 2,		/**< "WPA 4 way handshake" key management */
7164064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_KEY_MNG_EXC			        = 3,		/**< "EXC" key management */
7264064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_KEY_MNG_UNKNOWN				= 255		/**< UNKNOWN key management available */
7364064216a8433360745f69edddce19a606659163The Android Open Source Project} rsn_keyMngSuite_e;
7464064216a8433360745f69edddce19a606659163The Android Open Source Project
7564064216a8433360745f69edddce19a606659163The Android Open Source Project/** Available cipher suites for admission control */
7664064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
7764064216a8433360745f69edddce19a606659163The Android Open Source Project{
7864064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_IBSS            	= 0, 		/**< IBSS mode */
7964064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_INFRASTRUCTURE		= 1 		/**< Infrastructure mode */
8064064216a8433360745f69edddce19a606659163The Android Open Source Project} rsn_networkMode_t;
8164064216a8433360745f69edddce19a606659163The Android Open Source Project
8264064216a8433360745f69edddce19a606659163The Android Open Source Project/** Port Access Entity role type */
8364064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
8464064216a8433360745f69edddce19a606659163The Android Open Source Project{
8564064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_PAE_AP		= 0,
8664064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_PAE_SUPP	= 1
8764064216a8433360745f69edddce19a606659163The Android Open Source Project} rsn_paeRole_t;
8864064216a8433360745f69edddce19a606659163The Android Open Source Project
8964064216a8433360745f69edddce19a606659163The Android Open Source Project/** RSN Events */
9064064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum {
9164064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_EVENT_EAPOL_RECV    		= 0x0,		/**< EAPOL frame received in the RX */
9264064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_EVENT_SEC_ATTACK_DETECT		= 0x1,		/**< Security Attack detection */
9364064216a8433360745f69edddce19a606659163The Android Open Source Project	RSN_EVENT_RAW_KEY_RECV			= 0x2,		/**< Raw key recive */
9464064216a8433360745f69edddce19a606659163The Android Open Source Project    RSN_EVENT_KEY_REMOVE            = 0x3		/**< Key remove event */
9564064216a8433360745f69edddce19a606659163The Android Open Source Project} rsn_event_e;
9664064216a8433360745f69edddce19a606659163The Android Open Source Project
9764064216a8433360745f69edddce19a606659163The Android Open Source Project/** Site ben levels */
9864064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef enum
9964064216a8433360745f69edddce19a606659163The Android Open Source Project{
10064064216a8433360745f69edddce19a606659163The Android Open Source Project    RSN_SITE_BAN_LEVEL_HALF = 1,
10164064216a8433360745f69edddce19a606659163The Android Open Source Project    RSN_SITE_BAN_LEVEL_FULL  = 2
10264064216a8433360745f69edddce19a606659163The Android Open Source Project} rsn_siteBanLevel_e;
10364064216a8433360745f69edddce19a606659163The Android Open Source Project
10464064216a8433360745f69edddce19a606659163The Android Open Source Project
10564064216a8433360745f69edddce19a606659163The Android Open Source Project/* Typedefs */
10664064216a8433360745f69edddce19a606659163The Android Open Source Project
10764064216a8433360745f69edddce19a606659163The Android Open Source Project/** Port Access Entity structure */
10864064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct
10964064216a8433360745f69edddce19a606659163The Android Open Source Project{
11064064216a8433360745f69edddce19a606659163The Android Open Source Project	externalAuthMode_e	authProtocol;
11164064216a8433360745f69edddce19a606659163The Android Open Source Project	rsn_keyMngSuite_e	keyExchangeProtocol;
11264064216a8433360745f69edddce19a606659163The Android Open Source Project	cipherSuite_e		unicastSuite;
11364064216a8433360745f69edddce19a606659163The Android Open Source Project	cipherSuite_e		broadcastSuite;
11464064216a8433360745f69edddce19a606659163The Android Open Source Project} rsn_paeConfig_t;
11564064216a8433360745f69edddce19a606659163The Android Open Source Project
11664064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct
11764064216a8433360745f69edddce19a606659163The Android Open Source Project{
11864064216a8433360745f69edddce19a606659163The Android Open Source Project	BOOL 		    privacy;
11964064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8		    *pIe;
12064064216a8433360745f69edddce19a606659163The Android Open Source Project	UINT8		    ieLen;
12164064216a8433360745f69edddce19a606659163The Android Open Source Project} rsnData_t;
12264064216a8433360745f69edddce19a606659163The Android Open Source Project
12364064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct
12464064216a8433360745f69edddce19a606659163The Android Open Source Project{
12564064216a8433360745f69edddce19a606659163The Android Open Source Project   macAddress_t bssId;
12664064216a8433360745f69edddce19a606659163The Android Open Source Project   dot11_RSN_t  *pRsnIEs;
12764064216a8433360745f69edddce19a606659163The Android Open Source Project   UINT8        rsnIeLen;
12864064216a8433360745f69edddce19a606659163The Android Open Source Project} bssidRsnInfo_t;
12964064216a8433360745f69edddce19a606659163The Android Open Source Project
13064064216a8433360745f69edddce19a606659163The Android Open Source Project#define MAX_NUM_OF_PRE_AUTH_BSSIDS 	16
13164064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef struct
13264064216a8433360745f69edddce19a606659163The Android Open Source Project{
13364064216a8433360745f69edddce19a606659163The Android Open Source Project   UINT8          NumOfItems;
13464064216a8433360745f69edddce19a606659163The Android Open Source Project   bssidRsnInfo_t bssidList[MAX_NUM_OF_PRE_AUTH_BSSIDS];
13564064216a8433360745f69edddce19a606659163The Android Open Source Project} bssidList4PreAuth_t;
13664064216a8433360745f69edddce19a606659163The Android Open Source Project
13764064216a8433360745f69edddce19a606659163The Android Open Source Project
13864064216a8433360745f69edddce19a606659163The Android Open Source Project/* Prototypes */
13964064216a8433360745f69edddce19a606659163The Android Open Source Project
14064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_HANDLE rsn_create(TI_HANDLE hOs);
14164064216a8433360745f69edddce19a606659163The Android Open Source Project
14264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_unload(TI_HANDLE hRsn);
14364064216a8433360745f69edddce19a606659163The Android Open Source Project
14464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_config(TI_HANDLE 		hRsn,
14564064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE			hTx,
14664064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE			hRx,
14764064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE			hConn,
14864064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE			hMlme,
14964064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE			hCtrlData,
15064064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE			hWhalCtrl,
15164064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE			hMemMgr,
15264064216a8433360745f69edddce19a606659163The Android Open Source Project                  TI_HANDLE         hSiteMgr,
15364064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE 		hReport,
15464064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE 		hOs,
15564064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE 		hExcMngr,
15664064216a8433360745f69edddce19a606659163The Android Open Source Project				  TI_HANDLE 		hPowerMgr,
15764064216a8433360745f69edddce19a606659163The Android Open Source Project                  TI_HANDLE         hEvHandler,
15864064216a8433360745f69edddce19a606659163The Android Open Source Project                  TI_HANDLE         hSmeSm,
15964064216a8433360745f69edddce19a606659163The Android Open Source Project                  TI_HANDLE         hAPConn,
16064064216a8433360745f69edddce19a606659163The Android Open Source Project				  rsnInitParams_t	*pInitParam);
16164064216a8433360745f69edddce19a606659163The Android Open Source Project
16264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_reconfig(TI_HANDLE hRsn);
16364064216a8433360745f69edddce19a606659163The Android Open Source Project
16464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_start(TI_HANDLE hRsn);
16564064216a8433360745f69edddce19a606659163The Android Open Source Project
16664064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_stop(TI_HANDLE hRsn, BOOL removeKeys);
16764064216a8433360745f69edddce19a606659163The Android Open Source Project
16864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_eventRecv(TI_HANDLE hRsn, rsn_event_e event, void* pData);
16964064216a8433360745f69edddce19a606659163The Android Open Source Project
17064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_setParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
17164064216a8433360745f69edddce19a606659163The Android Open Source Project
17264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_getParam(TI_HANDLE hCtrlData, paramInfo_t	*pParam);
17364064216a8433360745f69edddce19a606659163The Android Open Source Project
17445544f73189f4649d4afb21a0dab72cd70971e2fDmitry ShmidtTI_STATUS rsn_getParamPartial(TI_HANDLE hRsn, paramInfoPartial_t *pParam);
17545544f73189f4649d4afb21a0dab72cd70971e2fDmitry Shmidt
17664064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_evalSite(TI_HANDLE hRsn, rsnData_t *pRsnData, bssType_e bssType, macAddress_t bssid, UINT32 *pMetric);
17764064216a8433360745f69edddce19a606659163The Android Open Source Project
17864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_setSite(TI_HANDLE hRsn, rsnData_t *pRsnData, UINT8 *pAssocIe, UINT8 *pAssocIeLen);
17964064216a8433360745f69edddce19a606659163The Android Open Source Project
18064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_recvEapol(TI_HANDLE hRsn, mem_MSDU_T *pMsdu);
18164064216a8433360745f69edddce19a606659163The Android Open Source Project
18264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_getInfoElement(TI_HANDLE hRsn, UINT8 *pRsnIe, UINT8 *pRsnIeLen);
18364064216a8433360745f69edddce19a606659163The Android Open Source Project
18464064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef EXC_MODULE_INCLUDED
18564064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_getExcExtendedInfoElement(TI_HANDLE hRsn, UINT8 *pRsnIe, UINT8 *pRsnIeLen);
18664064216a8433360745f69edddce19a606659163The Android Open Source Project#endif
18764064216a8433360745f69edddce19a606659163The Android Open Source Project
18864064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_reportAuthFailure(TI_HANDLE hRsn, authStatus_e authStatus);
18964064216a8433360745f69edddce19a606659163The Android Open Source Project
19064064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_reportMicFailure(TI_HANDLE hRsn, UINT8 *pType, UINT32 Length);
19164064216a8433360745f69edddce19a606659163The Android Open Source Project
19264064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_resetPMKIDList(TI_HANDLE hRsn);
19364064216a8433360745f69edddce19a606659163The Android Open Source Project
19464064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_removedDefKeys(TI_HANDLE hRsn);
19564064216a8433360745f69edddce19a606659163The Android Open Source Project
19664064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_STATUS rsn_startPreAuth(TI_HANDLE hRsn, bssidList4PreAuth_t *pBssidList);
19764064216a8433360745f69edddce19a606659163The Android Open Source Project
19864064216a8433360745f69edddce19a606659163The Android Open Source Projectrsn_siteBanLevel_e rsn_banSite(TI_HANDLE hRsn, macAddress_t siteBssid, rsn_siteBanLevel_e banLevel, UINT32 durationMs);
19964064216a8433360745f69edddce19a606659163The Android Open Source Project
20064064216a8433360745f69edddce19a606659163The Android Open Source ProjectBOOL rsn_isSiteBanned(TI_HANDLE hRsn, macAddress_t siteBssid);
20164064216a8433360745f69edddce19a606659163The Android Open Source Project
20264064216a8433360745f69edddce19a606659163The Android Open Source Projectvoid rsn_MboxFlushFinishCb(TI_HANDLE handle, UINT16 MboxStatus, char *InterrogateParamsBuf);
20364064216a8433360745f69edddce19a606659163The Android Open Source Project
20464064216a8433360745f69edddce19a606659163The Android Open Source Project
20564064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* __RSN_API_H__*/
206