xref: /OK3568_Linux_fs/external/rkwifibt/drivers/bcmdhd/include/wpa.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Fundamental types and constants relating to WPA
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2020, Broadcom.
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  *      Unless you and Broadcom execute a separate written software license
7*4882a593Smuzhiyun  * agreement governing use of this software, this software is licensed to you
8*4882a593Smuzhiyun  * under the terms of the GNU General Public License version 2 (the "GPL"),
9*4882a593Smuzhiyun  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
10*4882a593Smuzhiyun  * following added to such license:
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  *      As a special exception, the copyright holders of this software give you
13*4882a593Smuzhiyun  * permission to link this software with independent modules, and to copy and
14*4882a593Smuzhiyun  * distribute the resulting executable under terms of your choice, provided that
15*4882a593Smuzhiyun  * you also meet, for each linked independent module, the terms and conditions of
16*4882a593Smuzhiyun  * the license of that module.  An independent module is a module which is not
17*4882a593Smuzhiyun  * derived from this software.  The special exception does not apply to any
18*4882a593Smuzhiyun  * modifications of the software.
19*4882a593Smuzhiyun  *
20*4882a593Smuzhiyun  *
21*4882a593Smuzhiyun  * <<Broadcom-WL-IPTag/Dual:>>
22*4882a593Smuzhiyun  */
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #ifndef _proto_wpa_h_
25*4882a593Smuzhiyun #define _proto_wpa_h_
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #include <typedefs.h>
28*4882a593Smuzhiyun #include <ethernet.h>
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /* This marks the start of a packed structure section. */
31*4882a593Smuzhiyun #include <packed_section_start.h>
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun /* Reason Codes */
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /* 13 through 23 taken from IEEE Std 802.11i-2004 */
36*4882a593Smuzhiyun #define DOT11_RC_INVALID_WPA_IE		13	/* Invalid info. element */
37*4882a593Smuzhiyun #define DOT11_RC_MIC_FAILURE		14	/* Michael failure */
38*4882a593Smuzhiyun #define DOT11_RC_4WH_TIMEOUT		15	/* 4-way handshake timeout */
39*4882a593Smuzhiyun #define DOT11_RC_GTK_UPDATE_TIMEOUT	16	/* Group key update timeout */
40*4882a593Smuzhiyun #define DOT11_RC_WPA_IE_MISMATCH	17	/* WPA IE in 4-way handshake differs from
41*4882a593Smuzhiyun 						 * (re-)assoc. request/probe response
42*4882a593Smuzhiyun 						 */
43*4882a593Smuzhiyun #define DOT11_RC_INVALID_MC_CIPHER	18	/* Invalid multicast cipher */
44*4882a593Smuzhiyun #define DOT11_RC_INVALID_UC_CIPHER	19	/* Invalid unicast cipher */
45*4882a593Smuzhiyun #define DOT11_RC_INVALID_AKMP		20	/* Invalid authenticated key management protocol */
46*4882a593Smuzhiyun #define DOT11_RC_BAD_WPA_VERSION	21	/* Unsupported WPA version */
47*4882a593Smuzhiyun #define DOT11_RC_INVALID_WPA_CAP	22	/* Invalid WPA IE capabilities */
48*4882a593Smuzhiyun #define DOT11_RC_8021X_AUTH_FAIL	23	/* 802.1X authentication failure */
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #define WPA2_PMKID_LEN	16
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun /* WPA IE fixed portion */
53*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct
54*4882a593Smuzhiyun {
55*4882a593Smuzhiyun 	uint8 tag;	/* TAG */
56*4882a593Smuzhiyun 	uint8 length;	/* TAG length */
57*4882a593Smuzhiyun 	uint8 oui[3];	/* IE OUI */
58*4882a593Smuzhiyun 	uint8 oui_type;	/* OUI type */
59*4882a593Smuzhiyun 	BWL_PRE_PACKED_STRUCT struct {
60*4882a593Smuzhiyun 		uint8 low;
61*4882a593Smuzhiyun 		uint8 high;
62*4882a593Smuzhiyun 	} BWL_POST_PACKED_STRUCT version;	/* IE version */
63*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_ie_fixed_t;
64*4882a593Smuzhiyun #define WPA_IE_OUITYPE_LEN	4
65*4882a593Smuzhiyun #define WPA_IE_FIXED_LEN	8
66*4882a593Smuzhiyun #define WPA_IE_TAG_FIXED_LEN	6
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun #define BIP_OUI_TYPE WPA2_OUI "\x06"
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct {
71*4882a593Smuzhiyun 	uint8 tag;	/* TAG */
72*4882a593Smuzhiyun 	uint8 length;	/* TAG length */
73*4882a593Smuzhiyun 	BWL_PRE_PACKED_STRUCT struct {
74*4882a593Smuzhiyun 		uint8 low;
75*4882a593Smuzhiyun 		uint8 high;
76*4882a593Smuzhiyun 	} BWL_POST_PACKED_STRUCT version;	/* IE version */
77*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_rsn_ie_fixed_t;
78*4882a593Smuzhiyun #define WPA_RSN_IE_FIXED_LEN	4
79*4882a593Smuzhiyun #define WPA_RSN_IE_TAG_FIXED_LEN	2
80*4882a593Smuzhiyun typedef uint8 wpa_pmkid_t[WPA2_PMKID_LEN];
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #define WFA_OSEN_IE_FIXED_LEN	6
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun /* WPA suite/multicast suite */
85*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct
86*4882a593Smuzhiyun {
87*4882a593Smuzhiyun 	uint8 oui[3];
88*4882a593Smuzhiyun 	uint8 type;
89*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_suite_t, wpa_suite_mcast_t;
90*4882a593Smuzhiyun #define WPA_SUITE_LEN	4
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun /* WPA unicast suite list/key management suite list */
93*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct
94*4882a593Smuzhiyun {
95*4882a593Smuzhiyun 	BWL_PRE_PACKED_STRUCT struct {
96*4882a593Smuzhiyun 		uint8 low;
97*4882a593Smuzhiyun 		uint8 high;
98*4882a593Smuzhiyun 	} BWL_POST_PACKED_STRUCT count;
99*4882a593Smuzhiyun 	wpa_suite_t list[1];
100*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_suite_ucast_t, wpa_suite_auth_key_mgmt_t;
101*4882a593Smuzhiyun #define WPA_IE_SUITE_COUNT_LEN	2
102*4882a593Smuzhiyun typedef BWL_PRE_PACKED_STRUCT struct
103*4882a593Smuzhiyun {
104*4882a593Smuzhiyun 	BWL_PRE_PACKED_STRUCT struct {
105*4882a593Smuzhiyun 		uint8 low;
106*4882a593Smuzhiyun 		uint8 high;
107*4882a593Smuzhiyun 	} BWL_POST_PACKED_STRUCT count;
108*4882a593Smuzhiyun 	wpa_pmkid_t list[1];
109*4882a593Smuzhiyun } BWL_POST_PACKED_STRUCT wpa_pmkid_list_t;
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun /* WPA cipher suites */
112*4882a593Smuzhiyun #define WPA_CIPHER_NONE		0	/* None */
113*4882a593Smuzhiyun #define WPA_CIPHER_WEP_40	1	/* WEP (40-bit) */
114*4882a593Smuzhiyun #define WPA_CIPHER_TKIP		2	/* TKIP: default for WPA */
115*4882a593Smuzhiyun #define WPA_CIPHER_AES_OCB	3	/* AES (OCB) */
116*4882a593Smuzhiyun #define WPA_CIPHER_AES_CCM	4	/* AES (CCM) */
117*4882a593Smuzhiyun #define WPA_CIPHER_WEP_104	5	/* WEP (104-bit) */
118*4882a593Smuzhiyun #define WPA_CIPHER_BIP		6	/* WEP (104-bit) */
119*4882a593Smuzhiyun #define WPA_CIPHER_TPK		7	/* Group addressed traffic not allowed */
120*4882a593Smuzhiyun #ifdef BCMCCX
121*4882a593Smuzhiyun #define WPA_CIPHER_CKIP		8	/* KP with no MIC */
122*4882a593Smuzhiyun #define WPA_CIPHER_CKIP_MMH	9	/* KP with MIC ("CKIP/MMH", "CKIP+CMIC") */
123*4882a593Smuzhiyun #define WPA_CIPHER_WEP_MMH	10	/* MIC with no KP ("WEP/MMH", "CMIC") */
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #define IS_CCX_CIPHER(cipher)	((cipher) == WPA_CIPHER_CKIP || \
126*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_CKIP_MMH || \
127*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_WEP_MMH)
128*4882a593Smuzhiyun #endif /* BCMCCX */
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun #define WPA_CIPHER_AES_GCM	8	/* AES (GCM) */
131*4882a593Smuzhiyun #define WPA_CIPHER_AES_GCM256	9	/* AES (GCM256) */
132*4882a593Smuzhiyun #define WPA_CIPHER_CCMP_256	10	/* CCMP-256 */
133*4882a593Smuzhiyun #define WPA_CIPHER_BIP_GMAC_128	11	/* BIP_GMAC_128 */
134*4882a593Smuzhiyun #define WPA_CIPHER_BIP_GMAC_256 12	/* BIP_GMAC_256 */
135*4882a593Smuzhiyun #define WPA_CIPHER_BIP_CMAC_256 13	/* BIP_CMAC_256 */
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #ifdef BCMWAPI_WAI
138*4882a593Smuzhiyun #define WAPI_CIPHER_NONE	WPA_CIPHER_NONE
139*4882a593Smuzhiyun #define WAPI_CIPHER_SMS4	11
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun #define WAPI_CSE_WPI_SMS4	1
142*4882a593Smuzhiyun #endif /* BCMWAPI_WAI */
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun #define IS_WPA_CIPHER(cipher)	((cipher) == WPA_CIPHER_NONE || \
145*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_WEP_40 || \
146*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_WEP_104 || \
147*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_TKIP || \
148*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_AES_OCB || \
149*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_AES_CCM || \
150*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_AES_GCM || \
151*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_AES_GCM256 || \
152*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_CCMP_256 || \
153*4882a593Smuzhiyun 				 (cipher) == WPA_CIPHER_TPK)
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define IS_WPA_BIP_CIPHER(cipher)  ((cipher) == WPA_CIPHER_BIP || \
156*4882a593Smuzhiyun 				    (cipher) == WPA_CIPHER_BIP_GMAC_128 || \
157*4882a593Smuzhiyun 				    (cipher) == WPA_CIPHER_BIP_GMAC_256 || \
158*4882a593Smuzhiyun 				    (cipher) == WPA_CIPHER_BIP_CMAC_256)
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun #ifdef BCMWAPI_WAI
161*4882a593Smuzhiyun #define IS_WAPI_CIPHER(cipher)	((cipher) == WAPI_CIPHER_NONE || \
162*4882a593Smuzhiyun 				 (cipher) == WAPI_CSE_WPI_SMS4)
163*4882a593Smuzhiyun 
164*4882a593Smuzhiyun /* convert WAPI_CSE_WPI_XXX to WAPI_CIPHER_XXX */
165*4882a593Smuzhiyun #define WAPI_CSE_WPI_2_CIPHER(cse) ((cse) == WAPI_CSE_WPI_SMS4 ? \
166*4882a593Smuzhiyun 				WAPI_CIPHER_SMS4 : WAPI_CIPHER_NONE)
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun #define WAPI_CIPHER_2_CSE_WPI(cipher) ((cipher) == WAPI_CIPHER_SMS4 ? \
169*4882a593Smuzhiyun 				WAPI_CSE_WPI_SMS4 : WAPI_CIPHER_NONE)
170*4882a593Smuzhiyun #endif /* BCMWAPI_WAI */
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun #define IS_VALID_AKM(akm) ((akm) == RSN_AKM_NONE || \
173*4882a593Smuzhiyun 			(akm) == RSN_AKM_UNSPECIFIED || \
174*4882a593Smuzhiyun 			(akm) == RSN_AKM_PSK || \
175*4882a593Smuzhiyun 			(akm) == RSN_AKM_FBT_1X || \
176*4882a593Smuzhiyun 			(akm) == RSN_AKM_FBT_PSK || \
177*4882a593Smuzhiyun 			(akm) == RSN_AKM_MFP_1X || \
178*4882a593Smuzhiyun 			(akm) == RSN_AKM_MFP_PSK || \
179*4882a593Smuzhiyun 			(akm) == RSN_AKM_SHA256_1X || \
180*4882a593Smuzhiyun 			(akm) == RSN_AKM_SHA256_PSK || \
181*4882a593Smuzhiyun 			(akm) == RSN_AKM_TPK || \
182*4882a593Smuzhiyun 			(akm) == RSN_AKM_SAE_PSK || \
183*4882a593Smuzhiyun 			(akm) == RSN_AKM_SAE_FBT || \
184*4882a593Smuzhiyun 			(akm) == RSN_AKM_FILS_SHA256 || \
185*4882a593Smuzhiyun 			(akm) == RSN_AKM_FILS_SHA384 || \
186*4882a593Smuzhiyun 			(akm) == RSN_AKM_OWE || \
187*4882a593Smuzhiyun 			(akm) == RSN_AKM_SUITEB_SHA256_1X || \
188*4882a593Smuzhiyun 			(akm) == RSN_AKM_SUITEB_SHA384_1X)
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun #define IS_VALID_BIP_CIPHER(cipher) ((cipher) == WPA_CIPHER_BIP || \
191*4882a593Smuzhiyun 					(cipher) == WPA_CIPHER_BIP_GMAC_128 || \
192*4882a593Smuzhiyun 					(cipher) == WPA_CIPHER_BIP_GMAC_256 || \
193*4882a593Smuzhiyun 					(cipher) == WPA_CIPHER_BIP_CMAC_256)
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun #define WPA_IS_FT_AKM(akm)	((akm) == RSN_AKM_FBT_SHA256 || \
196*4882a593Smuzhiyun 			(akm) == RSN_AKM_FBT_SHA384)
197*4882a593Smuzhiyun 
198*4882a593Smuzhiyun #define WPA_IS_FILS_AKM(akm)	((akm) == RSN_AKM_FILS_SHA256 || \
199*4882a593Smuzhiyun 			(akm) == RSN_AKM_FILS_SHA384)
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun #define WPA_IS_FILS_FT_AKM(akm)	((akm) == RSN_AKM_FBT_SHA256_FILS || \
202*4882a593Smuzhiyun 			(akm) == RSN_AKM_FBT_SHA384_FILS)
203*4882a593Smuzhiyun 
204*4882a593Smuzhiyun /* WPA TKIP countermeasures parameters */
205*4882a593Smuzhiyun #define WPA_TKIP_CM_DETECT	60	/* multiple MIC failure window (seconds) */
206*4882a593Smuzhiyun #define WPA_TKIP_CM_BLOCK	60	/* countermeasures active window (seconds) */
207*4882a593Smuzhiyun 
208*4882a593Smuzhiyun /* RSN IE defines */
209*4882a593Smuzhiyun #define RSN_CAP_LEN		2	/* Length of RSN capabilities field (2 octets) */
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun /* RSN Capabilities defined in 802.11i */
212*4882a593Smuzhiyun #define RSN_CAP_PREAUTH			0x0001
213*4882a593Smuzhiyun #define RSN_CAP_NOPAIRWISE		0x0002
214*4882a593Smuzhiyun #define RSN_CAP_PTK_REPLAY_CNTR_MASK	0x000C
215*4882a593Smuzhiyun #define RSN_CAP_PTK_REPLAY_CNTR_SHIFT	2
216*4882a593Smuzhiyun #define RSN_CAP_GTK_REPLAY_CNTR_MASK	0x0030
217*4882a593Smuzhiyun #define RSN_CAP_GTK_REPLAY_CNTR_SHIFT	4
218*4882a593Smuzhiyun #define RSN_CAP_1_REPLAY_CNTR		0
219*4882a593Smuzhiyun #define RSN_CAP_2_REPLAY_CNTRS		1
220*4882a593Smuzhiyun #define RSN_CAP_4_REPLAY_CNTRS		2
221*4882a593Smuzhiyun #define RSN_CAP_16_REPLAY_CNTRS		3
222*4882a593Smuzhiyun #define RSN_CAP_MFPR			0x0040
223*4882a593Smuzhiyun #define RSN_CAP_MFPC			0x0080
224*4882a593Smuzhiyun #define RSN_CAP_SPPC			0x0400
225*4882a593Smuzhiyun #define RSN_CAP_SPPR			0x0800
226*4882a593Smuzhiyun #define RSN_CAP_OCVC			0x4000
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun /* WPA capabilities defined in 802.11i */
229*4882a593Smuzhiyun #define WPA_CAP_4_REPLAY_CNTRS		RSN_CAP_4_REPLAY_CNTRS
230*4882a593Smuzhiyun #define WPA_CAP_16_REPLAY_CNTRS		RSN_CAP_16_REPLAY_CNTRS
231*4882a593Smuzhiyun #define WPA_CAP_REPLAY_CNTR_SHIFT	RSN_CAP_PTK_REPLAY_CNTR_SHIFT
232*4882a593Smuzhiyun #define WPA_CAP_REPLAY_CNTR_MASK	RSN_CAP_PTK_REPLAY_CNTR_MASK
233*4882a593Smuzhiyun 
234*4882a593Smuzhiyun /* WPA capabilities defined in 802.11zD9.0 */
235*4882a593Smuzhiyun #define WPA_CAP_PEER_KEY_ENABLE		(0x1 << 1)	/* bit 9 */
236*4882a593Smuzhiyun 
237*4882a593Smuzhiyun /* WPA Specific defines */
238*4882a593Smuzhiyun #define WPA_CAP_LEN	RSN_CAP_LEN	/* Length of RSN capabilities in RSN IE (2 octets) */
239*4882a593Smuzhiyun #define WPA_PMKID_CNT_LEN	2	/* Length of RSN PMKID count (2 octests) */
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun #define	WPA_CAP_WPA2_PREAUTH		RSN_CAP_PREAUTH
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun #define WPA2_PMKID_COUNT_LEN	2
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun /* RSN dev type in rsn_info struct */
246*4882a593Smuzhiyun typedef enum {
247*4882a593Smuzhiyun 	DEV_NONE = 0,
248*4882a593Smuzhiyun 	DEV_STA = 1,
249*4882a593Smuzhiyun 	DEV_AP = 2
250*4882a593Smuzhiyun } device_type_t;
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun typedef uint32 rsn_akm_mask_t;			/* RSN_AKM_... see 802.11.h */
253*4882a593Smuzhiyun typedef uint8  rsn_cipher_t;			/* WPA_CIPHER_xxx */
254*4882a593Smuzhiyun typedef uint32 rsn_ciphers_t;			/* mask of rsn_cipher_t */
255*4882a593Smuzhiyun typedef uint8 rsn_akm_t;
256*4882a593Smuzhiyun typedef uint8 auth_ie_type_mask_t;
257*4882a593Smuzhiyun 
258*4882a593Smuzhiyun /* Old location for this structure. Moved to bcmwpa.h */
259*4882a593Smuzhiyun #ifndef RSN_IE_INFO_STRUCT_RELOCATED
260*4882a593Smuzhiyun typedef struct rsn_ie_info {
261*4882a593Smuzhiyun 	uint8 version;
262*4882a593Smuzhiyun 	rsn_cipher_t g_cipher;
263*4882a593Smuzhiyun 	uint8 p_count;
264*4882a593Smuzhiyun 	uint8 akm_count;
265*4882a593Smuzhiyun 	uint8 pmkid_count;
266*4882a593Smuzhiyun 	rsn_akm_t sta_akm;			/* single STA akm */
267*4882a593Smuzhiyun 	uint16 caps;
268*4882a593Smuzhiyun 	rsn_ciphers_t p_ciphers;
269*4882a593Smuzhiyun 	rsn_akm_mask_t akms;
270*4882a593Smuzhiyun 	uint8 pmkids_offset;			/* offset into the IE */
271*4882a593Smuzhiyun 	rsn_cipher_t g_mgmt_cipher;
272*4882a593Smuzhiyun 	device_type_t dev_type;			/* AP or STA */
273*4882a593Smuzhiyun 	rsn_cipher_t sta_cipher;		/* single STA cipher */
274*4882a593Smuzhiyun 	uint16 key_desc;			/* key descriptor version as STA */
275*4882a593Smuzhiyun 	int parse_status;
276*4882a593Smuzhiyun 	uint16 mic_len;				/* unused. keep for ROM compatibility. */
277*4882a593Smuzhiyun 	auth_ie_type_mask_t auth_ie_type;	/* bit field of WPA, WPA2 and (not yet) CCX WAPI */
278*4882a593Smuzhiyun 	uint8 pmk_len;				/* EAPOL PMK */
279*4882a593Smuzhiyun 	uint8 kck_mic_len;			/* EAPOL MIC (by KCK) */
280*4882a593Smuzhiyun 	uint8 kck_len;				/* EAPOL KCK */
281*4882a593Smuzhiyun 	uint8 kek_len;				/* EAPOL KEK */
282*4882a593Smuzhiyun 	uint8 tk_len;				/* EAPOL TK */
283*4882a593Smuzhiyun 	uint8 ptk_len;				/* EAPOL PTK */
284*4882a593Smuzhiyun 	uint8 kck2_len;				/* EAPOL KCK2 */
285*4882a593Smuzhiyun 	uint8 kek2_len;				/* EAPOL KEK2 */
286*4882a593Smuzhiyun } rsn_ie_info_t;
287*4882a593Smuzhiyun #endif /* RSN_IE_INFO_STRUCT_RELOCATED */
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun #ifdef BCMWAPI_WAI
290*4882a593Smuzhiyun #define WAPI_CAP_PREAUTH		RSN_CAP_PREAUTH
291*4882a593Smuzhiyun 
292*4882a593Smuzhiyun /* Other WAI definition */
293*4882a593Smuzhiyun #define WAPI_WAI_REQUEST		0x00F1
294*4882a593Smuzhiyun #define WAPI_UNICAST_REKEY		0x00F2
295*4882a593Smuzhiyun #define WAPI_STA_AGING			0x00F3
296*4882a593Smuzhiyun #define WAPI_MUTIL_REKEY		0x00F4
297*4882a593Smuzhiyun #define WAPI_STA_STATS			0x00F5
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun #define WAPI_USK_REKEY_COUNT		0x4000000 /* 0xA00000 */
300*4882a593Smuzhiyun #define WAPI_MSK_REKEY_COUNT		0x4000000 /* 0xA00000 */
301*4882a593Smuzhiyun #endif /* BCMWAPI_WAI */
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun /* This marks the end of a packed structure section. */
304*4882a593Smuzhiyun #include <packed_section_end.h>
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun #endif /* _proto_wpa_h_ */
307