ieee802_11_defs.h revision 214734
1189251Ssam/* 2189251Ssam * IEEE 802.11 Frame type definitions 3214734Srpaulo * Copyright (c) 2002-2009, Jouni Malinen <j@w1.fi> 4189251Ssam * Copyright (c) 2007-2008 Intel Corporation 5189251Ssam * 6189251Ssam * This program is free software; you can redistribute it and/or modify 7189251Ssam * it under the terms of the GNU General Public License version 2 as 8189251Ssam * published by the Free Software Foundation. 9189251Ssam * 10189251Ssam * Alternatively, this software may be distributed under the terms of BSD 11189251Ssam * license. 12189251Ssam * 13189251Ssam * See README and COPYING for more details. 14189251Ssam */ 15189251Ssam 16189251Ssam#ifndef IEEE802_11_DEFS_H 17189251Ssam#define IEEE802_11_DEFS_H 18189251Ssam 19189251Ssam/* IEEE 802.11 defines */ 20189251Ssam 21189251Ssam#define WLAN_FC_PVER 0x0003 22189251Ssam#define WLAN_FC_TODS 0x0100 23189251Ssam#define WLAN_FC_FROMDS 0x0200 24189251Ssam#define WLAN_FC_MOREFRAG 0x0400 25189251Ssam#define WLAN_FC_RETRY 0x0800 26189251Ssam#define WLAN_FC_PWRMGT 0x1000 27189251Ssam#define WLAN_FC_MOREDATA 0x2000 28189251Ssam#define WLAN_FC_ISWEP 0x4000 29189251Ssam#define WLAN_FC_ORDER 0x8000 30189251Ssam 31189251Ssam#define WLAN_FC_GET_TYPE(fc) (((fc) & 0x000c) >> 2) 32189251Ssam#define WLAN_FC_GET_STYPE(fc) (((fc) & 0x00f0) >> 4) 33189251Ssam 34189251Ssam#define WLAN_GET_SEQ_FRAG(seq) ((seq) & (BIT(3) | BIT(2) | BIT(1) | BIT(0))) 35189251Ssam#define WLAN_GET_SEQ_SEQ(seq) \ 36189251Ssam (((seq) & (~(BIT(3) | BIT(2) | BIT(1) | BIT(0)))) >> 4) 37189251Ssam 38189251Ssam#define WLAN_FC_TYPE_MGMT 0 39189251Ssam#define WLAN_FC_TYPE_CTRL 1 40189251Ssam#define WLAN_FC_TYPE_DATA 2 41189251Ssam 42189251Ssam/* management */ 43189251Ssam#define WLAN_FC_STYPE_ASSOC_REQ 0 44189251Ssam#define WLAN_FC_STYPE_ASSOC_RESP 1 45189251Ssam#define WLAN_FC_STYPE_REASSOC_REQ 2 46189251Ssam#define WLAN_FC_STYPE_REASSOC_RESP 3 47189251Ssam#define WLAN_FC_STYPE_PROBE_REQ 4 48189251Ssam#define WLAN_FC_STYPE_PROBE_RESP 5 49189251Ssam#define WLAN_FC_STYPE_BEACON 8 50189251Ssam#define WLAN_FC_STYPE_ATIM 9 51189251Ssam#define WLAN_FC_STYPE_DISASSOC 10 52189251Ssam#define WLAN_FC_STYPE_AUTH 11 53189251Ssam#define WLAN_FC_STYPE_DEAUTH 12 54189251Ssam#define WLAN_FC_STYPE_ACTION 13 55189251Ssam 56189251Ssam/* control */ 57189251Ssam#define WLAN_FC_STYPE_PSPOLL 10 58189251Ssam#define WLAN_FC_STYPE_RTS 11 59189251Ssam#define WLAN_FC_STYPE_CTS 12 60189251Ssam#define WLAN_FC_STYPE_ACK 13 61189251Ssam#define WLAN_FC_STYPE_CFEND 14 62189251Ssam#define WLAN_FC_STYPE_CFENDACK 15 63189251Ssam 64189251Ssam/* data */ 65189251Ssam#define WLAN_FC_STYPE_DATA 0 66189251Ssam#define WLAN_FC_STYPE_DATA_CFACK 1 67189251Ssam#define WLAN_FC_STYPE_DATA_CFPOLL 2 68189251Ssam#define WLAN_FC_STYPE_DATA_CFACKPOLL 3 69189251Ssam#define WLAN_FC_STYPE_NULLFUNC 4 70189251Ssam#define WLAN_FC_STYPE_CFACK 5 71189251Ssam#define WLAN_FC_STYPE_CFPOLL 6 72189251Ssam#define WLAN_FC_STYPE_CFACKPOLL 7 73189251Ssam#define WLAN_FC_STYPE_QOS_DATA 8 74189251Ssam 75189251Ssam/* Authentication algorithms */ 76189251Ssam#define WLAN_AUTH_OPEN 0 77189251Ssam#define WLAN_AUTH_SHARED_KEY 1 78189251Ssam#define WLAN_AUTH_FT 2 79189251Ssam#define WLAN_AUTH_LEAP 128 80189251Ssam 81189251Ssam#define WLAN_AUTH_CHALLENGE_LEN 128 82189251Ssam 83189251Ssam#define WLAN_CAPABILITY_ESS BIT(0) 84189251Ssam#define WLAN_CAPABILITY_IBSS BIT(1) 85189251Ssam#define WLAN_CAPABILITY_CF_POLLABLE BIT(2) 86189251Ssam#define WLAN_CAPABILITY_CF_POLL_REQUEST BIT(3) 87189251Ssam#define WLAN_CAPABILITY_PRIVACY BIT(4) 88189251Ssam#define WLAN_CAPABILITY_SHORT_PREAMBLE BIT(5) 89189251Ssam#define WLAN_CAPABILITY_PBCC BIT(6) 90189251Ssam#define WLAN_CAPABILITY_CHANNEL_AGILITY BIT(7) 91189251Ssam#define WLAN_CAPABILITY_SPECTRUM_MGMT BIT(8) 92189251Ssam#define WLAN_CAPABILITY_SHORT_SLOT_TIME BIT(10) 93189251Ssam#define WLAN_CAPABILITY_DSSS_OFDM BIT(13) 94189251Ssam 95189251Ssam/* Status codes (IEEE 802.11-2007, 7.3.1.9, Table 7-23) */ 96189251Ssam#define WLAN_STATUS_SUCCESS 0 97189251Ssam#define WLAN_STATUS_UNSPECIFIED_FAILURE 1 98189251Ssam#define WLAN_STATUS_CAPS_UNSUPPORTED 10 99189251Ssam#define WLAN_STATUS_REASSOC_NO_ASSOC 11 100189251Ssam#define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12 101189251Ssam#define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13 102189251Ssam#define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14 103189251Ssam#define WLAN_STATUS_CHALLENGE_FAIL 15 104189251Ssam#define WLAN_STATUS_AUTH_TIMEOUT 16 105189251Ssam#define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17 106189251Ssam#define WLAN_STATUS_ASSOC_DENIED_RATES 18 107189251Ssam/* IEEE 802.11b */ 108189251Ssam#define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19 109189251Ssam#define WLAN_STATUS_ASSOC_DENIED_NOPBCC 20 110189251Ssam#define WLAN_STATUS_ASSOC_DENIED_NOAGILITY 21 111189251Ssam/* IEEE 802.11h */ 112189251Ssam#define WLAN_STATUS_SPEC_MGMT_REQUIRED 22 113189251Ssam#define WLAN_STATUS_PWR_CAPABILITY_NOT_VALID 23 114189251Ssam#define WLAN_STATUS_SUPPORTED_CHANNEL_NOT_VALID 24 115189251Ssam/* IEEE 802.11g */ 116189251Ssam#define WLAN_STATUS_ASSOC_DENIED_NO_SHORT_SLOT_TIME 25 117189251Ssam#define WLAN_STATUS_ASSOC_DENIED_NO_ER_PBCC 26 118189251Ssam#define WLAN_STATUS_ASSOC_DENIED_NO_DSSS_OFDM 27 119214734Srpaulo#define WLAN_STATUS_R0KH_UNREACHABLE 28 120189251Ssam/* IEEE 802.11w */ 121189251Ssam#define WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY 30 122189251Ssam#define WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION 31 123214734Srpaulo#define WLAN_STATUS_UNSPECIFIED_QOS_FAILURE 32 124214734Srpaulo#define WLAN_STATUS_REQUEST_DECLINED 37 125214734Srpaulo#define WLAN_STATUS_INVALID_PARAMETERS 38 126189251Ssam/* IEEE 802.11i */ 127189251Ssam#define WLAN_STATUS_INVALID_IE 40 128189251Ssam#define WLAN_STATUS_GROUP_CIPHER_NOT_VALID 41 129189251Ssam#define WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID 42 130189251Ssam#define WLAN_STATUS_AKMP_NOT_VALID 43 131189251Ssam#define WLAN_STATUS_UNSUPPORTED_RSN_IE_VERSION 44 132189251Ssam#define WLAN_STATUS_INVALID_RSN_IE_CAPAB 45 133189251Ssam#define WLAN_STATUS_CIPHER_REJECTED_PER_POLICY 46 134189251Ssam#define WLAN_STATUS_TS_NOT_CREATED 47 135189251Ssam#define WLAN_STATUS_DIRECT_LINK_NOT_ALLOWED 48 136189251Ssam#define WLAN_STATUS_DEST_STA_NOT_PRESENT 49 137189251Ssam#define WLAN_STATUS_DEST_STA_NOT_QOS_STA 50 138189251Ssam#define WLAN_STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE 51 139189251Ssam/* IEEE 802.11r */ 140189251Ssam#define WLAN_STATUS_INVALID_FT_ACTION_FRAME_COUNT 52 141209158Srpaulo#define WLAN_STATUS_INVALID_PMKID 53 142209158Srpaulo#define WLAN_STATUS_INVALID_MDIE 54 143209158Srpaulo#define WLAN_STATUS_INVALID_FTIE 55 144189251Ssam 145189251Ssam/* Reason codes (IEEE 802.11-2007, 7.3.1.7, Table 7-22) */ 146189251Ssam#define WLAN_REASON_UNSPECIFIED 1 147189251Ssam#define WLAN_REASON_PREV_AUTH_NOT_VALID 2 148189251Ssam#define WLAN_REASON_DEAUTH_LEAVING 3 149189251Ssam#define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4 150189251Ssam#define WLAN_REASON_DISASSOC_AP_BUSY 5 151189251Ssam#define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6 152189251Ssam#define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7 153189251Ssam#define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8 154189251Ssam#define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9 155189251Ssam/* IEEE 802.11h */ 156189251Ssam#define WLAN_REASON_PWR_CAPABILITY_NOT_VALID 10 157189251Ssam#define WLAN_REASON_SUPPORTED_CHANNEL_NOT_VALID 11 158189251Ssam/* IEEE 802.11i */ 159189251Ssam#define WLAN_REASON_INVALID_IE 13 160189251Ssam#define WLAN_REASON_MICHAEL_MIC_FAILURE 14 161189251Ssam#define WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT 15 162189251Ssam#define WLAN_REASON_GROUP_KEY_UPDATE_TIMEOUT 16 163189251Ssam#define WLAN_REASON_IE_IN_4WAY_DIFFERS 17 164189251Ssam#define WLAN_REASON_GROUP_CIPHER_NOT_VALID 18 165189251Ssam#define WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID 19 166189251Ssam#define WLAN_REASON_AKMP_NOT_VALID 20 167189251Ssam#define WLAN_REASON_UNSUPPORTED_RSN_IE_VERSION 21 168189251Ssam#define WLAN_REASON_INVALID_RSN_IE_CAPAB 22 169189251Ssam#define WLAN_REASON_IEEE_802_1X_AUTH_FAILED 23 170189251Ssam#define WLAN_REASON_CIPHER_SUITE_REJECTED 24 171189251Ssam 172189251Ssam 173189251Ssam/* Information Element IDs */ 174189251Ssam#define WLAN_EID_SSID 0 175189251Ssam#define WLAN_EID_SUPP_RATES 1 176189251Ssam#define WLAN_EID_FH_PARAMS 2 177189251Ssam#define WLAN_EID_DS_PARAMS 3 178189251Ssam#define WLAN_EID_CF_PARAMS 4 179189251Ssam#define WLAN_EID_TIM 5 180189251Ssam#define WLAN_EID_IBSS_PARAMS 6 181189251Ssam#define WLAN_EID_COUNTRY 7 182189251Ssam#define WLAN_EID_CHALLENGE 16 183189251Ssam/* EIDs defined by IEEE 802.11h - START */ 184189251Ssam#define WLAN_EID_PWR_CONSTRAINT 32 185189251Ssam#define WLAN_EID_PWR_CAPABILITY 33 186189251Ssam#define WLAN_EID_TPC_REQUEST 34 187189251Ssam#define WLAN_EID_TPC_REPORT 35 188189251Ssam#define WLAN_EID_SUPPORTED_CHANNELS 36 189189251Ssam#define WLAN_EID_CHANNEL_SWITCH 37 190189251Ssam#define WLAN_EID_MEASURE_REQUEST 38 191189251Ssam#define WLAN_EID_MEASURE_REPORT 39 192189251Ssam#define WLAN_EID_QUITE 40 193189251Ssam#define WLAN_EID_IBSS_DFS 41 194189251Ssam/* EIDs defined by IEEE 802.11h - END */ 195189251Ssam#define WLAN_EID_ERP_INFO 42 196189251Ssam#define WLAN_EID_HT_CAP 45 197189251Ssam#define WLAN_EID_RSN 48 198189251Ssam#define WLAN_EID_EXT_SUPP_RATES 50 199189251Ssam#define WLAN_EID_MOBILITY_DOMAIN 54 200189251Ssam#define WLAN_EID_FAST_BSS_TRANSITION 55 201189251Ssam#define WLAN_EID_TIMEOUT_INTERVAL 56 202189251Ssam#define WLAN_EID_RIC_DATA 57 203189251Ssam#define WLAN_EID_HT_OPERATION 61 204189251Ssam#define WLAN_EID_SECONDARY_CHANNEL_OFFSET 62 205189251Ssam#define WLAN_EID_20_40_BSS_COEXISTENCE 72 206189251Ssam#define WLAN_EID_20_40_BSS_INTOLERANT 73 207189251Ssam#define WLAN_EID_OVERLAPPING_BSS_SCAN_PARAMS 74 208189251Ssam#define WLAN_EID_MMIE 76 209189251Ssam#define WLAN_EID_VENDOR_SPECIFIC 221 210189251Ssam 211189251Ssam 212189251Ssam/* Action frame categories (IEEE 802.11-2007, 7.3.1.11, Table 7-24) */ 213189251Ssam#define WLAN_ACTION_SPECTRUM_MGMT 0 214189251Ssam#define WLAN_ACTION_QOS 1 215189251Ssam#define WLAN_ACTION_DLS 2 216189251Ssam#define WLAN_ACTION_BLOCK_ACK 3 217209158Srpaulo#define WLAN_ACTION_PUBLIC 4 218189251Ssam#define WLAN_ACTION_RADIO_MEASUREMENT 5 219189251Ssam#define WLAN_ACTION_FT 6 220209158Srpaulo#define WLAN_ACTION_HT 7 221189251Ssam#define WLAN_ACTION_SA_QUERY 8 222209158Srpaulo#define WLAN_ACTION_WMM 17 /* WMM Specification 1.1 */ 223189251Ssam 224209158Srpaulo/* SA Query Action frame (IEEE 802.11w/D8.0, 7.4.9) */ 225189251Ssam#define WLAN_SA_QUERY_REQUEST 0 226189251Ssam#define WLAN_SA_QUERY_RESPONSE 1 227189251Ssam 228209158Srpaulo#define WLAN_SA_QUERY_TR_ID_LEN 2 229189251Ssam 230189251Ssam/* Timeout Interval Type */ 231189251Ssam#define WLAN_TIMEOUT_REASSOC_DEADLINE 1 232189251Ssam#define WLAN_TIMEOUT_KEY_LIFETIME 2 233189251Ssam#define WLAN_TIMEOUT_ASSOC_COMEBACK 3 234189251Ssam 235189251Ssam 236189251Ssam#ifdef _MSC_VER 237189251Ssam#pragma pack(push, 1) 238189251Ssam#endif /* _MSC_VER */ 239189251Ssam 240214734Srpaulostruct ieee80211_hdr { 241214734Srpaulo le16 frame_control; 242214734Srpaulo le16 duration_id; 243214734Srpaulo u8 addr1[6]; 244214734Srpaulo u8 addr2[6]; 245214734Srpaulo u8 addr3[6]; 246214734Srpaulo le16 seq_ctrl; 247214734Srpaulo /* followed by 'u8 addr4[6];' if ToDS and FromDS is set in data frame 248214734Srpaulo */ 249214734Srpaulo} STRUCT_PACKED; 250214734Srpaulo 251214734Srpaulo#define IEEE80211_DA_FROMDS addr1 252214734Srpaulo#define IEEE80211_BSSID_FROMDS addr2 253214734Srpaulo#define IEEE80211_SA_FROMDS addr3 254214734Srpaulo 255214734Srpaulo#define IEEE80211_HDRLEN (sizeof(struct ieee80211_hdr)) 256214734Srpaulo 257214734Srpaulo#define IEEE80211_FC(type, stype) host_to_le16((type << 2) | (stype << 4)) 258214734Srpaulo 259189251Ssamstruct ieee80211_mgmt { 260189251Ssam le16 frame_control; 261189251Ssam le16 duration; 262189251Ssam u8 da[6]; 263189251Ssam u8 sa[6]; 264189251Ssam u8 bssid[6]; 265189251Ssam le16 seq_ctrl; 266189251Ssam union { 267189251Ssam struct { 268189251Ssam le16 auth_alg; 269189251Ssam le16 auth_transaction; 270189251Ssam le16 status_code; 271189251Ssam /* possibly followed by Challenge text */ 272189251Ssam u8 variable[0]; 273189251Ssam } STRUCT_PACKED auth; 274189251Ssam struct { 275189251Ssam le16 reason_code; 276189251Ssam } STRUCT_PACKED deauth; 277189251Ssam struct { 278189251Ssam le16 capab_info; 279189251Ssam le16 listen_interval; 280189251Ssam /* followed by SSID and Supported rates */ 281189251Ssam u8 variable[0]; 282189251Ssam } STRUCT_PACKED assoc_req; 283189251Ssam struct { 284189251Ssam le16 capab_info; 285189251Ssam le16 status_code; 286189251Ssam le16 aid; 287189251Ssam /* followed by Supported rates */ 288189251Ssam u8 variable[0]; 289189251Ssam } STRUCT_PACKED assoc_resp, reassoc_resp; 290189251Ssam struct { 291189251Ssam le16 capab_info; 292189251Ssam le16 listen_interval; 293189251Ssam u8 current_ap[6]; 294189251Ssam /* followed by SSID and Supported rates */ 295189251Ssam u8 variable[0]; 296189251Ssam } STRUCT_PACKED reassoc_req; 297189251Ssam struct { 298189251Ssam le16 reason_code; 299189251Ssam } STRUCT_PACKED disassoc; 300189251Ssam struct { 301189251Ssam u8 timestamp[8]; 302189251Ssam le16 beacon_int; 303189251Ssam le16 capab_info; 304189251Ssam /* followed by some of SSID, Supported rates, 305189251Ssam * FH Params, DS Params, CF Params, IBSS Params, TIM */ 306189251Ssam u8 variable[0]; 307189251Ssam } STRUCT_PACKED beacon; 308189251Ssam struct { 309189251Ssam /* only variable items: SSID, Supported rates */ 310189251Ssam u8 variable[0]; 311189251Ssam } STRUCT_PACKED probe_req; 312189251Ssam struct { 313189251Ssam u8 timestamp[8]; 314189251Ssam le16 beacon_int; 315189251Ssam le16 capab_info; 316189251Ssam /* followed by some of SSID, Supported rates, 317189251Ssam * FH Params, DS Params, CF Params, IBSS Params */ 318189251Ssam u8 variable[0]; 319189251Ssam } STRUCT_PACKED probe_resp; 320189251Ssam struct { 321189251Ssam u8 category; 322189251Ssam union { 323189251Ssam struct { 324189251Ssam u8 action_code; 325189251Ssam u8 dialog_token; 326189251Ssam u8 status_code; 327189251Ssam u8 variable[0]; 328209158Srpaulo } STRUCT_PACKED wmm_action; 329189251Ssam struct{ 330189251Ssam u8 action_code; 331189251Ssam u8 element_id; 332189251Ssam u8 length; 333189251Ssam u8 switch_mode; 334189251Ssam u8 new_chan; 335189251Ssam u8 switch_count; 336189251Ssam } STRUCT_PACKED chan_switch; 337189251Ssam struct { 338189251Ssam u8 action; 339189251Ssam u8 sta_addr[ETH_ALEN]; 340189251Ssam u8 target_ap_addr[ETH_ALEN]; 341189251Ssam u8 variable[0]; /* FT Request */ 342189251Ssam } STRUCT_PACKED ft_action_req; 343189251Ssam struct { 344189251Ssam u8 action; 345189251Ssam u8 sta_addr[ETH_ALEN]; 346189251Ssam u8 target_ap_addr[ETH_ALEN]; 347189251Ssam le16 status_code; 348189251Ssam u8 variable[0]; /* FT Request */ 349189251Ssam } STRUCT_PACKED ft_action_resp; 350189251Ssam struct { 351189251Ssam u8 action; 352189251Ssam u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN]; 353189251Ssam } STRUCT_PACKED sa_query_req; 354189251Ssam struct { 355189251Ssam u8 action; /* */ 356189251Ssam u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN]; 357189251Ssam } STRUCT_PACKED sa_query_resp; 358189251Ssam } u; 359189251Ssam } STRUCT_PACKED action; 360189251Ssam } u; 361189251Ssam} STRUCT_PACKED; 362189251Ssam 363189251Ssam 364214734Srpaulostruct ieee80211_ht_capabilities { 365214734Srpaulo le16 ht_capabilities_info; 366214734Srpaulo u8 a_mpdu_params; 367189251Ssam u8 supported_mcs_set[16]; 368214734Srpaulo le16 ht_extended_capabilities; 369214734Srpaulo le32 tx_bf_capability_info; 370214734Srpaulo u8 asel_capabilities; 371189251Ssam} STRUCT_PACKED; 372189251Ssam 373189251Ssam 374189251Ssamstruct ieee80211_ht_operation { 375189251Ssam u8 control_chan; 376189251Ssam u8 ht_param; 377189251Ssam le16 operation_mode; 378189251Ssam le16 stbc_param; 379189251Ssam u8 basic_set[16]; 380189251Ssam} STRUCT_PACKED; 381189251Ssam 382214734Srpaulo#ifdef _MSC_VER 383214734Srpaulo#pragma pack(pop) 384214734Srpaulo#endif /* _MSC_VER */ 385189251Ssam 386214734Srpaulo#define ERP_INFO_NON_ERP_PRESENT BIT(0) 387214734Srpaulo#define ERP_INFO_USE_PROTECTION BIT(1) 388214734Srpaulo#define ERP_INFO_BARKER_PREAMBLE_MODE BIT(2) 389189251Ssam 390189251Ssam 391189251Ssam#define HT_CAP_INFO_LDPC_CODING_CAP ((u16) BIT(0)) 392189251Ssam#define HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET ((u16) BIT(1)) 393189251Ssam#define HT_CAP_INFO_SMPS_MASK ((u16) (BIT(2) | BIT(3))) 394189251Ssam#define HT_CAP_INFO_SMPS_STATIC ((u16) 0) 395189251Ssam#define HT_CAP_INFO_SMPS_DYNAMIC ((u16) BIT(2)) 396189251Ssam#define HT_CAP_INFO_SMPS_DISABLED ((u16) (BIT(2) | BIT(3))) 397189251Ssam#define HT_CAP_INFO_GREEN_FIELD ((u16) BIT(4)) 398189251Ssam#define HT_CAP_INFO_SHORT_GI20MHZ ((u16) BIT(5)) 399189251Ssam#define HT_CAP_INFO_SHORT_GI40MHZ ((u16) BIT(6)) 400189251Ssam#define HT_CAP_INFO_TX_STBC ((u16) BIT(7)) 401189251Ssam#define HT_CAP_INFO_RX_STBC_MASK ((u16) (BIT(8) | BIT(9))) 402189251Ssam#define HT_CAP_INFO_RX_STBC_1 ((u16) BIT(8)) 403189251Ssam#define HT_CAP_INFO_RX_STBC_12 ((u16) BIT(9)) 404189251Ssam#define HT_CAP_INFO_RX_STBC_123 ((u16) (BIT(8) | BIT(9))) 405189251Ssam#define HT_CAP_INFO_DELAYED_BA ((u16) BIT(10)) 406189251Ssam#define HT_CAP_INFO_MAX_AMSDU_SIZE ((u16) BIT(11)) 407189251Ssam#define HT_CAP_INFO_DSSS_CCK40MHZ ((u16) BIT(12)) 408189251Ssam#define HT_CAP_INFO_PSMP_SUPP ((u16) BIT(13)) 409189251Ssam#define HT_CAP_INFO_40MHZ_INTOLERANT ((u16) BIT(14)) 410189251Ssam#define HT_CAP_INFO_LSIG_TXOP_PROTECT_SUPPORT ((u16) BIT(15)) 411189251Ssam 412189251Ssam 413189251Ssam#define EXT_HT_CAP_INFO_PCO ((u16) BIT(0)) 414189251Ssam#define EXT_HT_CAP_INFO_TRANS_TIME_OFFSET 1 415189251Ssam#define EXT_HT_CAP_INFO_MCS_FEEDBACK_OFFSET 8 416189251Ssam#define EXT_HT_CAP_INFO_HTC_SUPPORTED ((u16) BIT(10)) 417189251Ssam#define EXT_HT_CAP_INFO_RD_RESPONDER ((u16) BIT(11)) 418189251Ssam 419189251Ssam 420189251Ssam#define TX_BEAMFORM_CAP_TXBF_CAP ((u32) BIT(0)) 421189251Ssam#define TX_BEAMFORM_CAP_RX_STAGGERED_SOUNDING_CAP ((u32) BIT(1)) 422189251Ssam#define TX_BEAMFORM_CAP_TX_STAGGERED_SOUNDING_CAP ((u32) BIT(2)) 423189251Ssam#define TX_BEAMFORM_CAP_RX_ZLF_CAP ((u32) BIT(3)) 424189251Ssam#define TX_BEAMFORM_CAP_TX_ZLF_CAP ((u32) BIT(4)) 425189251Ssam#define TX_BEAMFORM_CAP_IMPLICIT_ZLF_CAP ((u32) BIT(5)) 426189251Ssam#define TX_BEAMFORM_CAP_CALIB_OFFSET 6 427189251Ssam#define TX_BEAMFORM_CAP_EXPLICIT_CSI_TXBF_CAP ((u32) BIT(8)) 428189251Ssam#define TX_BEAMFORM_CAP_EXPLICIT_UNCOMPR_STEERING_MATRIX_CAP ((u32) BIT(9)) 429189251Ssam#define TX_BEAMFORM_CAP_EXPLICIT_BF_CSI_FEEDBACK_CAP ((u32) BIT(10)) 430189251Ssam#define TX_BEAMFORM_CAP_EXPLICIT_BF_CSI_FEEDBACK_OFFSET 11 431189251Ssam#define TX_BEAMFORM_CAP_EXPLICIT_UNCOMPR_STEERING_MATRIX_FEEDBACK_OFFSET 13 432189251Ssam#define TX_BEAMFORM_CAP_EXPLICIT_COMPRESSED_STEERING_MATRIX_FEEDBACK_OFFSET 15 433189251Ssam#define TX_BEAMFORM_CAP_MINIMAL_GROUPING_OFFSET 17 434189251Ssam#define TX_BEAMFORM_CAP_CSI_NUM_BEAMFORMER_ANT_OFFSET 19 435189251Ssam#define TX_BEAMFORM_CAP_UNCOMPRESSED_STEERING_MATRIX_BEAMFORMER_ANT_OFFSET 21 436189251Ssam#define TX_BEAMFORM_CAP_COMPRESSED_STEERING_MATRIX_BEAMFORMER_ANT_OFFSET 23 437189251Ssam#define TX_BEAMFORM_CAP_SCI_MAX_OF_ROWS_BEANFORMER_SUPPORTED_OFFSET 25 438189251Ssam 439189251Ssam 440189251Ssam#define ASEL_CAPABILITY_ASEL_CAPABLE ((u8) BIT(0)) 441189251Ssam#define ASEL_CAPABILITY_EXPLICIT_CSI_FEEDBACK_BASED_TX_AS_CAP ((u8) BIT(1)) 442189251Ssam#define ASEL_CAPABILITY_ANT_INDICES_FEEDBACK_BASED_TX_AS_CAP ((u8) BIT(2)) 443189251Ssam#define ASEL_CAPABILITY_EXPLICIT_CSI_FEEDBACK_CAP ((u8) BIT(3)) 444189251Ssam#define ASEL_CAPABILITY_ANT_INDICES_FEEDBACK_CAP ((u8) BIT(4)) 445189251Ssam#define ASEL_CAPABILITY_RX_AS_CAP ((u8) BIT(5)) 446189251Ssam#define ASEL_CAPABILITY_TX_SOUND_PPDUS_CAP ((u8) BIT(6)) 447189251Ssam 448189251Ssam#define HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK ((u8) BIT(0) | BIT(1)) 449189251Ssam#define HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE ((u8) BIT(0)) 450189251Ssam#define HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW ((u8) BIT(0) | BIT(1)) 451189251Ssam#define HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH ((u8) BIT(2)) 452189251Ssam#define HT_INFO_HT_PARAM_RIFS_MODE ((u8) BIT(3)) 453189251Ssam#define HT_INFO_HT_PARAM_CTRL_ACCESS_ONLY ((u8) BIT(4)) 454189251Ssam#define HT_INFO_HT_PARAM_SRV_INTERVAL_GRANULARITY ((u8) BIT(5)) 455189251Ssam 456214734Srpaulo 457214734Srpaulo#define OP_MODE_PURE 0 458214734Srpaulo#define OP_MODE_MAY_BE_LEGACY_STAS 1 459214734Srpaulo#define OP_MODE_20MHZ_HT_STA_ASSOCED 2 460214734Srpaulo#define OP_MODE_MIXED 3 461214734Srpaulo 462189251Ssam#define HT_INFO_OPERATION_MODE_OP_MODE_MASK \ 463189251Ssam ((le16) (0x0001 | 0x0002)) 464189251Ssam#define HT_INFO_OPERATION_MODE_OP_MODE_OFFSET 0 465189251Ssam#define HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT ((u8) BIT(2)) 466189251Ssam#define HT_INFO_OPERATION_MODE_TRANSMIT_BURST_LIMIT ((u8) BIT(3)) 467189251Ssam#define HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT ((u8) BIT(4)) 468189251Ssam 469189251Ssam#define HT_INFO_STBC_PARAM_DUAL_BEACON ((u16) BIT(6)) 470189251Ssam#define HT_INFO_STBC_PARAM_DUAL_STBC_PROTECT ((u16) BIT(7)) 471189251Ssam#define HT_INFO_STBC_PARAM_SECONDARY_BCN ((u16) BIT(8)) 472189251Ssam#define HT_INFO_STBC_PARAM_LSIG_TXOP_PROTECT_ALLOWED ((u16) BIT(9)) 473189251Ssam#define HT_INFO_STBC_PARAM_PCO_ACTIVE ((u16) BIT(10)) 474189251Ssam#define HT_INFO_STBC_PARAM_PCO_PHASE ((u16) BIT(11)) 475189251Ssam 476189251Ssam 477189251Ssam#define OUI_MICROSOFT 0x0050f2 /* Microsoft (also used in Wi-Fi specs) 478189251Ssam * 00:50:F2 */ 479214734Srpaulo#define WPA_IE_VENDOR_TYPE 0x0050f201 480214734Srpaulo#define WPS_IE_VENDOR_TYPE 0x0050f204 481189251Ssam 482209158Srpaulo#define WMM_OUI_TYPE 2 483209158Srpaulo#define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0 484209158Srpaulo#define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1 485209158Srpaulo#define WMM_OUI_SUBTYPE_TSPEC_ELEMENT 2 486209158Srpaulo#define WMM_VERSION 1 487189251Ssam 488209158Srpaulo#define WMM_ACTION_CODE_ADDTS_REQ 0 489209158Srpaulo#define WMM_ACTION_CODE_ADDTS_RESP 1 490209158Srpaulo#define WMM_ACTION_CODE_DELTS 2 491189251Ssam 492209158Srpaulo#define WMM_ADDTS_STATUS_ADMISSION_ACCEPTED 0 493209158Srpaulo#define WMM_ADDTS_STATUS_INVALID_PARAMETERS 1 494209158Srpaulo/* 2 - Reserved */ 495209158Srpaulo#define WMM_ADDTS_STATUS_REFUSED 3 496209158Srpaulo/* 4-255 - Reserved */ 497189251Ssam 498209158Srpaulo/* WMM TSPEC Direction Field Values */ 499209158Srpaulo#define WMM_TSPEC_DIRECTION_UPLINK 0 500209158Srpaulo#define WMM_TSPEC_DIRECTION_DOWNLINK 1 501209158Srpaulo/* 2 - Reserved */ 502209158Srpaulo#define WMM_TSPEC_DIRECTION_BI_DIRECTIONAL 3 503189251Ssam 504214734Srpaulo/* 505214734Srpaulo * WMM Information Element (used in (Re)Association Request frames; may also be 506214734Srpaulo * used in Beacon frames) 507214734Srpaulo */ 508214734Srpaulostruct wmm_information_element { 509214734Srpaulo /* Element ID: 221 (0xdd); Length: 7 */ 510214734Srpaulo /* required fields for WMM version 1 */ 511214734Srpaulo u8 oui[3]; /* 00:50:f2 */ 512214734Srpaulo u8 oui_type; /* 2 */ 513214734Srpaulo u8 oui_subtype; /* 0 */ 514214734Srpaulo u8 version; /* 1 for WMM version 1.0 */ 515214734Srpaulo u8 qos_info; /* AP/STA specific QoS info */ 516189251Ssam 517214734Srpaulo} STRUCT_PACKED; 518214734Srpaulo 519214734Srpaulo#define WMM_AC_AIFSN_MASK 0x0f 520214734Srpaulo#define WMM_AC_AIFNS_SHIFT 0 521214734Srpaulo#define WMM_AC_ACM 0x10 522214734Srpaulo#define WMM_AC_ACI_MASK 0x60 523214734Srpaulo#define WMM_AC_ACI_SHIFT 5 524214734Srpaulo 525214734Srpaulo#define WMM_AC_ECWMIN_MASK 0x0f 526214734Srpaulo#define WMM_AC_ECWMIN_SHIFT 0 527214734Srpaulo#define WMM_AC_ECWMAX_MASK 0xf0 528214734Srpaulo#define WMM_AC_ECWMAX_SHIFT 4 529214734Srpaulo 530214734Srpaulostruct wmm_ac_parameter { 531214734Srpaulo u8 aci_aifsn; /* AIFSN, ACM, ACI */ 532214734Srpaulo u8 cw; /* ECWmin, ECWmax (CW = 2^ECW - 1) */ 533214734Srpaulo le16 txop_limit; 534214734Srpaulo} STRUCT_PACKED; 535214734Srpaulo 536214734Srpaulo/* 537214734Srpaulo * WMM Parameter Element (used in Beacon, Probe Response, and (Re)Association 538214734Srpaulo * Response frmaes) 539214734Srpaulo */ 540214734Srpaulostruct wmm_parameter_element { 541214734Srpaulo /* Element ID: 221 (0xdd); Length: 24 */ 542214734Srpaulo /* required fields for WMM version 1 */ 543214734Srpaulo u8 oui[3]; /* 00:50:f2 */ 544214734Srpaulo u8 oui_type; /* 2 */ 545214734Srpaulo u8 oui_subtype; /* 1 */ 546214734Srpaulo u8 version; /* 1 for WMM version 1.0 */ 547214734Srpaulo u8 qos_info; /* AP/STA specif QoS info */ 548214734Srpaulo u8 reserved; /* 0 */ 549214734Srpaulo struct wmm_ac_parameter ac[4]; /* AC_BE, AC_BK, AC_VI, AC_VO */ 550214734Srpaulo 551214734Srpaulo} STRUCT_PACKED; 552214734Srpaulo 553214734Srpaulo/* WMM TSPEC Element */ 554214734Srpaulostruct wmm_tspec_element { 555214734Srpaulo u8 eid; /* 221 = 0xdd */ 556214734Srpaulo u8 length; /* 6 + 55 = 61 */ 557214734Srpaulo u8 oui[3]; /* 00:50:f2 */ 558214734Srpaulo u8 oui_type; /* 2 */ 559214734Srpaulo u8 oui_subtype; /* 2 */ 560214734Srpaulo u8 version; /* 1 */ 561214734Srpaulo /* WMM TSPEC body (55 octets): */ 562214734Srpaulo u8 ts_info[3]; 563214734Srpaulo le16 nominal_msdu_size; 564214734Srpaulo le16 maximum_msdu_size; 565214734Srpaulo le32 minimum_service_interval; 566214734Srpaulo le32 maximum_service_interval; 567214734Srpaulo le32 inactivity_interval; 568214734Srpaulo le32 suspension_interval; 569214734Srpaulo le32 service_start_time; 570214734Srpaulo le32 minimum_data_rate; 571214734Srpaulo le32 mean_data_rate; 572214734Srpaulo le32 peak_data_rate; 573214734Srpaulo le32 maximum_burst_size; 574214734Srpaulo le32 delay_bound; 575214734Srpaulo le32 minimum_phy_rate; 576214734Srpaulo le16 surplus_bandwidth_allowance; 577214734Srpaulo le16 medium_time; 578214734Srpaulo} STRUCT_PACKED; 579214734Srpaulo 580214734Srpaulo 581214734Srpaulo/* Access Categories / ACI to AC coding */ 582214734Srpauloenum { 583214734Srpaulo WMM_AC_BE = 0 /* Best Effort */, 584214734Srpaulo WMM_AC_BK = 1 /* Background */, 585214734Srpaulo WMM_AC_VI = 2 /* Video */, 586214734Srpaulo WMM_AC_VO = 3 /* Voice */ 587214734Srpaulo}; 588214734Srpaulo 589214734Srpaulo 590189251Ssam#define OUI_BROADCOM 0x00904c /* Broadcom (Epigram) */ 591189251Ssam 592189251Ssam#define VENDOR_HT_CAPAB_OUI_TYPE 0x33 /* 00-90-4c:0x33 */ 593189251Ssam 594214734Srpaulo/* cipher suite selectors */ 595214734Srpaulo#define WLAN_CIPHER_SUITE_USE_GROUP 0x000FAC00 596214734Srpaulo#define WLAN_CIPHER_SUITE_WEP40 0x000FAC01 597214734Srpaulo#define WLAN_CIPHER_SUITE_TKIP 0x000FAC02 598214734Srpaulo/* reserved: 0x000FAC03 */ 599214734Srpaulo#define WLAN_CIPHER_SUITE_CCMP 0x000FAC04 600214734Srpaulo#define WLAN_CIPHER_SUITE_WEP104 0x000FAC05 601214734Srpaulo#define WLAN_CIPHER_SUITE_AES_CMAC 0x000FAC06 602214734Srpaulo 603214734Srpaulo/* AKM suite selectors */ 604214734Srpaulo#define WLAN_AKM_SUITE_8021X 0x000FAC01 605214734Srpaulo#define WLAN_AKM_SUITE_PSK 0x000FAC02 606214734Srpaulo 607189251Ssam#endif /* IEEE802_11_DEFS_H */ 608