xref: /freebsd/contrib/wpa/src/common/ieee802_11_defs.h (revision 3157ba2193f225049c28b3527f499567dae6ad14)
139beb93cSSam Leffler /*
239beb93cSSam Leffler  * IEEE 802.11 Frame type definitions
339beb93cSSam Leffler  * Copyright (c) 2002-2007, Jouni Malinen <j@w1.fi>
439beb93cSSam Leffler  * Copyright (c) 2007-2008 Intel Corporation
539beb93cSSam Leffler  *
639beb93cSSam Leffler  * This program is free software; you can redistribute it and/or modify
739beb93cSSam Leffler  * it under the terms of the GNU General Public License version 2 as
839beb93cSSam Leffler  * published by the Free Software Foundation.
939beb93cSSam Leffler  *
1039beb93cSSam Leffler  * Alternatively, this software may be distributed under the terms of BSD
1139beb93cSSam Leffler  * license.
1239beb93cSSam Leffler  *
1339beb93cSSam Leffler  * See README and COPYING for more details.
1439beb93cSSam Leffler  */
1539beb93cSSam Leffler 
1639beb93cSSam Leffler #ifndef IEEE802_11_DEFS_H
1739beb93cSSam Leffler #define IEEE802_11_DEFS_H
1839beb93cSSam Leffler 
1939beb93cSSam Leffler /* IEEE 802.11 defines */
2039beb93cSSam Leffler 
2139beb93cSSam Leffler #define WLAN_FC_PVER		0x0003
2239beb93cSSam Leffler #define WLAN_FC_TODS		0x0100
2339beb93cSSam Leffler #define WLAN_FC_FROMDS		0x0200
2439beb93cSSam Leffler #define WLAN_FC_MOREFRAG	0x0400
2539beb93cSSam Leffler #define WLAN_FC_RETRY		0x0800
2639beb93cSSam Leffler #define WLAN_FC_PWRMGT		0x1000
2739beb93cSSam Leffler #define WLAN_FC_MOREDATA	0x2000
2839beb93cSSam Leffler #define WLAN_FC_ISWEP		0x4000
2939beb93cSSam Leffler #define WLAN_FC_ORDER		0x8000
3039beb93cSSam Leffler 
3139beb93cSSam Leffler #define WLAN_FC_GET_TYPE(fc)	(((fc) & 0x000c) >> 2)
3239beb93cSSam Leffler #define WLAN_FC_GET_STYPE(fc)	(((fc) & 0x00f0) >> 4)
3339beb93cSSam Leffler 
3439beb93cSSam Leffler #define WLAN_GET_SEQ_FRAG(seq) ((seq) & (BIT(3) | BIT(2) | BIT(1) | BIT(0)))
3539beb93cSSam Leffler #define WLAN_GET_SEQ_SEQ(seq) \
3639beb93cSSam Leffler 	(((seq) & (~(BIT(3) | BIT(2) | BIT(1) | BIT(0)))) >> 4)
3739beb93cSSam Leffler 
3839beb93cSSam Leffler #define WLAN_FC_TYPE_MGMT		0
3939beb93cSSam Leffler #define WLAN_FC_TYPE_CTRL		1
4039beb93cSSam Leffler #define WLAN_FC_TYPE_DATA		2
4139beb93cSSam Leffler 
4239beb93cSSam Leffler /* management */
4339beb93cSSam Leffler #define WLAN_FC_STYPE_ASSOC_REQ		0
4439beb93cSSam Leffler #define WLAN_FC_STYPE_ASSOC_RESP	1
4539beb93cSSam Leffler #define WLAN_FC_STYPE_REASSOC_REQ	2
4639beb93cSSam Leffler #define WLAN_FC_STYPE_REASSOC_RESP	3
4739beb93cSSam Leffler #define WLAN_FC_STYPE_PROBE_REQ		4
4839beb93cSSam Leffler #define WLAN_FC_STYPE_PROBE_RESP	5
4939beb93cSSam Leffler #define WLAN_FC_STYPE_BEACON		8
5039beb93cSSam Leffler #define WLAN_FC_STYPE_ATIM		9
5139beb93cSSam Leffler #define WLAN_FC_STYPE_DISASSOC		10
5239beb93cSSam Leffler #define WLAN_FC_STYPE_AUTH		11
5339beb93cSSam Leffler #define WLAN_FC_STYPE_DEAUTH		12
5439beb93cSSam Leffler #define WLAN_FC_STYPE_ACTION		13
5539beb93cSSam Leffler 
5639beb93cSSam Leffler /* control */
5739beb93cSSam Leffler #define WLAN_FC_STYPE_PSPOLL		10
5839beb93cSSam Leffler #define WLAN_FC_STYPE_RTS		11
5939beb93cSSam Leffler #define WLAN_FC_STYPE_CTS		12
6039beb93cSSam Leffler #define WLAN_FC_STYPE_ACK		13
6139beb93cSSam Leffler #define WLAN_FC_STYPE_CFEND		14
6239beb93cSSam Leffler #define WLAN_FC_STYPE_CFENDACK		15
6339beb93cSSam Leffler 
6439beb93cSSam Leffler /* data */
6539beb93cSSam Leffler #define WLAN_FC_STYPE_DATA		0
6639beb93cSSam Leffler #define WLAN_FC_STYPE_DATA_CFACK	1
6739beb93cSSam Leffler #define WLAN_FC_STYPE_DATA_CFPOLL	2
6839beb93cSSam Leffler #define WLAN_FC_STYPE_DATA_CFACKPOLL	3
6939beb93cSSam Leffler #define WLAN_FC_STYPE_NULLFUNC		4
7039beb93cSSam Leffler #define WLAN_FC_STYPE_CFACK		5
7139beb93cSSam Leffler #define WLAN_FC_STYPE_CFPOLL		6
7239beb93cSSam Leffler #define WLAN_FC_STYPE_CFACKPOLL		7
7339beb93cSSam Leffler #define WLAN_FC_STYPE_QOS_DATA		8
7439beb93cSSam Leffler 
7539beb93cSSam Leffler /* Authentication algorithms */
7639beb93cSSam Leffler #define WLAN_AUTH_OPEN			0
7739beb93cSSam Leffler #define WLAN_AUTH_SHARED_KEY		1
7839beb93cSSam Leffler #define WLAN_AUTH_FT			2
7939beb93cSSam Leffler #define WLAN_AUTH_LEAP			128
8039beb93cSSam Leffler 
8139beb93cSSam Leffler #define WLAN_AUTH_CHALLENGE_LEN 128
8239beb93cSSam Leffler 
8339beb93cSSam Leffler #define WLAN_CAPABILITY_ESS BIT(0)
8439beb93cSSam Leffler #define WLAN_CAPABILITY_IBSS BIT(1)
8539beb93cSSam Leffler #define WLAN_CAPABILITY_CF_POLLABLE BIT(2)
8639beb93cSSam Leffler #define WLAN_CAPABILITY_CF_POLL_REQUEST BIT(3)
8739beb93cSSam Leffler #define WLAN_CAPABILITY_PRIVACY BIT(4)
8839beb93cSSam Leffler #define WLAN_CAPABILITY_SHORT_PREAMBLE BIT(5)
8939beb93cSSam Leffler #define WLAN_CAPABILITY_PBCC BIT(6)
9039beb93cSSam Leffler #define WLAN_CAPABILITY_CHANNEL_AGILITY BIT(7)
9139beb93cSSam Leffler #define WLAN_CAPABILITY_SPECTRUM_MGMT BIT(8)
9239beb93cSSam Leffler #define WLAN_CAPABILITY_SHORT_SLOT_TIME BIT(10)
9339beb93cSSam Leffler #define WLAN_CAPABILITY_DSSS_OFDM BIT(13)
9439beb93cSSam Leffler 
9539beb93cSSam Leffler /* Status codes (IEEE 802.11-2007, 7.3.1.9, Table 7-23) */
9639beb93cSSam Leffler #define WLAN_STATUS_SUCCESS 0
9739beb93cSSam Leffler #define WLAN_STATUS_UNSPECIFIED_FAILURE 1
9839beb93cSSam Leffler #define WLAN_STATUS_CAPS_UNSUPPORTED 10
9939beb93cSSam Leffler #define WLAN_STATUS_REASSOC_NO_ASSOC 11
10039beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12
10139beb93cSSam Leffler #define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13
10239beb93cSSam Leffler #define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14
10339beb93cSSam Leffler #define WLAN_STATUS_CHALLENGE_FAIL 15
10439beb93cSSam Leffler #define WLAN_STATUS_AUTH_TIMEOUT 16
10539beb93cSSam Leffler #define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17
10639beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_RATES 18
10739beb93cSSam Leffler /* IEEE 802.11b */
10839beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19
10939beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NOPBCC 20
11039beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NOAGILITY 21
11139beb93cSSam Leffler /* IEEE 802.11h */
11239beb93cSSam Leffler #define WLAN_STATUS_SPEC_MGMT_REQUIRED 22
11339beb93cSSam Leffler #define WLAN_STATUS_PWR_CAPABILITY_NOT_VALID 23
11439beb93cSSam Leffler #define WLAN_STATUS_SUPPORTED_CHANNEL_NOT_VALID 24
11539beb93cSSam Leffler /* IEEE 802.11g */
11639beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NO_SHORT_SLOT_TIME 25
11739beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NO_ER_PBCC 26
11839beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NO_DSSS_OFDM 27
11939beb93cSSam Leffler /* IEEE 802.11w */
12039beb93cSSam Leffler #define WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY 30
12139beb93cSSam Leffler #define WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION 31
12239beb93cSSam Leffler /* IEEE 802.11i */
12339beb93cSSam Leffler #define WLAN_STATUS_INVALID_IE 40
12439beb93cSSam Leffler #define WLAN_STATUS_GROUP_CIPHER_NOT_VALID 41
12539beb93cSSam Leffler #define WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID 42
12639beb93cSSam Leffler #define WLAN_STATUS_AKMP_NOT_VALID 43
12739beb93cSSam Leffler #define WLAN_STATUS_UNSUPPORTED_RSN_IE_VERSION 44
12839beb93cSSam Leffler #define WLAN_STATUS_INVALID_RSN_IE_CAPAB 45
12939beb93cSSam Leffler #define WLAN_STATUS_CIPHER_REJECTED_PER_POLICY 46
13039beb93cSSam Leffler #define WLAN_STATUS_TS_NOT_CREATED 47
13139beb93cSSam Leffler #define WLAN_STATUS_DIRECT_LINK_NOT_ALLOWED 48
13239beb93cSSam Leffler #define WLAN_STATUS_DEST_STA_NOT_PRESENT 49
13339beb93cSSam Leffler #define WLAN_STATUS_DEST_STA_NOT_QOS_STA 50
13439beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE 51
13539beb93cSSam Leffler /* IEEE 802.11r */
13639beb93cSSam Leffler #define WLAN_STATUS_INVALID_FT_ACTION_FRAME_COUNT 52
137*3157ba21SRui Paulo #define WLAN_STATUS_INVALID_PMKID 53
138*3157ba21SRui Paulo #define WLAN_STATUS_INVALID_MDIE 54
139*3157ba21SRui Paulo #define WLAN_STATUS_INVALID_FTIE 55
14039beb93cSSam Leffler 
14139beb93cSSam Leffler /* Reason codes (IEEE 802.11-2007, 7.3.1.7, Table 7-22) */
14239beb93cSSam Leffler #define WLAN_REASON_UNSPECIFIED 1
14339beb93cSSam Leffler #define WLAN_REASON_PREV_AUTH_NOT_VALID 2
14439beb93cSSam Leffler #define WLAN_REASON_DEAUTH_LEAVING 3
14539beb93cSSam Leffler #define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4
14639beb93cSSam Leffler #define WLAN_REASON_DISASSOC_AP_BUSY 5
14739beb93cSSam Leffler #define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6
14839beb93cSSam Leffler #define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7
14939beb93cSSam Leffler #define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8
15039beb93cSSam Leffler #define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9
15139beb93cSSam Leffler /* IEEE 802.11h */
15239beb93cSSam Leffler #define WLAN_REASON_PWR_CAPABILITY_NOT_VALID 10
15339beb93cSSam Leffler #define WLAN_REASON_SUPPORTED_CHANNEL_NOT_VALID 11
15439beb93cSSam Leffler /* IEEE 802.11i */
15539beb93cSSam Leffler #define WLAN_REASON_INVALID_IE 13
15639beb93cSSam Leffler #define WLAN_REASON_MICHAEL_MIC_FAILURE 14
15739beb93cSSam Leffler #define WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT 15
15839beb93cSSam Leffler #define WLAN_REASON_GROUP_KEY_UPDATE_TIMEOUT 16
15939beb93cSSam Leffler #define WLAN_REASON_IE_IN_4WAY_DIFFERS 17
16039beb93cSSam Leffler #define WLAN_REASON_GROUP_CIPHER_NOT_VALID 18
16139beb93cSSam Leffler #define WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID 19
16239beb93cSSam Leffler #define WLAN_REASON_AKMP_NOT_VALID 20
16339beb93cSSam Leffler #define WLAN_REASON_UNSUPPORTED_RSN_IE_VERSION 21
16439beb93cSSam Leffler #define WLAN_REASON_INVALID_RSN_IE_CAPAB 22
16539beb93cSSam Leffler #define WLAN_REASON_IEEE_802_1X_AUTH_FAILED 23
16639beb93cSSam Leffler #define WLAN_REASON_CIPHER_SUITE_REJECTED 24
16739beb93cSSam Leffler 
16839beb93cSSam Leffler 
16939beb93cSSam Leffler /* Information Element IDs */
17039beb93cSSam Leffler #define WLAN_EID_SSID 0
17139beb93cSSam Leffler #define WLAN_EID_SUPP_RATES 1
17239beb93cSSam Leffler #define WLAN_EID_FH_PARAMS 2
17339beb93cSSam Leffler #define WLAN_EID_DS_PARAMS 3
17439beb93cSSam Leffler #define WLAN_EID_CF_PARAMS 4
17539beb93cSSam Leffler #define WLAN_EID_TIM 5
17639beb93cSSam Leffler #define WLAN_EID_IBSS_PARAMS 6
17739beb93cSSam Leffler #define WLAN_EID_COUNTRY 7
17839beb93cSSam Leffler #define WLAN_EID_CHALLENGE 16
17939beb93cSSam Leffler /* EIDs defined by IEEE 802.11h - START */
18039beb93cSSam Leffler #define WLAN_EID_PWR_CONSTRAINT 32
18139beb93cSSam Leffler #define WLAN_EID_PWR_CAPABILITY 33
18239beb93cSSam Leffler #define WLAN_EID_TPC_REQUEST 34
18339beb93cSSam Leffler #define WLAN_EID_TPC_REPORT 35
18439beb93cSSam Leffler #define WLAN_EID_SUPPORTED_CHANNELS 36
18539beb93cSSam Leffler #define WLAN_EID_CHANNEL_SWITCH 37
18639beb93cSSam Leffler #define WLAN_EID_MEASURE_REQUEST 38
18739beb93cSSam Leffler #define WLAN_EID_MEASURE_REPORT 39
18839beb93cSSam Leffler #define WLAN_EID_QUITE 40
18939beb93cSSam Leffler #define WLAN_EID_IBSS_DFS 41
19039beb93cSSam Leffler /* EIDs defined by IEEE 802.11h - END */
19139beb93cSSam Leffler #define WLAN_EID_ERP_INFO 42
19239beb93cSSam Leffler #define WLAN_EID_HT_CAP 45
19339beb93cSSam Leffler #define WLAN_EID_RSN 48
19439beb93cSSam Leffler #define WLAN_EID_EXT_SUPP_RATES 50
19539beb93cSSam Leffler #define WLAN_EID_MOBILITY_DOMAIN 54
19639beb93cSSam Leffler #define WLAN_EID_FAST_BSS_TRANSITION 55
19739beb93cSSam Leffler #define WLAN_EID_TIMEOUT_INTERVAL 56
19839beb93cSSam Leffler #define WLAN_EID_RIC_DATA 57
19939beb93cSSam Leffler #define WLAN_EID_HT_OPERATION 61
20039beb93cSSam Leffler #define WLAN_EID_SECONDARY_CHANNEL_OFFSET 62
20139beb93cSSam Leffler #define WLAN_EID_20_40_BSS_COEXISTENCE 72
20239beb93cSSam Leffler #define WLAN_EID_20_40_BSS_INTOLERANT 73
20339beb93cSSam Leffler #define WLAN_EID_OVERLAPPING_BSS_SCAN_PARAMS 74
20439beb93cSSam Leffler #define WLAN_EID_MMIE 76
20539beb93cSSam Leffler #define WLAN_EID_VENDOR_SPECIFIC 221
20639beb93cSSam Leffler 
20739beb93cSSam Leffler 
20839beb93cSSam Leffler /* Action frame categories (IEEE 802.11-2007, 7.3.1.11, Table 7-24) */
20939beb93cSSam Leffler #define WLAN_ACTION_SPECTRUM_MGMT 0
21039beb93cSSam Leffler #define WLAN_ACTION_QOS 1
21139beb93cSSam Leffler #define WLAN_ACTION_DLS 2
21239beb93cSSam Leffler #define WLAN_ACTION_BLOCK_ACK 3
213*3157ba21SRui Paulo #define WLAN_ACTION_PUBLIC 4
21439beb93cSSam Leffler #define WLAN_ACTION_RADIO_MEASUREMENT 5
21539beb93cSSam Leffler #define WLAN_ACTION_FT 6
216*3157ba21SRui Paulo #define WLAN_ACTION_HT 7
21739beb93cSSam Leffler #define WLAN_ACTION_SA_QUERY 8
218*3157ba21SRui Paulo #define WLAN_ACTION_WMM 17 /* WMM Specification 1.1 */
21939beb93cSSam Leffler 
220*3157ba21SRui Paulo /* SA Query Action frame (IEEE 802.11w/D8.0, 7.4.9) */
22139beb93cSSam Leffler #define WLAN_SA_QUERY_REQUEST 0
22239beb93cSSam Leffler #define WLAN_SA_QUERY_RESPONSE 1
22339beb93cSSam Leffler 
224*3157ba21SRui Paulo #define WLAN_SA_QUERY_TR_ID_LEN 2
22539beb93cSSam Leffler 
22639beb93cSSam Leffler /* Timeout Interval Type */
22739beb93cSSam Leffler #define WLAN_TIMEOUT_REASSOC_DEADLINE 1
22839beb93cSSam Leffler #define WLAN_TIMEOUT_KEY_LIFETIME 2
22939beb93cSSam Leffler #define WLAN_TIMEOUT_ASSOC_COMEBACK 3
23039beb93cSSam Leffler 
23139beb93cSSam Leffler 
23239beb93cSSam Leffler #ifdef _MSC_VER
23339beb93cSSam Leffler #pragma pack(push, 1)
23439beb93cSSam Leffler #endif /* _MSC_VER */
23539beb93cSSam Leffler 
23639beb93cSSam Leffler struct ieee80211_mgmt {
23739beb93cSSam Leffler 	le16 frame_control;
23839beb93cSSam Leffler 	le16 duration;
23939beb93cSSam Leffler 	u8 da[6];
24039beb93cSSam Leffler 	u8 sa[6];
24139beb93cSSam Leffler 	u8 bssid[6];
24239beb93cSSam Leffler 	le16 seq_ctrl;
24339beb93cSSam Leffler 	union {
24439beb93cSSam Leffler 		struct {
24539beb93cSSam Leffler 			le16 auth_alg;
24639beb93cSSam Leffler 			le16 auth_transaction;
24739beb93cSSam Leffler 			le16 status_code;
24839beb93cSSam Leffler 			/* possibly followed by Challenge text */
24939beb93cSSam Leffler 			u8 variable[0];
25039beb93cSSam Leffler 		} STRUCT_PACKED auth;
25139beb93cSSam Leffler 		struct {
25239beb93cSSam Leffler 			le16 reason_code;
25339beb93cSSam Leffler 		} STRUCT_PACKED deauth;
25439beb93cSSam Leffler 		struct {
25539beb93cSSam Leffler 			le16 capab_info;
25639beb93cSSam Leffler 			le16 listen_interval;
25739beb93cSSam Leffler 			/* followed by SSID and Supported rates */
25839beb93cSSam Leffler 			u8 variable[0];
25939beb93cSSam Leffler 		} STRUCT_PACKED assoc_req;
26039beb93cSSam Leffler 		struct {
26139beb93cSSam Leffler 			le16 capab_info;
26239beb93cSSam Leffler 			le16 status_code;
26339beb93cSSam Leffler 			le16 aid;
26439beb93cSSam Leffler 			/* followed by Supported rates */
26539beb93cSSam Leffler 			u8 variable[0];
26639beb93cSSam Leffler 		} STRUCT_PACKED assoc_resp, reassoc_resp;
26739beb93cSSam Leffler 		struct {
26839beb93cSSam Leffler 			le16 capab_info;
26939beb93cSSam Leffler 			le16 listen_interval;
27039beb93cSSam Leffler 			u8 current_ap[6];
27139beb93cSSam Leffler 			/* followed by SSID and Supported rates */
27239beb93cSSam Leffler 			u8 variable[0];
27339beb93cSSam Leffler 		} STRUCT_PACKED reassoc_req;
27439beb93cSSam Leffler 		struct {
27539beb93cSSam Leffler 			le16 reason_code;
27639beb93cSSam Leffler 		} STRUCT_PACKED disassoc;
27739beb93cSSam Leffler 		struct {
27839beb93cSSam Leffler 			u8 timestamp[8];
27939beb93cSSam Leffler 			le16 beacon_int;
28039beb93cSSam Leffler 			le16 capab_info;
28139beb93cSSam Leffler 			/* followed by some of SSID, Supported rates,
28239beb93cSSam Leffler 			 * FH Params, DS Params, CF Params, IBSS Params, TIM */
28339beb93cSSam Leffler 			u8 variable[0];
28439beb93cSSam Leffler 		} STRUCT_PACKED beacon;
28539beb93cSSam Leffler 		struct {
28639beb93cSSam Leffler 			/* only variable items: SSID, Supported rates */
28739beb93cSSam Leffler 			u8 variable[0];
28839beb93cSSam Leffler 		} STRUCT_PACKED probe_req;
28939beb93cSSam Leffler 		struct {
29039beb93cSSam Leffler 			u8 timestamp[8];
29139beb93cSSam Leffler 			le16 beacon_int;
29239beb93cSSam Leffler 			le16 capab_info;
29339beb93cSSam Leffler 			/* followed by some of SSID, Supported rates,
29439beb93cSSam Leffler 			 * FH Params, DS Params, CF Params, IBSS Params */
29539beb93cSSam Leffler 			u8 variable[0];
29639beb93cSSam Leffler 		} STRUCT_PACKED probe_resp;
29739beb93cSSam Leffler 		struct {
29839beb93cSSam Leffler 			u8 category;
29939beb93cSSam Leffler 			union {
30039beb93cSSam Leffler 				struct {
30139beb93cSSam Leffler 					u8 action_code;
30239beb93cSSam Leffler 					u8 dialog_token;
30339beb93cSSam Leffler 					u8 status_code;
30439beb93cSSam Leffler 					u8 variable[0];
305*3157ba21SRui Paulo 				} STRUCT_PACKED wmm_action;
30639beb93cSSam Leffler 				struct{
30739beb93cSSam Leffler 					u8 action_code;
30839beb93cSSam Leffler 					u8 element_id;
30939beb93cSSam Leffler 					u8 length;
31039beb93cSSam Leffler 					u8 switch_mode;
31139beb93cSSam Leffler 					u8 new_chan;
31239beb93cSSam Leffler 					u8 switch_count;
31339beb93cSSam Leffler 				} STRUCT_PACKED chan_switch;
31439beb93cSSam Leffler 				struct {
31539beb93cSSam Leffler 					u8 action;
31639beb93cSSam Leffler 					u8 sta_addr[ETH_ALEN];
31739beb93cSSam Leffler 					u8 target_ap_addr[ETH_ALEN];
31839beb93cSSam Leffler 					u8 variable[0]; /* FT Request */
31939beb93cSSam Leffler 				} STRUCT_PACKED ft_action_req;
32039beb93cSSam Leffler 				struct {
32139beb93cSSam Leffler 					u8 action;
32239beb93cSSam Leffler 					u8 sta_addr[ETH_ALEN];
32339beb93cSSam Leffler 					u8 target_ap_addr[ETH_ALEN];
32439beb93cSSam Leffler 					le16 status_code;
32539beb93cSSam Leffler 					u8 variable[0]; /* FT Request */
32639beb93cSSam Leffler 				} STRUCT_PACKED ft_action_resp;
32739beb93cSSam Leffler 				struct {
32839beb93cSSam Leffler 					u8 action;
32939beb93cSSam Leffler 					u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN];
33039beb93cSSam Leffler 				} STRUCT_PACKED sa_query_req;
33139beb93cSSam Leffler 				struct {
33239beb93cSSam Leffler 					u8 action; /* */
33339beb93cSSam Leffler 					u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN];
33439beb93cSSam Leffler 				} STRUCT_PACKED sa_query_resp;
33539beb93cSSam Leffler 			} u;
33639beb93cSSam Leffler 		} STRUCT_PACKED action;
33739beb93cSSam Leffler 	} u;
33839beb93cSSam Leffler } STRUCT_PACKED;
33939beb93cSSam Leffler 
34039beb93cSSam Leffler #ifdef _MSC_VER
34139beb93cSSam Leffler #pragma pack(pop)
34239beb93cSSam Leffler #endif /* _MSC_VER */
34339beb93cSSam Leffler 
34439beb93cSSam Leffler #define ERP_INFO_NON_ERP_PRESENT BIT(0)
34539beb93cSSam Leffler #define ERP_INFO_USE_PROTECTION BIT(1)
34639beb93cSSam Leffler #define ERP_INFO_BARKER_PREAMBLE_MODE BIT(2)
34739beb93cSSam Leffler 
34839beb93cSSam Leffler 
34939beb93cSSam Leffler /* HT Capability element */
35039beb93cSSam Leffler 
35139beb93cSSam Leffler enum {
35239beb93cSSam Leffler 	MAX_RX_AMPDU_FACTOR_8KB = 0,
35339beb93cSSam Leffler 	MAX_RX_AMPDU_FACTOR_16KB,
35439beb93cSSam Leffler 	MAX_RX_AMPDU_FACTOR_32KB,
35539beb93cSSam Leffler 	MAX_RX_AMPDU_FACTOR_64KB
35639beb93cSSam Leffler };
35739beb93cSSam Leffler 
35839beb93cSSam Leffler enum {
35939beb93cSSam Leffler 	CALIBRATION_NOT_SUPPORTED = 0,
36039beb93cSSam Leffler 	CALIBRATION_CANNOT_INIT,
36139beb93cSSam Leffler 	CALIBRATION_CAN_INIT,
36239beb93cSSam Leffler 	CALIBRATION_FULL_SUPPORT
36339beb93cSSam Leffler };
36439beb93cSSam Leffler 
36539beb93cSSam Leffler enum {
36639beb93cSSam Leffler 	MCS_FEEDBACK_NOT_PROVIDED = 0,
36739beb93cSSam Leffler 	MCS_FEEDBACK_UNSOLICITED,
36839beb93cSSam Leffler 	MCS_FEEDBACK_MRQ_RESPONSE
36939beb93cSSam Leffler };
37039beb93cSSam Leffler 
37139beb93cSSam Leffler 
37239beb93cSSam Leffler struct ieee80211_ht_capability {
37339beb93cSSam Leffler 	le16 capabilities_info;
37439beb93cSSam Leffler 	u8 mac_ht_params_info;
37539beb93cSSam Leffler 	u8 supported_mcs_set[16];
37639beb93cSSam Leffler 	le16 extended_ht_capability_info;
37739beb93cSSam Leffler 	le32 tx_BF_capability_info;
37839beb93cSSam Leffler 	u8 antenna_selection_info;
37939beb93cSSam Leffler } STRUCT_PACKED;
38039beb93cSSam Leffler 
38139beb93cSSam Leffler 
38239beb93cSSam Leffler struct ieee80211_ht_operation {
38339beb93cSSam Leffler 	u8 control_chan;
38439beb93cSSam Leffler 	u8 ht_param;
38539beb93cSSam Leffler 	le16 operation_mode;
38639beb93cSSam Leffler 	le16 stbc_param;
38739beb93cSSam Leffler 	u8 basic_set[16];
38839beb93cSSam Leffler } STRUCT_PACKED;
38939beb93cSSam Leffler 
39039beb93cSSam Leffler /* auxiliary bit manipulation macros FIXME: move it to common later... */
39139beb93cSSam Leffler #define SET_2BIT_U8(_ptr_, _shift_, _val_)				\
39239beb93cSSam Leffler 	((*(_ptr_) &= ~(3 << (_shift_))),				\
39339beb93cSSam Leffler 	 (*(_ptr_) |= (*(_ptr_) & (((u8)3) << (_shift_))) |		\
39439beb93cSSam Leffler 		      (((u8)(_val_) & 3) << _shift_)))
39539beb93cSSam Leffler 
39639beb93cSSam Leffler #define GET_2BIT_U8(_var_, _shift_)	\
39739beb93cSSam Leffler 	(((_var_) & (((u8)3) << (_shift_))) >> (_shift_))
39839beb93cSSam Leffler 
39939beb93cSSam Leffler #define SET_2BIT_LE16(_u16ptr_, _shift_, _val_)				\
40039beb93cSSam Leffler 	((*(_u16ptr_) &= ~(3 << (_shift_))),				\
40139beb93cSSam Leffler 	 (*(_u16ptr_) |= 						\
40239beb93cSSam Leffler 		(((*(_u16ptr_)) & (((u16)3) << ((u16)_shift_))) |	\
40339beb93cSSam Leffler 		(((u16)(_val_) & (u16)3) << (u16)(_shift_)))))
40439beb93cSSam Leffler 
40539beb93cSSam Leffler #define GET_2BIT_LE16(_var_, _shift_)	\
40639beb93cSSam Leffler 	(((_var_) & (((u16)3) << (_shift_))) >> (_shift_))
40739beb93cSSam Leffler 
40839beb93cSSam Leffler #define SET_2BIT_LE32(_u32ptr_, _shift_, _val_)				\
40939beb93cSSam Leffler 	((*(_u32ptr_) &= ~(3 << (_shift_))),				\
41039beb93cSSam Leffler 	 (*(_u32ptr_) |= (((*(_u32ptr_)) & (((u32)3) << (_shift_))) |	\
41139beb93cSSam Leffler 			(((u32)(_val_) & 3) << _shift_))))
41239beb93cSSam Leffler 
41339beb93cSSam Leffler #define GET_2BIT_LE32(_var_, _shift_)	\
41439beb93cSSam Leffler 	(((_var_) & (((u32)3) << (_shift_))) >> (_shift_))
41539beb93cSSam Leffler 
41639beb93cSSam Leffler #define SET_3BIT_LE16(_u16ptr_, _shift_, _val_)				\
41739beb93cSSam Leffler 	((*(_u16ptr_) &= ~(7 << (_shift_))),				\
41839beb93cSSam Leffler 	(*(_u16ptr_) |= (((*(_u16ptr_)) & (((u16)7) << (_shift_))) |	\
41939beb93cSSam Leffler 			(((u16)(_val_) & 7) << _shift_))))
42039beb93cSSam Leffler 
42139beb93cSSam Leffler #define GET_3BIT_LE16(_var_, _shift_)	\
42239beb93cSSam Leffler 	(((_var_) & (((u16)7) << (_shift_))) >> (_shift_))
42339beb93cSSam Leffler 
42439beb93cSSam Leffler #define SET_3BIT_LE32(_u32ptr_, _shift_, _val_)				\
42539beb93cSSam Leffler 	((*(_u32ptr_) &= ~(7 << (_shift_))),				\
42639beb93cSSam Leffler 	 (*(_u32ptr_) |= (((*(_u32ptr_)) & (((u32)7) << (_shift_))) |	\
42739beb93cSSam Leffler 			(((u32)(_val_) & 7) << _shift_))))
42839beb93cSSam Leffler 
42939beb93cSSam Leffler #define GET_3BIT_LE32(_var_, _shift_)	\
43039beb93cSSam Leffler 	(((_var_) & (((u32)7) << (_shift_))) >> (_shift_))
43139beb93cSSam Leffler 
43239beb93cSSam Leffler 
43339beb93cSSam Leffler #define HT_CAP_INFO_LDPC_CODING_CAP		((u16) BIT(0))
43439beb93cSSam Leffler #define HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET	((u16) BIT(1))
43539beb93cSSam Leffler #define HT_CAP_INFO_SMPS_MASK			((u16) (BIT(2) | BIT(3)))
43639beb93cSSam Leffler #define HT_CAP_INFO_SMPS_STATIC			((u16) 0)
43739beb93cSSam Leffler #define HT_CAP_INFO_SMPS_DYNAMIC		((u16) BIT(2))
43839beb93cSSam Leffler #define HT_CAP_INFO_SMPS_DISABLED		((u16) (BIT(2) | BIT(3)))
43939beb93cSSam Leffler #define HT_CAP_INFO_GREEN_FIELD			((u16) BIT(4))
44039beb93cSSam Leffler #define HT_CAP_INFO_SHORT_GI20MHZ		((u16) BIT(5))
44139beb93cSSam Leffler #define HT_CAP_INFO_SHORT_GI40MHZ		((u16) BIT(6))
44239beb93cSSam Leffler #define HT_CAP_INFO_TX_STBC			((u16) BIT(7))
44339beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_MASK		((u16) (BIT(8) | BIT(9)))
44439beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_1			((u16) BIT(8))
44539beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_12			((u16) BIT(9))
44639beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_123			((u16) (BIT(8) | BIT(9)))
44739beb93cSSam Leffler #define HT_CAP_INFO_DELAYED_BA			((u16) BIT(10))
44839beb93cSSam Leffler #define HT_CAP_INFO_MAX_AMSDU_SIZE		((u16) BIT(11))
44939beb93cSSam Leffler #define HT_CAP_INFO_DSSS_CCK40MHZ		((u16) BIT(12))
45039beb93cSSam Leffler #define HT_CAP_INFO_PSMP_SUPP			((u16) BIT(13))
45139beb93cSSam Leffler #define HT_CAP_INFO_40MHZ_INTOLERANT		((u16) BIT(14))
45239beb93cSSam Leffler #define HT_CAP_INFO_LSIG_TXOP_PROTECT_SUPPORT	((u16) BIT(15))
45339beb93cSSam Leffler 
45439beb93cSSam Leffler 
45539beb93cSSam Leffler #define MAC_HT_PARAM_INFO_MAX_RX_AMPDU_FACTOR_OFFSET	0
45639beb93cSSam Leffler #define MAC_HT_PARAM_INFO_MAX_MPDU_DENSITY_OFFSET	2
45739beb93cSSam Leffler 
45839beb93cSSam Leffler #define EXT_HT_CAP_INFO_PCO			((u16) BIT(0))
45939beb93cSSam Leffler #define EXT_HT_CAP_INFO_TRANS_TIME_OFFSET	1
46039beb93cSSam Leffler #define EXT_HT_CAP_INFO_MCS_FEEDBACK_OFFSET	8
46139beb93cSSam Leffler #define EXT_HT_CAP_INFO_HTC_SUPPORTED		((u16) BIT(10))
46239beb93cSSam Leffler #define EXT_HT_CAP_INFO_RD_RESPONDER		((u16) BIT(11))
46339beb93cSSam Leffler 
46439beb93cSSam Leffler 
46539beb93cSSam Leffler #define TX_BEAMFORM_CAP_TXBF_CAP ((u32) BIT(0))
46639beb93cSSam Leffler #define TX_BEAMFORM_CAP_RX_STAGGERED_SOUNDING_CAP ((u32) BIT(1))
46739beb93cSSam Leffler #define TX_BEAMFORM_CAP_TX_STAGGERED_SOUNDING_CAP ((u32) BIT(2))
46839beb93cSSam Leffler #define TX_BEAMFORM_CAP_RX_ZLF_CAP ((u32) BIT(3))
46939beb93cSSam Leffler #define TX_BEAMFORM_CAP_TX_ZLF_CAP ((u32) BIT(4))
47039beb93cSSam Leffler #define TX_BEAMFORM_CAP_IMPLICIT_ZLF_CAP ((u32) BIT(5))
47139beb93cSSam Leffler #define TX_BEAMFORM_CAP_CALIB_OFFSET 6
47239beb93cSSam Leffler #define TX_BEAMFORM_CAP_EXPLICIT_CSI_TXBF_CAP ((u32) BIT(8))
47339beb93cSSam Leffler #define TX_BEAMFORM_CAP_EXPLICIT_UNCOMPR_STEERING_MATRIX_CAP ((u32) BIT(9))
47439beb93cSSam Leffler #define TX_BEAMFORM_CAP_EXPLICIT_BF_CSI_FEEDBACK_CAP ((u32) BIT(10))
47539beb93cSSam Leffler #define TX_BEAMFORM_CAP_EXPLICIT_BF_CSI_FEEDBACK_OFFSET 11
47639beb93cSSam Leffler #define TX_BEAMFORM_CAP_EXPLICIT_UNCOMPR_STEERING_MATRIX_FEEDBACK_OFFSET 13
47739beb93cSSam Leffler #define TX_BEAMFORM_CAP_EXPLICIT_COMPRESSED_STEERING_MATRIX_FEEDBACK_OFFSET 15
47839beb93cSSam Leffler #define TX_BEAMFORM_CAP_MINIMAL_GROUPING_OFFSET 17
47939beb93cSSam Leffler #define TX_BEAMFORM_CAP_CSI_NUM_BEAMFORMER_ANT_OFFSET 19
48039beb93cSSam Leffler #define TX_BEAMFORM_CAP_UNCOMPRESSED_STEERING_MATRIX_BEAMFORMER_ANT_OFFSET 21
48139beb93cSSam Leffler #define TX_BEAMFORM_CAP_COMPRESSED_STEERING_MATRIX_BEAMFORMER_ANT_OFFSET 23
48239beb93cSSam Leffler #define TX_BEAMFORM_CAP_SCI_MAX_OF_ROWS_BEANFORMER_SUPPORTED_OFFSET 25
48339beb93cSSam Leffler 
48439beb93cSSam Leffler 
48539beb93cSSam Leffler #define ASEL_CAPABILITY_ASEL_CAPABLE ((u8) BIT(0))
48639beb93cSSam Leffler #define ASEL_CAPABILITY_EXPLICIT_CSI_FEEDBACK_BASED_TX_AS_CAP ((u8) BIT(1))
48739beb93cSSam Leffler #define ASEL_CAPABILITY_ANT_INDICES_FEEDBACK_BASED_TX_AS_CAP ((u8) BIT(2))
48839beb93cSSam Leffler #define ASEL_CAPABILITY_EXPLICIT_CSI_FEEDBACK_CAP ((u8) BIT(3))
48939beb93cSSam Leffler #define ASEL_CAPABILITY_ANT_INDICES_FEEDBACK_CAP ((u8) BIT(4))
49039beb93cSSam Leffler #define ASEL_CAPABILITY_RX_AS_CAP ((u8) BIT(5))
49139beb93cSSam Leffler #define ASEL_CAPABILITY_TX_SOUND_PPDUS_CAP ((u8) BIT(6))
49239beb93cSSam Leffler 
49339beb93cSSam Leffler 
49439beb93cSSam Leffler struct ht_cap_ie {
49539beb93cSSam Leffler 	u8 id;
49639beb93cSSam Leffler 	u8 length;
49739beb93cSSam Leffler 	struct ieee80211_ht_capability data;
49839beb93cSSam Leffler } STRUCT_PACKED;
49939beb93cSSam Leffler 
50039beb93cSSam Leffler 
50139beb93cSSam Leffler #define REC_TRANS_CHNL_WIDTH_20     0
50239beb93cSSam Leffler #define REC_TRANS_CHNL_WIDTH_ANY    1
50339beb93cSSam Leffler 
50439beb93cSSam Leffler #define OP_MODE_PURE                    0
50539beb93cSSam Leffler #define OP_MODE_MAY_BE_LEGACY_STAS      1
50639beb93cSSam Leffler #define OP_MODE_20MHZ_HT_STA_ASSOCED    2
50739beb93cSSam Leffler #define OP_MODE_MIXED                   3
50839beb93cSSam Leffler 
50939beb93cSSam Leffler #define HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK	((u8) BIT(0) | BIT(1))
51039beb93cSSam Leffler #define HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE		((u8) BIT(0))
51139beb93cSSam Leffler #define HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW		((u8) BIT(0) | BIT(1))
51239beb93cSSam Leffler #define HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH		((u8) BIT(2))
51339beb93cSSam Leffler #define HT_INFO_HT_PARAM_RIFS_MODE			((u8) BIT(3))
51439beb93cSSam Leffler #define HT_INFO_HT_PARAM_CTRL_ACCESS_ONLY		((u8) BIT(4))
51539beb93cSSam Leffler #define HT_INFO_HT_PARAM_SRV_INTERVAL_GRANULARITY	((u8) BIT(5))
51639beb93cSSam Leffler 
51739beb93cSSam Leffler #define HT_INFO_OPERATION_MODE_OP_MODE_MASK	\
51839beb93cSSam Leffler 		((le16) (0x0001 | 0x0002))
51939beb93cSSam Leffler #define HT_INFO_OPERATION_MODE_OP_MODE_OFFSET		0
52039beb93cSSam Leffler #define HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT	((u8) BIT(2))
52139beb93cSSam Leffler #define HT_INFO_OPERATION_MODE_TRANSMIT_BURST_LIMIT	((u8) BIT(3))
52239beb93cSSam Leffler #define HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT	((u8) BIT(4))
52339beb93cSSam Leffler 
52439beb93cSSam Leffler #define HT_INFO_STBC_PARAM_DUAL_BEACON			((u16) BIT(6))
52539beb93cSSam Leffler #define HT_INFO_STBC_PARAM_DUAL_STBC_PROTECT		((u16) BIT(7))
52639beb93cSSam Leffler #define HT_INFO_STBC_PARAM_SECONDARY_BCN		((u16) BIT(8))
52739beb93cSSam Leffler #define HT_INFO_STBC_PARAM_LSIG_TXOP_PROTECT_ALLOWED	((u16) BIT(9))
52839beb93cSSam Leffler #define HT_INFO_STBC_PARAM_PCO_ACTIVE			((u16) BIT(10))
52939beb93cSSam Leffler #define HT_INFO_STBC_PARAM_PCO_PHASE			((u16) BIT(11))
53039beb93cSSam Leffler 
53139beb93cSSam Leffler 
53239beb93cSSam Leffler /* Secondary channel offset element */
53339beb93cSSam Leffler #define SECONDARY_CHANNEL_OFFSET_NONE	0
53439beb93cSSam Leffler #define SECONDARY_CHANNEL_OFFSET_ABOVE	1
53539beb93cSSam Leffler #define SECONDARY_CHANNEL_OFFSET_BELOW	3
53639beb93cSSam Leffler struct secondary_channel_offset_ie {
53739beb93cSSam Leffler 	u8 id;
53839beb93cSSam Leffler 	u8 length;
53939beb93cSSam Leffler 	u8 secondary_offset_offset;
54039beb93cSSam Leffler } STRUCT_PACKED;
54139beb93cSSam Leffler 
54239beb93cSSam Leffler 
54339beb93cSSam Leffler /* body of Recommended Transmit Channel Width action frame */
54439beb93cSSam Leffler #define CHANNEL_WIDTH_20	0
54539beb93cSSam Leffler #define CHANNEL_WIDTH_ANY	1
54639beb93cSSam Leffler struct recommended_tx_channel_width_action {
54739beb93cSSam Leffler 	u8 category;
54839beb93cSSam Leffler 	u8 action;
54939beb93cSSam Leffler 	u8 channel_width;
55039beb93cSSam Leffler } STRUCT_PACKED;
55139beb93cSSam Leffler 
55239beb93cSSam Leffler /* body of MIMO Power Save action frame */
55339beb93cSSam Leffler #define PWR_SAVE_MODE_STATIC	0
55439beb93cSSam Leffler #define PWR_SAVE_MODE_DYNAMIC	1
55539beb93cSSam Leffler struct mimo_pwr_save_action {
55639beb93cSSam Leffler 	u8 category;
55739beb93cSSam Leffler 	u8 action;
55839beb93cSSam Leffler 	u8 enable;
55939beb93cSSam Leffler 	u8 mode;
56039beb93cSSam Leffler } STRUCT_PACKED;
56139beb93cSSam Leffler 
56239beb93cSSam Leffler 
56339beb93cSSam Leffler #define OUI_MICROSOFT 0x0050f2 /* Microsoft (also used in Wi-Fi specs)
56439beb93cSSam Leffler 				* 00:50:F2 */
56539beb93cSSam Leffler 
566*3157ba21SRui Paulo #define WMM_OUI_TYPE 2
567*3157ba21SRui Paulo #define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0
568*3157ba21SRui Paulo #define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1
569*3157ba21SRui Paulo #define WMM_OUI_SUBTYPE_TSPEC_ELEMENT 2
570*3157ba21SRui Paulo #define WMM_VERSION 1
57139beb93cSSam Leffler 
572*3157ba21SRui Paulo #define WMM_ACTION_CODE_ADDTS_REQ 0
573*3157ba21SRui Paulo #define WMM_ACTION_CODE_ADDTS_RESP 1
574*3157ba21SRui Paulo #define WMM_ACTION_CODE_DELTS 2
57539beb93cSSam Leffler 
576*3157ba21SRui Paulo #define WMM_ADDTS_STATUS_ADMISSION_ACCEPTED 0
577*3157ba21SRui Paulo #define WMM_ADDTS_STATUS_INVALID_PARAMETERS 1
578*3157ba21SRui Paulo /* 2 - Reserved */
579*3157ba21SRui Paulo #define WMM_ADDTS_STATUS_REFUSED 3
580*3157ba21SRui Paulo /* 4-255 - Reserved */
58139beb93cSSam Leffler 
582*3157ba21SRui Paulo /* WMM TSPEC Direction Field Values */
583*3157ba21SRui Paulo #define WMM_TSPEC_DIRECTION_UPLINK 0
584*3157ba21SRui Paulo #define WMM_TSPEC_DIRECTION_DOWNLINK 1
585*3157ba21SRui Paulo /* 2 - Reserved */
586*3157ba21SRui Paulo #define WMM_TSPEC_DIRECTION_BI_DIRECTIONAL 3
58739beb93cSSam Leffler 
58839beb93cSSam Leffler 
58939beb93cSSam Leffler #define OUI_BROADCOM 0x00904c /* Broadcom (Epigram) */
59039beb93cSSam Leffler 
59139beb93cSSam Leffler #define VENDOR_HT_CAPAB_OUI_TYPE 0x33 /* 00-90-4c:0x33 */
59239beb93cSSam Leffler 
59339beb93cSSam Leffler #endif /* IEEE802_11_DEFS_H */
594