1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
/*
** Id: //Department/DaVinci/BRANCHES/HS2_DEV_SW/MT6620_WIFI_DRIVER_V2_1_HS_2_0/include/mgmt/hs20.h#2
*/
/*! \file hs20.h
\brief This file contains the function declaration for hs20.c.
*/
/*
** Log:
*
*/
#ifndef _HS20_H
#define _HS20_H
#if CFG_SUPPORT_HOTSPOT_2_0
/*******************************************************************************
* C O M P I L E R F L A G S
********************************************************************************
*/
/*******************************************************************************
* E X T E R N A L R E F E R E N C E S
********************************************************************************
*/
/*******************************************************************************
* C O N S T A N T S
********************************************************************************
*/
#define BSSID_POOL_MAX_SIZE 8
#define HS20_SIGMA_SCAN_RESULT_TIMEOUT 30 /* sec */
/*******************************************************************************
* D A T A T Y P E S
********************************************************************************
*/
#if CFG_ENABLE_GTK_FRAME_FILTER
/*For GTK Frame Filter*/
typedef struct _IPV4_NETWORK_ADDRESS_LIST {
UINT_8 ucAddrCount;
IPV4_NETWORK_ADDRESS arNetAddr[1];
} IPV4_NETWORK_ADDRESS_LIST, *P_IPV4_NETWORK_ADDRESS_LIST;
#endif
/* Entry of BSSID Pool - For SIGMA Test */
typedef struct _BSSID_ENTRY_T {
UINT_8 aucBSSID[MAC_ADDR_LEN];
} BSSID_ENTRY_T, P_HS20_BSSID_POOL_ENTRY_T;
struct _HS20_INFO_T {
/*Hotspot 2.0 Information */
UINT_8 aucHESSID[MAC_ADDR_LEN];
UINT_8 ucAccessNetworkOptions;
UINT_8 ucVenueGroup; /* VenueInfo - Group */
UINT_8 ucVenueType;
UINT_8 ucHotspotConfig;
/*Roaming Consortium Information */
/* PARAM_HS20_ROAMING_CONSORTIUM_INFO rRCInfo; */
/*Hotspot 2.0 dummy AP Info */
/*Time Advertisement Information */
/* UINT_32 u4UTCOffsetTime; */
/* UINT_8 aucTimeZone[ELEM_MAX_LEN_TIME_ZONE]; */
/* UINT_8 ucLenTimeZone; */
/* For SIGMA Test */
/* BSSID Pool */
BSSID_ENTRY_T arBssidPool[BSSID_POOL_MAX_SIZE];
UINT_8 ucNumBssidPoolEntry;
BOOLEAN fgIsHS2SigmaMode;
};
/*******************************************************************************
* P U B L I C D A T A
********************************************************************************
*/
/*******************************************************************************
* P R I V A T E D A T A
********************************************************************************
*/
/*******************************************************************************
* M A C R O S
********************************************************************************
*/
/*For GTK Frame Filter*/
#if DBG
#define FREE_IPV4_NETWORK_ADDR_LIST(_prAddrList) \
{ \
UINT_32 u4Size = OFFSET_OF(IPV4_NETWORK_ADDRESS_LIST, arNetAddr) + \
(((_prAddrList)->ucAddrCount) * sizeof(IPV4_NETWORK_ADDRESS)); \
kalMemFree((_prAddrList), VIR_MEM_TYPE, u4Size); \
(_prAddrList) = NULL; \
}
#else
#define FREE_IPV4_NETWORK_ADDR_LIST(_prAddrList) \
{ \
kalMemFree((_prAddrList), VIR_MEM_TYPE, 0); \
(_prAddrList) = NULL; \
}
#endif
/*******************************************************************************
* F U N C T I O N S
********************************************************************************
*/
VOID hs20GenerateInterworkingIE(IN P_ADAPTER_T prAdapter, OUT P_MSDU_INFO_T prMsduInfo);
VOID hs20GenerateRoamingConsortiumIE(IN P_ADAPTER_T prAdapter, OUT P_MSDU_INFO_T prMsduInfo);
VOID hs20GenerateHS20IE(IN P_ADAPTER_T prAdapter, OUT P_MSDU_INFO_T prMsduInfo);
VOID hs20FillExtCapIE(P_ADAPTER_T prAdapter, P_BSS_INFO_T prBssInfo, P_MSDU_INFO_T prMsduInfo);
VOID hs20FillProreqExtCapIE(IN P_ADAPTER_T prAdapter, OUT PUINT_8 pucIE);
VOID hs20FillHS20IE(IN P_ADAPTER_T prAdapter, OUT PUINT_8 pucIE);
UINT_32 hs20CalculateHS20RelatedIEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_8 pucTargetBSSID);
WLAN_STATUS hs20GenerateHS20RelatedIEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_8 pucTargetBSSID, OUT PUINT_8 prIE);
BOOLEAN hs20IsGratuitousArp(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prCurrSwRfb);
BOOLEAN hs20IsUnsolicitedNeighborAdv(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prCurrSwRfb);
#if CFG_ENABLE_GTK_FRAME_FILTER
BOOLEAN hs20IsForgedGTKFrame(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prBssInfo, IN P_SW_RFB_T prCurrSwRfb);
#endif
BOOLEAN hs20IsUnsecuredFrame(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prBssInfo, IN P_SW_RFB_T prCurrSwRfb);
BOOLEAN hs20IsFrameFilterEnabled(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prBssInfo);
WLAN_STATUS hs20SetBssidPool(IN P_ADAPTER_T prAdapter, IN PVOID pvBuffer, IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIdx);
#endif
#endif
|