Unit WiFi

From Ultibo.org
Revision as of 06:18, 6 August 2017 by Ultibo (Talk | contribs)

Jump to: navigation, search

Return to Unit Reference


Description


Ultibo WiFi (IEEE 802.11 / WPA) interface unit

To be documented

Constants



IEEE 802.11 specific constants IEEE80211_*
Note: As per Linux ieee80211.h
IEEE80211_FCS_LEN = 4;  
 
IEEE80211_FCTL_VERS = $0003;  
IEEE80211_FCTL_FTYPE = $000c;  
IEEE80211_FCTL_STYPE = $00f0;  
IEEE80211_FCTL_TODS = $0100;  
IEEE80211_FCTL_FROMDS = $0200;  
IEEE80211_FCTL_MOREFRAGS = $0400;  
IEEE80211_FCTL_RETRY = $0800;  
IEEE80211_FCTL_PM = $1000;  
IEEE80211_FCTL_MOREDATA = $2000;  
IEEE80211_FCTL_PROTECTED = $4000;  
IEEE80211_FCTL_ORDER = $8000;  
IEEE80211_FCTL_CTL_EXT = $0f00;  
 
IEEE80211_SCTL_FRAG = $000F;  
IEEE80211_SCTL_SEQ = $FFF0;  
 
IEEE80211_FTYPE_MGMT = $0000;  
IEEE80211_FTYPE_CTL = $0004;  
IEEE80211_FTYPE_DATA = $0008;  
IEEE80211_FTYPE_EXT = $000c;  


IEEE 802.11 management IEEE80211_STYPE_ASSOC_*
IEEE80211_STYPE_ASSOC_REQ = $0000;  
IEEE80211_STYPE_ASSOC_RESP = $0010;  
IEEE80211_STYPE_REASSOC_REQ = $0020;  
IEEE80211_STYPE_REASSOC_RESP = $0030;  
IEEE80211_STYPE_PROBE_REQ = $0040;  
IEEE80211_STYPE_PROBE_RESP = $0050;  
IEEE80211_STYPE_BEACON = $0080;  
IEEE80211_STYPE_ATIM = $0090;  
IEEE80211_STYPE_DISASSOC = $00A0;  
IEEE80211_STYPE_AUTH = $00B0;  
IEEE80211_STYPE_DEAUTH = $00C0;  
IEEE80211_STYPE_ACTION = $00D0;  


IEEE 802.11 control IEEE80211_STYPE_CTL_*
IEEE80211_STYPE_CTL_EXT = $0060;  
IEEE80211_STYPE_BACK_REQ = $0080;  
IEEE80211_STYPE_BACK = $0090;  
IEEE80211_STYPE_PSPOLL = $00A0;  
IEEE80211_STYPE_RTS = $00B0;  
IEEE80211_STYPE_CTS = $00C0;  
IEEE80211_STYPE_ACK = $00D0;  
IEEE80211_STYPE_CFEND = $00E0;  
IEEE80211_STYPE_CFENDACK = $00F0;  


IEEE 802.11 data IEEE80211_STYPE_DATA*
IEEE80211_STYPE_DATA = $0000;  
IEEE80211_STYPE_DATA_CFACK = $0010;  
IEEE80211_STYPE_DATA_CFPOLL = $0020;  
IEEE80211_STYPE_DATA_CFACKPOLL = $0030;  
IEEE80211_STYPE_NULLFUNC = $0040;  
IEEE80211_STYPE_CFACK = $0050;  
IEEE80211_STYPE_CFPOLL = $0060;  
IEEE80211_STYPE_CFACKPOLL = $0070;  
IEEE80211_STYPE_QOS_DATA = $0080;  
IEEE80211_STYPE_QOS_DATA_CFACK = $0090;  
IEEE80211_STYPE_QOS_DATA_CFPOLL = $00A0;  
IEEE80211_STYPE_QOS_DATA_CFACKPOLL = $00B0;  
IEEE80211_STYPE_QOS_NULLFUNC = $00C0;  
IEEE80211_STYPE_QOS_CFACK = $00D0;  
IEEE80211_STYPE_QOS_CFPOLL = $00E0;  
IEEE80211_STYPE_QOS_CFACKPOLL = $00F0;  


IEEE 802.11 extension IEEE80211_STYPE_DMG_*
Note: Extension added by 802.11ad
IEEE80211_STYPE_DMG_BEACON = $0000;  


IEEE 802.11 control extension IEEE80211_CTL_EXT_*
Note: Control extension - for IEEE80211_FTYPE_CTL | IEEE80211_STYPE_CTL_EXT
IEEE80211_CTL_EXT_POLL = $2000;  
IEEE80211_CTL_EXT_SPR = $3000;  
IEEE80211_CTL_EXT_GRANT = $4000;  
IEEE80211_CTL_EXT_DMG_CTS = $5000;  
IEEE80211_CTL_EXT_DMG_DTS = $6000;  
IEEE80211_CTL_EXT_SSW = $8000;  
IEEE80211_CTL_EXT_SSW_FBACK = $9000;  
IEEE80211_CTL_EXT_SSW_ACK = $a000;  


IEEE 802.11 miscellaneous constants IEEE80211_MAX_*, IEEE80211_NUM_*
IEEE80211_MAX_FRAG_THRESHOLD = 2352;  
IEEE80211_MAX_RTS_THRESHOLD = 2353;  
IEEE80211_MAX_AID = 2007;  
IEEE80211_MAX_TIM_LEN = 251;  
IEEE80211_MAX_MESH_PEERINGS = 63;  
Maximum size for the MA-UNITDATA primitive, 802.11 standard section 6.2.1.1.2.

802.11e clarifies the figure in section 7.1.2. The frame body is up to 2304 octets long (maximum MSDU size) plus any crypt overhead.

IEEE80211_MAX_DATA_LEN = 2304;  
802.11ad extends maximum MSDU size for DMG (freq > 40Ghz) networks to 7920 bytes, see 8.2.3 General frame format.
IEEE80211_MAX_DATA_LEN_DMG = 7920;  
 
30 byte 4 addr hdr, 2 byte QoS, 2304 byte MSDU, 12 byte crypt, 4 byte FCS
IEEE80211_MAX_FRAME_LEN = 2352;  
IEEE80211_MAX_SSID_LEN = 32;  
IEEE80211_MAX_MESH_ID_LEN = 32;  
 
IEEE80211_FIRST_TSPEC_TSID = 8;  
IEEE80211_NUM_TIDS = 16;  
 
IEEE80211_MAX_CHAINS = 4;  
 
Number of user priorities 802.11 uses
IEEE80211_NUM_UPS = 8;  


IEEE 802.11 QOS control lengths IEEE80211_QOS_CTL_LEN*
IEEE80211_QOS_CTL_LEN = 2;  


IEEE 802.11 QOS control masks IEEE80211_QOS_CTL_*_MASK*
IEEE80211_QOS_CTL_TAG1D_MASK = $0007; 1d tag mask
IEEE80211_QOS_CTL_TID_MASK = $000f; TID mask
IEEE80211_QOS_CTL_EOSP = $0010; EOSP
IEEE80211_QOS_CTL_ACK_POLICY_NORMAL = $0000; ACK policy
IEEE80211_QOS_CTL_ACK_POLICY_NOACK = $0020;  
IEEE80211_QOS_CTL_ACK_POLICY_NO_EXPL = $0040;  
IEEE80211_QOS_CTL_ACK_POLICY_BLOCKACK = $0060;  
IEEE80211_QOS_CTL_ACK_POLICY_MASK = $0060;  
IEEE80211_QOS_CTL_A_MSDU_PRESENT = $0080; A-MSDU 802.11n
IEEE80211_QOS_CTL_MESH_CONTROL_PRESENT = $0100; Mesh Control 802.11s
IEEE80211_QOS_CTL_MESH_PS_LEVEL = $0200; Mesh Power Save Level
IEEE80211_QOS_CTL_RSPI = $0400; Mesh Receiver Service Period Initiated


IEEE 802.11 WMM IE U-APSD queue sent by AP IEEE80211_WMM_IE_AP_*
IEEE80211_WMM_IE_AP_QOSINFO_UAPSD = (1 shl 7);  
IEEE80211_WMM_IE_AP_QOSINFO_PARAM_SET_CNT_MASK = $0f;  


IEEE 802.11 WMM IE U-APSD queue sent by STA IEEE80211_WMM_IE_STA_*
IEEE80211_WMM_IE_STA_QOSINFO_AC_VO = (1 shl 0);  
IEEE80211_WMM_IE_STA_QOSINFO_AC_VI = (1 shl 1);  
IEEE80211_WMM_IE_STA_QOSINFO_AC_BK = (1 shl 2);  
IEEE80211_WMM_IE_STA_QOSINFO_AC_BE = (1 shl 3);  
IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK = $0f;  


IEEE 802.11 WMM IE U-APSD max SP length sent by STA IEEE80211_WMM_IE_STA_*_SP_*
IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL = $00;  
IEEE80211_WMM_IE_STA_QOSINFO_SP_2 = $01;  
IEEE80211_WMM_IE_STA_QOSINFO_SP_4 = $02;  
IEEE80211_WMM_IE_STA_QOSINFO_SP_6 = $03;  
IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK = $03;  
IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT = 5;  


IEEE 802.11 HT control lengths IEEE80211_HT_CTL_LEN*
IEEE80211_HT_CTL_LEN = 4;  


IEEE 802.11 mesh flags IEEE80211_MESH_FLAGS_*
IEEE80211_MESH_FLAGS_AE_A4 = $1;  
IEEE80211_MESH_FLAGS_AE_A5_A6 = $2;  
IEEE80211_MESH_FLAGS_AE = $3;  
IEEE80211_MESH_FLAGS_PS_DEEP = $4;  


IEEE 802.11 mesh PREQ element flags IEEE80211_PREQ_PROACTIVE_*_FLAG*
IEEE80211_PREQ_PROACTIVE_PREP_FLAG = (1 shl 2); Proactive PREP subfield


IEEE 802.11 mesh PREQ element per target flags IEEE80211_PREQ_*_FLAG*
IEEE80211_PREQ_TO_FLAG = (1 shl 0); Target only subfield
IEEE80211_PREQ_USN_FLAG = (1 shl 2); Unknown target HWMP sequence number subfield


IEEE 802.11 mesh configuration IE capability field flags IEEE80211_MESHCONF_CAPAB_*
IEEE80211_MESHCONF_CAPAB_ACCEPT_PLINKS = $01; STA is willing to establish additional mesh peerings with other mesh STAs
IEEE80211_MESHCONF_CAPAB_FORWARDING = $08; The STA forwards MSDUs
IEEE80211_MESHCONF_CAPAB_TBTT_ADJUSTING = $20; TBTT adjustment procedure is ongoing
IEEE80211_MESHCONF_CAPAB_POWER_SAVE_LEVEL = $40; STA is in deep sleep mode or has neighbors in deep sleep mode


WLAN mesh channel switch parameters flags WLAN_EID_CHAN_SWITCH_PARAM_*
WLAN_EID_CHAN_SWITCH_PARAM_TX_RESTRICT = (1 shl 0);  
WLAN_EID_CHAN_SWITCH_PARAM_INITIATOR = (1 shl 1);  
WLAN_EID_CHAN_SWITCH_PARAM_REASON = (1 shl 2);  


IEEE 802.11 root announcement flags IEEE80211_RANN_FLAG_*
IEEE80211_RANN_FLAG_IS_GATE = (1 shl 0);  


IEEE 802.11 HT channel width values IEEE80211_HT_CHANWIDTH_*
IEEE80211_HT_CHANWIDTH_20MHZ = 0;  
IEEE80211_HT_CHANWIDTH_ANY = 1;  


IEEE 802.11 VHT operating mode field bits IEEE80211_OPMODE_*
IEEE80211_OPMODE_NOTIF_CHANWIDTH_MASK = 3;  
IEEE80211_OPMODE_NOTIF_CHANWIDTH_20MHZ = 0;  
IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ = 1;  
IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ = 2;  
IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ = 3;  
IEEE80211_OPMODE_NOTIF_RX_NSS_MASK = $70;  
IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT = 4;  
IEEE80211_OPMODE_NOTIF_RX_NSS_TYPE_BF = $80;  


WLAN SA query length WLAN_SA_QUERY_*_*_LEN*
WLAN_SA_QUERY_TR_ID_LEN = 2;  


IEEE 802.11 supported rate values IEEE80211_BSS_*
Note: Supported Rates value encodings in 802.11n-2009 7.3.2.2
IEEE80211_BSS_MEMBERSHIP_SELECTOR_HT_PHY = 127;  


IEEE 802.11 peer-to-peer attribute related definitions IEEE80211_P2P_*
IEEE80211_P2P_ATTR_STATUS = 0;  
IEEE80211_P2P_ATTR_MINOR_REASON = 1;  
IEEE80211_P2P_ATTR_CAPABILITY = 2;  
IEEE80211_P2P_ATTR_DEVICE_ID = 3;  
IEEE80211_P2P_ATTR_GO_INTENT = 4;  
IEEE80211_P2P_ATTR_GO_CONFIG_TIMEOUT = 5;  
IEEE80211_P2P_ATTR_LISTEN_CHANNEL = 6;  
IEEE80211_P2P_ATTR_GROUP_BSSID = 7;  
IEEE80211_P2P_ATTR_EXT_LISTEN_TIMING = 8;  
IEEE80211_P2P_ATTR_INTENDED_IFACE_ADDR = 9;  
IEEE80211_P2P_ATTR_MANAGABILITY = 10;  
IEEE80211_P2P_ATTR_CHANNEL_LIST = 11;  
IEEE80211_P2P_ATTR_ABSENCE_NOTICE = 12;  
IEEE80211_P2P_ATTR_DEVICE_INFO = 13;  
IEEE80211_P2P_ATTR_GROUP_INFO = 14;  
IEEE80211_P2P_ATTR_GROUP_ID = 15;  
IEEE80211_P2P_ATTR_INTERFACE = 16;  
IEEE80211_P2P_ATTR_OPER_CHANNEL = 17;  
IEEE80211_P2P_ATTR_INVITE_FLAGS = 18;  
19 - 220: Reserved
IEEE80211_P2P_ATTR_VENDOR_SPECIFIC = 221;  
 
IEEE80211_P2P_ATTR_MAX = 222;  
 
IEEE80211_P2P_NOA_DESC_MAX = 4;  
 
IEEE80211_P2P_OPPPS_ENABLE_BIT = (1 shl 7);  
IEEE80211_P2P_OPPPS_CTWINDOW_MASK = $7F;  


IEEE 802.11 BAR control masks IEEE80211_BAR_CTRL_*
IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL = $0000;  
IEEE80211_BAR_CTRL_MULTI_TID = $0002;  
IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA = $0004;  
IEEE80211_BAR_CTRL_TID_INFO_MASK = $f000;  
IEEE80211_BAR_CTRL_TID_INFO_SHIFT = 12;  


IEEE 802.11 HT MCS lengths IEEE80211_HT_MCS_*_LEN*
IEEE80211_HT_MCS_MASK_LEN = 10;  


IEEE 802.11 HT MCS capability settings IEEE80211_HT_MCS_*
IEEE80211_HT_MCS_RX_HIGHEST_MASK = $3ff;  
IEEE80211_HT_MCS_TX_DEFINED = $01;  
IEEE80211_HT_MCS_TX_RX_DIFF = $02;  
IEEE80211_HT_MCS_TX_MAX_STREAMS_MASK = $0C; value 0 == 1 stream etc
IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT = 2;  
IEEE80211_HT_MCS_TX_MAX_STREAMS = 4;  
IEEE80211_HT_MCS_TX_UNEQUAL_MODULATION = $10;  
802.11n D5.0 20.3.5 / 20.6 says:

- indices 0 to 7 and 32 are single spatial stream
- 8 to 31 are multiple spatial streams using equal modulation

[8..15 for two streams, 16..23 for three and 24..31 for four]

- remainder are multiple spatial streams using unequal modulation

IEEE80211_HT_MCS_UNEQUAL_MODULATION_START = 33;  
IEEE80211_HT_MCS_UNEQUAL_MODULATION_START_BYTE = (IEEE80211_HT_MCS_UNEQUAL_MODULATION_START div 8);  


IEEE 802.11 HT capabilities masks IEEE80211_HT_CAP_*
Note: For CapabilitiesInfo
IEEE80211_HT_CAP_LDPC_CODING = $0001;  
IEEE80211_HT_CAP_SUP_WIDTH_20_40 = $0002;  
IEEE80211_HT_CAP_SM_PS = $000C;  
IEEE80211_HT_CAP_SM_PS_SHIFT = 2;  
IEEE80211_HT_CAP_GRN_FLD = $0010;  
IEEE80211_HT_CAP_SGI_20 = $0020;  
IEEE80211_HT_CAP_SGI_40 = $0040;  
IEEE80211_HT_CAP_TX_STBC = $0080;  
IEEE80211_HT_CAP_RX_STBC = $0300;  
IEEE80211_HT_CAP_RX_STBC_SHIFT = 8;  
IEEE80211_HT_CAP_DELAY_BA = $0400;  
IEEE80211_HT_CAP_MAX_AMSDU = $0800;  
IEEE80211_HT_CAP_DSSSCCK40 = $1000;  
IEEE80211_HT_CAP_RESERVED = $2000;  
IEEE80211_HT_CAP_40MHZ_INTOLERANT = $4000;  
IEEE80211_HT_CAP_LSIG_TXOP_PROT = $8000;  


IEEE 802.11 HT extended capabilities masks IEEE80211_HT_EXT_CAP_*
Note: For ExtendedHTCapInfo
IEEE80211_HT_EXT_CAP_PCO = $0001;  
IEEE80211_HT_EXT_CAP_PCO_TIME = $0006;  
IEEE80211_HT_EXT_CAP_PCO_TIME_SHIFT = 1;  
IEEE80211_HT_EXT_CAP_MCS_FB = $0300;  
IEEE80211_HT_EXT_CAP_MCS_FB_SHIFT = 8;  
IEEE80211_HT_EXT_CAP_HTC_SUP = $0400;  
IEEE80211_HT_EXT_CAP_RD_RESPONDER = $0800;  


IEEE 802.11 HT AMPDU capability settings IEEE80211_HT_AMPDU_PARM_*
Note: For AMPDUParamsInfo
IEEE80211_HT_AMPDU_PARM_FACTOR = $03;  
IEEE80211_HT_AMPDU_PARM_DENSITY = $1C;  
IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT = 2;  


IEEE 802.11 HT maximum lengths IEEE80211_HT_MAX_AMPDU_*
Note: Maximum length of AMPDU that the STA can receive in high-throughput (HT). Length = 2 ^ (13 + max_ampdu_length_exp) - 1 (octets)

As per Linux ieee80211.h ieee80211_max_ampdu_length_exp

IEEE80211_HT_MAX_AMPDU_8K = 0;  
IEEE80211_HT_MAX_AMPDU_16K = 1;  
IEEE80211_HT_MAX_AMPDU_32K = 2;  
IEEE80211_HT_MAX_AMPDU_64K = 3;  


IEEE 802.11 VHT maximum lengths IEEE80211_VHT_MAX_AMPDU_*
Note: Maximum length of AMPDU that the STA can receive in VHT.Length = 2 ^ (13 + max_ampdu_length_exp) - 1 (octets)

As per Linux ieee80211.h ieee80211_vht_max_ampdu_length_exp

IEEE80211_VHT_MAX_AMPDU_8K = 0;  
IEEE80211_VHT_MAX_AMPDU_16K = 1;  
IEEE80211_VHT_MAX_AMPDU_32K = 2;  
IEEE80211_VHT_MAX_AMPDU_64K = 3;  
IEEE80211_VHT_MAX_AMPDU_128K = 4;  
IEEE80211_VHT_MAX_AMPDU_256K = 5;  
IEEE80211_VHT_MAX_AMPDU_512K = 6;  
IEEE80211_VHT_MAX_AMPDU_1024K = 7;  
 
IEEE80211_HT_MAX_AMPDU_FACTOR = 13;  


IEEE 802.11 HT MPDU start spacing IEEE80211_HT_MPDU_DENSITY_*
Note: Minimum MPDU start spacing

As per Linux ieee80211.h ieee80211_min_mpdu_spacing

IEEE80211_HT_MPDU_DENSITY_NONE = 0; No restriction
IEEE80211_HT_MPDU_DENSITY_0_25 = 1; 1/4 usec
IEEE80211_HT_MPDU_DENSITY_0_5 = 2; 1/2 usec
IEEE80211_HT_MPDU_DENSITY_1 = 3; 1 usec
IEEE80211_HT_MPDU_DENSITY_2 = 4; 2 usec
IEEE80211_HT_MPDU_DENSITY_4 = 5; 4 usec
IEEE80211_HT_MPDU_DENSITY_8 = 6; 8 usec
IEEE80211_HT_MPDU_DENSITY_16 = 7; 16 usec


IEEE 802.11 HT operation parameters IEEE80211_HT_PARAM_*
Note: For HT operation IE HTParam
IEEE80211_HT_PARAM_CHA_SEC_OFFSET = $03;  
IEEE80211_HT_PARAM_CHA_SEC_NONE = $00;  
IEEE80211_HT_PARAM_CHA_SEC_ABOVE = $01;  
IEEE80211_HT_PARAM_CHA_SEC_BELOW = $03;  
IEEE80211_HT_PARAM_CHAN_WIDTH_ANY = $04;  
IEEE80211_HT_PARAM_RIFS_MODE = $08;  


IEEE 802.11 HT operation modes IEEE80211_HT_OP_MODE_*
Note: For HT operation IE OperationMode
IEEE80211_HT_OP_MODE_PROTECTION = $0003;  
IEEE80211_HT_OP_MODE_PROTECTION_NONE = 0;  
IEEE80211_HT_OP_MODE_PROTECTION_NONMEMBER = 1;  
IEEE80211_HT_OP_MODE_PROTECTION_20MHZ = 2;  
IEEE80211_HT_OP_MODE_PROTECTION_NONHT_MIXED = 3;  
IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT = $0004;  
IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT = $0010;  


IEEE 802.11 HT STBC parameters IEEE80211_HT_STBC_PARAM_*
Note: For HT operation IE STBCParam
IEEE80211_HT_STBC_PARAM_DUAL_BEACON = $0040;  
IEEE80211_HT_STBC_PARAM_DUAL_CTS_PROT = $0080;  
IEEE80211_HT_STBC_PARAM_STBC_BEACON = $0100;  
IEEE80211_HT_STBC_PARAM_LSIG_TXOP_FULLPROT = $0200;  
IEEE80211_HT_STBC_PARAM_PCO_ACTIVE = $0400;  
IEEE80211_HT_STBC_PARAM_PCO_PHASE = $0800;  


IEEE 802.11 block-ack parameters IEEE80211_*_PARAM_*
IEEE80211_ADDBA_PARAM_AMSDU_MASK = $0001;  
IEEE80211_ADDBA_PARAM_POLICY_MASK = $0002;  
IEEE80211_ADDBA_PARAM_TID_MASK = $003C;  
IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK = $FFC0;  
IEEE80211_DELBA_PARAM_TID_MASK = $F000;  
IEEE80211_DELBA_PARAM_INITIATOR_MASK = $0800;  


IEEE 802.11 A-PMDU buffer sizes IEEE80211_*_AMPDU_BUF*
Note: According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2)
IEEE80211_MIN_AMPDU_BUF = $8;  
IEEE80211_MAX_AMPDU_BUF = $40;  


WLAN HT spatial multiplexing power save modes WLAN_HT_CAP_SM_PS_*
Note: Spatial Multiplexing Power Save Modes (for capability)
WLAN_HT_CAP_SM_PS_STATIC = 0;  
WLAN_HT_CAP_SM_PS_DYNAMIC = 1;  
WLAN_HT_CAP_SM_PS_INVALID = 2;  
WLAN_HT_CAP_SM_PS_DISABLED = 3;  


WLAN HT SM power control fields WLAN_HT_SMPS_CONTROL_*
Note: For SM power control field lower two bits
WLAN_HT_SMPS_CONTROL_DISABLED = 0;  
WLAN_HT_SMPS_CONTROL_STATIC = 1;  
WLAN_HT_SMPS_CONTROL_DYNAMIC = 3;  


IEEE 802.11 VHT MCS support definitions IEEE80211_VHT_MCS_SUPPORT_*
Note: These definitions are used in each 2-bit subfield of the RXMCSMap and TXMCSMap fields of TIEEE8021VHTMCSInfo, which are both split into 8 subfields by number of streams. These values indicate which MCSes are supported for the number of streams the value appears for.
IEEE80211_VHT_MCS_SUPPORT_0_7 = 0; MCSes 0-7 are supported for the number of streams
IEEE80211_VHT_MCS_SUPPORT_0_8 = 1; MCSes 0-8 are supported
IEEE80211_VHT_MCS_SUPPORT_0_9 = 2; MCSes 0-9 are supported
IEEE80211_VHT_MCS_NOT_SUPPORTED = 3; This number of streams isn't supported


IEEE 802.11 VHT channel width IEEE80211_VHT_CHANWIDTH_*
IEEE80211_VHT_CHANWIDTH_USE_HT = 0; Use the HT operation IE to determine the channel width (20 or 40 MHz)
IEEE80211_VHT_CHANWIDTH_80MHZ = 1; 80 MHz bandwidth
IEEE80211_VHT_CHANWIDTH_160MHZ = 2; 160 MHz bandwidth
IEEE80211_VHT_CHANWIDTH_80P80MHZ = 3; 80+80 MHz bandwidth


IEEE 802.11 VHT capabilities IEEE80211_VHT_CAP_*
IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 = $00000000;  
IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 = $00000001;  
IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 = $00000002;  
IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ = $00000004;  
IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ = $00000008;  
IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK = $0000000C;  
IEEE80211_VHT_CAP_RXLDPC = $00000010;  
IEEE80211_VHT_CAP_SHORT_GI_80 = $00000020;  
IEEE80211_VHT_CAP_SHORT_GI_160 = $00000040;  
IEEE80211_VHT_CAP_TXSTBC = $00000080;  
IEEE80211_VHT_CAP_RXSTBC_1 = $00000100;  
IEEE80211_VHT_CAP_RXSTBC_2 = $00000200;  
IEEE80211_VHT_CAP_RXSTBC_3 = $00000300;  
IEEE80211_VHT_CAP_RXSTBC_4 = $00000400;  
IEEE80211_VHT_CAP_RXSTBC_MASK = $00000700;  
IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE = $00000800;  
IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE = $00001000;  
IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT = 13;  
IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK = (7 shl IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT);  
IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT = 16;  
IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK = (7 shl IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT);  
IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE = $00080000;  
IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE = $00100000;  
IEEE80211_VHT_CAP_VHT_TXOP_PS = $00200000;  
IEEE80211_VHT_CAP_HTC_VHT = $00400000;  
IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT = 23;  
IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK = (7 shl IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT);  
IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_UNSOL_MFB = $08000000;  
IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB = $0c000000;  
IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN = $10000000;  
IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN = $20000000;  


WLAN authentication algorithms WLAN_AUTH_*
WLAN_AUTH_OPEN = 0;  
WLAN_AUTH_SHARED_KEY = 1;  
WLAN_AUTH_FT = 2;  
WLAN_AUTH_SAE = 3;  
WLAN_AUTH_LEAP = 128;  
 
WLAN_AUTH_CHALLENGE_LEN = 128;  


WLAN capabilities WLAN_CAPABILITY_*
WLAN_CAPABILITY_ESS = (1 shl 0);  
WLAN_CAPABILITY_IBSS = (1 shl 1);  
 
Note: A mesh STA sets the ESS and IBSS capability bits to zero. However, this holds true for p2p probe responses (in the p2p_find phase) as well.
WLAN_CAPABILITY_CF_POLLABLE = (1 shl 2);  
WLAN_CAPABILITY_CF_POLL_REQUEST = (1 shl 3);  
WLAN_CAPABILITY_PRIVACY = (1 shl 4);  
WLAN_CAPABILITY_SHORT_PREAMBLE = (1 shl 5);  
WLAN_CAPABILITY_PBCC = (1 shl 6);  
WLAN_CAPABILITY_CHANNEL_AGILITY = (1 shl 7);  
802.11h
WLAN_CAPABILITY_SPECTRUM_MGMT = (1 shl 8);  
WLAN_CAPABILITY_QOS = (1 shl 9);  
WLAN_CAPABILITY_SHORT_SLOT_TIME = (1 shl 10);  
WLAN_CAPABILITY_APSD = (1 shl 11);  
WLAN_CAPABILITY_RADIO_MEASURE = (1 shl 12);  
WLAN_CAPABILITY_DSSS_OFDM = (1 shl 13);  
WLAN_CAPABILITY_DEL_BACK = (1 shl 14);  
WLAN_CAPABILITY_IMM_BACK = (1 shl 15);  
 
DMG (60gHz) 802.11ad
Type - bits 0..1
WLAN_CAPABILITY_DMG_TYPE_MASK = (3 shl 0);  
WLAN_CAPABILITY_DMG_TYPE_IBSS = (1 shl 0); Tx by: STA
WLAN_CAPABILITY_DMG_TYPE_PBSS = (2 shl 0); Tx by: PCP
WLAN_CAPABILITY_DMG_TYPE_AP = (3 shl 0); Tx by: AP
 
WLAN_CAPABILITY_DMG_CBAP_ONLY = (1 shl 2);  
WLAN_CAPABILITY_DMG_CBAP_SOURCE = (1 shl 3);  
WLAN_CAPABILITY_DMG_PRIVACY = (1 shl 4);  
WLAN_CAPABILITY_DMG_ECPAC = (1 shl 5);  
 
WLAN_CAPABILITY_DMG_SPECTRUM_MGMT = (1 shl 8);  
WLAN_CAPABILITY_DMG_RADIO_MEASURE = (1 shl 12);  


IEEE 802.11 spectrum measurement IEEE80211_SPCT_MSR_*
IEEE80211_SPCT_MSR_RPRT_MODE_LATE = (1 shl 0);  
IEEE80211_SPCT_MSR_RPRT_MODE_INCAPABLE = (1 shl 1);  
IEEE80211_SPCT_MSR_RPRT_MODE_REFUSED = (1 shl 2);  
 
IEEE80211_SPCT_MSR_RPRT_TYPE_BASIC = 0;  
IEEE80211_SPCT_MSR_RPRT_TYPE_CCA = 1;  
IEEE80211_SPCT_MSR_RPRT_TYPE_RPI = 2;  


WLAN ERP information element WLAN_ERP_*
WLAN_ERP_NON_ERP_PRESENT = (1 shl 0);  
WLAN_ERP_USE_PROTECTION = (1 shl 1);  
WLAN_ERP_BARKER_PREAMBLE = (1 shl 2);  


WLAN ERP barker preamble values WLAN_ERP_PREAMBLE_*
WLAN_ERP_PREAMBLE_SHORT = 0;  
WLAN_ERP_PREAMBLE_LONG = 1;  


IEEE 802.11 band Id IEEE80211_BANDID_*
Note: 802.11ad #8.4.1.45
IEEE80211_BANDID_TV_WS = 0; TV white spaces
IEEE80211_BANDID_SUB1 = 1; Sub-1 GHz (excluding TV white spaces)
IEEE80211_BANDID_2G = 2; 2.4 GHz
IEEE80211_BANDID_3G = 3; 3.6 GHz
IEEE80211_BANDID_5G = 4; 4.9 and 5 GHz
IEEE80211_BANDID_60G = 5; 60 GHz


WLAN status codes WLAN_STATUS_*
WLAN_STATUS_SUCCESS = 0;  
WLAN_STATUS_UNSPECIFIED_FAILURE = 1;  
WLAN_STATUS_CAPS_UNSUPPORTED = 10;  
WLAN_STATUS_REASSOC_NO_ASSOC = 11;  
WLAN_STATUS_ASSOC_DENIED_UNSPEC = 12;  
WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG = 13;  
WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION = 14;  
WLAN_STATUS_CHALLENGE_FAIL = 15;  
WLAN_STATUS_AUTH_TIMEOUT = 16;  
WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17;  
WLAN_STATUS_ASSOC_DENIED_RATES = 18;  
802.11b
WLAN_STATUS_ASSOC_DENIED_NOSHORTPREAMBLE = 19;  
WLAN_STATUS_ASSOC_DENIED_NOPBCC = 20;  
WLAN_STATUS_ASSOC_DENIED_NOAGILITY = 21;  
802.11h
WLAN_STATUS_ASSOC_DENIED_NOSPECTRUM = 22;  
WLAN_STATUS_ASSOC_REJECTED_BAD_POWER = 23;  
WLAN_STATUS_ASSOC_REJECTED_BAD_SUPP_CHAN = 24;  
802.11g
WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25;  
WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26;  
802.11w
WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY = 30;  
WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION = 31;  
802.11i
WLAN_STATUS_INVALID_IE = 40;  
WLAN_STATUS_INVALID_GROUP_CIPHER = 41;  
WLAN_STATUS_INVALID_PAIRWISE_CIPHER = 42;  
WLAN_STATUS_INVALID_AKMP = 43;  
WLAN_STATUS_UNSUPP_RSN_VERSION = 44;  
WLAN_STATUS_INVALID_RSN_IE_CAP = 45;  
WLAN_STATUS_CIPHER_SUITE_REJECTED = 46;  
802.11e
WLAN_STATUS_UNSPECIFIED_QOS = 32;  
WLAN_STATUS_ASSOC_DENIED_NOBANDWIDTH = 33;  
WLAN_STATUS_ASSOC_DENIED_LOWACK = 34;  
WLAN_STATUS_ASSOC_DENIED_UNSUPP_QOS = 35;  
WLAN_STATUS_REQUEST_DECLINED = 37;  
WLAN_STATUS_INVALID_QOS_PARAM = 38;  
WLAN_STATUS_CHANGE_TSPEC = 39;  
WLAN_STATUS_WAIT_TS_DELAY = 47;  
WLAN_STATUS_NO_DIRECT_LINK = 48;  
WLAN_STATUS_STA_NOT_PRESENT = 49;  
WLAN_STATUS_STA_NOT_QSTA = 50;  
802.11s
WLAN_STATUS_ANTI_CLOG_REQUIRED = 76;  
WLAN_STATUS_FCG_NOT_SUPP = 78;  
WLAN_STATUS_STA_NO_TBTT = 78;  
802.11ad
WLAN_STATUS_REJECTED_WITH_SUGGESTED_CHANGES = 39;  
WLAN_STATUS_REJECTED_FOR_DELAY_PERIOD = 47;  
WLAN_STATUS_REJECT_WITH_SCHEDULE = 83;  
WLAN_STATUS_PENDING_ADMITTING_FST_SESSION = 86;  
WLAN_STATUS_PERFORMING_FST_NOW = 87;  
WLAN_STATUS_PENDING_GAP_IN_BA_WINDOW = 88;  
WLAN_STATUS_REJECT_U_PID_SETTING = 89;  
WLAN_STATUS_REJECT_DSE_BAND = 96;  
WLAN_STATUS_DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL = 99;  
WLAN_STATUS_DENIED_DUE_TO_SPECTRUM_MANAGEMENT = 103;  


WLAN reason codes WLAN_REASON_*
WLAN_REASON_UNSPECIFIED = 1;  
WLAN_REASON_PREV_AUTH_NOT_VALID = 2;  
WLAN_REASON_DEAUTH_LEAVING = 3;  
WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY = 4;  
WLAN_REASON_DISASSOC_AP_BUSY = 5;  
WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA = 6;  
WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA = 7;  
WLAN_REASON_DISASSOC_STA_HAS_LEFT = 8;  
WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH = 9;  
802.11h
WLAN_REASON_DISASSOC_BAD_POWER = 10;  
WLAN_REASON_DISASSOC_BAD_SUPP_CHAN = 11;  
802.11i
WLAN_REASON_INVALID_IE = 13;  
WLAN_REASON_MIC_FAILURE = 14;  
WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT = 15;  
WLAN_REASON_GROUP_KEY_HANDSHAKE_TIMEOUT = 16;  
WLAN_REASON_IE_DIFFERENT = 17;  
WLAN_REASON_INVALID_GROUP_CIPHER = 18;  
WLAN_REASON_INVALID_PAIRWISE_CIPHER = 19;  
WLAN_REASON_INVALID_AKMP = 20;  
WLAN_REASON_UNSUPP_RSN_VERSION = 21;  
WLAN_REASON_INVALID_RSN_IE_CAP = 22;  
WLAN_REASON_IEEE8021X_FAILED = 23;  
WLAN_REASON_CIPHER_SUITE_REJECTED = 24;  
TDLS (802.11z)
WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE = 25;  
WLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED = 26;  
802.11e
WLAN_REASON_DISASSOC_UNSPECIFIED_QOS = 32;  
WLAN_REASON_DISASSOC_QAP_NO_BANDWIDTH = 33;  
WLAN_REASON_DISASSOC_LOW_ACK = 34;  
WLAN_REASON_DISASSOC_QAP_EXCEED_TXOP = 35;  
WLAN_REASON_QSTA_LEAVE_QBSS = 36;  
WLAN_REASON_QSTA_NOT_USE = 37;  
WLAN_REASON_QSTA_REQUIRE_SETUP = 38;  
WLAN_REASON_QSTA_TIMEOUT = 39;  
WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45;  
802.11s
WLAN_REASON_MESH_PEER_CANCELED = 52;  
WLAN_REASON_MESH_MAX_PEERS = 53;  
WLAN_REASON_MESH_CONFIG = 54;  
WLAN_REASON_MESH_CLOSE = 55;  
WLAN_REASON_MESH_MAX_RETRIES = 56;  
WLAN_REASON_MESH_CONFIRM_TIMEOUT = 57;  
WLAN_REASON_MESH_INVALID_GTK = 58;  
WLAN_REASON_MESH_INCONSISTENT_PARAM = 59;  
WLAN_REASON_MESH_INVALID_SECURITY = 60;  
WLAN_REASON_MESH_PATH_ERROR = 61;  
WLAN_REASON_MESH_PATH_NOFORWARD = 62;  
WLAN_REASON_MESH_PATH_DEST_UNREACHABLE = 63;  
WLAN_REASON_MAC_EXISTS_IN_MBSS = 64;  
WLAN_REASON_MESH_CHAN_REGULATORY = 65;  
WLAN_REASON_MESH_CHAN = 66;  


WLAN information element Ids WLAN_EID_*
WLAN_EID_SSID = 0;  
WLAN_EID_SUPP_RATES = 1;  
WLAN_EID_FH_PARAMS = 2; reserved now
WLAN_EID_DS_PARAMS = 3;  
WLAN_EID_CF_PARAMS = 4;  
WLAN_EID_TIM = 5;  
WLAN_EID_IBSS_PARAMS = 6;  
WLAN_EID_COUNTRY = 7;  
8-9 reserved
WLAN_EID_REQUEST = 10;  
WLAN_EID_QBSS_LOAD = 11;  
WLAN_EID_EDCA_PARAM_SET = 12;  
WLAN_EID_TSPEC = 13;  
WLAN_EID_TCLAS = 14;  
WLAN_EID_SCHEDULE = 15;  
WLAN_EID_CHALLENGE = 16;  
17-31 reserved for challenge text extension
WLAN_EID_PWR_CONSTRAINT = 32;  
WLAN_EID_PWR_CAPABILITY = 33;  
WLAN_EID_TPC_REQUEST = 34;  
WLAN_EID_TPC_REPORT = 35;  
WLAN_EID_SUPPORTED_CHANNELS = 36;  
WLAN_EID_CHANNEL_SWITCH = 37;  
WLAN_EID_MEASURE_REQUEST = 38;  
WLAN_EID_MEASURE_REPORT = 39;  
WLAN_EID_QUIET = 40;  
WLAN_EID_IBSS_DFS = 41;  
WLAN_EID_ERP_INFO = 42;  
WLAN_EID_TS_DELAY = 43;  
WLAN_EID_TCLAS_PROCESSING = 44;  
WLAN_EID_HT_CAPABILITY = 45;  
WLAN_EID_QOS_CAPA = 46;  
47 reserved for Broadcom
WLAN_EID_RSN = 48;  
WLAN_EID_802_15_COEX = 49;  
WLAN_EID_EXT_SUPP_RATES = 50;  
WLAN_EID_AP_CHAN_REPORT = 51;  
WLAN_EID_NEIGHBOR_REPORT = 52;  
WLAN_EID_RCPI = 53;  
WLAN_EID_MOBILITY_DOMAIN = 54;  
WLAN_EID_FAST_BSS_TRANSITION = 55;  
WLAN_EID_TIMEOUT_INTERVAL = 56;  
WLAN_EID_RIC_DATA = 57;  
WLAN_EID_DSE_REGISTERED_LOCATION = 58;  
WLAN_EID_SUPPORTED_REGULATORY_CLASSES = 59;  
WLAN_EID_EXT_CHANSWITCH_ANN = 60;  
WLAN_EID_HT_OPERATION = 61;  
WLAN_EID_SECONDARY_CHANNEL_OFFSET = 62;  
WLAN_EID_BSS_AVG_ACCESS_DELAY = 63;  
WLAN_EID_ANTENNA_INFO = 64;  
WLAN_EID_RSNI = 65;  
WLAN_EID_MEASUREMENT_PILOT_TX_INFO = 66;  
WLAN_EID_BSS_AVAILABLE_CAPACITY = 67;  
WLAN_EID_BSS_AC_ACCESS_DELAY = 68;  
WLAN_EID_TIME_ADVERTISEMENT = 69;  
WLAN_EID_RRM_ENABLED_CAPABILITIES = 70;  
WLAN_EID_MULTIPLE_BSSID = 71;  
WLAN_EID_BSS_COEX_2040 = 72;  
WLAN_EID_BSS_INTOLERANT_CHL_REPORT = 73;  
WLAN_EID_OVERLAP_BSS_SCAN_PARAM = 74;  
WLAN_EID_RIC_DESCRIPTOR = 75;  
WLAN_EID_MMIE = 76;  
WLAN_EID_ASSOC_COMEBACK_TIME = 77;  
WLAN_EID_EVENT_REQUEST = 78;  
WLAN_EID_EVENT_REPORT = 79;  
WLAN_EID_DIAGNOSTIC_REQUEST = 80;  
WLAN_EID_DIAGNOSTIC_REPORT = 81;  
WLAN_EID_LOCATION_PARAMS = 82;  
WLAN_EID_NON_TX_BSSID_CAP = 83;  
WLAN_EID_SSID_LIST = 84;  
WLAN_EID_MULTI_BSSID_IDX = 85;  
WLAN_EID_FMS_DESCRIPTOR = 86;  
WLAN_EID_FMS_REQUEST = 87;  
WLAN_EID_FMS_RESPONSE = 88;  
WLAN_EID_QOS_TRAFFIC_CAPA = 89;  
WLAN_EID_BSS_MAX_IDLE_PERIOD = 90;  
WLAN_EID_TSF_REQUEST = 91;  
WLAN_EID_TSF_RESPOSNE = 92;  
WLAN_EID_WNM_SLEEP_MODE = 93;  
WLAN_EID_TIM_BCAST_REQ = 94;  
WLAN_EID_TIM_BCAST_RESP = 95;  
WLAN_EID_COLL_IF_REPORT = 96;  
WLAN_EID_CHANNEL_USAGE = 97;  
WLAN_EID_TIME_ZONE = 98;  
WLAN_EID_DMS_REQUEST = 99;  
WLAN_EID_DMS_RESPONSE = 100;  
WLAN_EID_LINK_ID = 101;  
WLAN_EID_WAKEUP_SCHEDUL = 102;  
103 reserved
WLAN_EID_CHAN_SWITCH_TIMING = 104;  
WLAN_EID_PTI_CONTROL = 105;  
WLAN_EID_PU_BUFFER_STATUS = 106;  
WLAN_EID_INTERWORKING = 107;  
WLAN_EID_ADVERTISEMENT_PROTOCOL = 108;  
WLAN_EID_EXPEDITED_BW_REQ = 109;  
WLAN_EID_QOS_MAP_SET = 110;  
WLAN_EID_ROAMING_CONSORTIUM = 111;  
WLAN_EID_EMERGENCY_ALERT = 112;  
WLAN_EID_MESH_CONFIG = 113;  
WLAN_EID_MESH_ID = 114;  
WLAN_EID_LINK_METRIC_REPORT = 115;  
WLAN_EID_CONGESTION_NOTIFICATION = 116;  
WLAN_EID_PEER_MGMT = 117;  
WLAN_EID_CHAN_SWITCH_PARAM = 118;  
WLAN_EID_MESH_AWAKE_WINDOW = 119;  
WLAN_EID_BEACON_TIMING = 120;  
WLAN_EID_MCCAOP_SETUP_REQ = 121;  
WLAN_EID_MCCAOP_SETUP_RESP = 122;  
WLAN_EID_MCCAOP_ADVERT = 123;  
WLAN_EID_MCCAOP_TEARDOWN = 124;  
WLAN_EID_GANN = 125;  
WLAN_EID_RANN = 126;  
WLAN_EID_EXT_CAPABILITY = 127;  
128-129 reserved for Agere
WLAN_EID_PREQ = 130;  
WLAN_EID_PREP = 131;  
WLAN_EID_PERR = 132;  
133-136 reserved for Cisco
WLAN_EID_PXU = 137;  
WLAN_EID_PXUC = 138;  
WLAN_EID_AUTH_MESH_PEER_EXCH = 139;  
WLAN_EID_MIC = 140;  
WLAN_EID_DESTINATION_URI = 141;  
WLAN_EID_UAPSD_COEX = 142;  
WLAN_EID_WAKEUP_SCHEDULE = 143;  
WLAN_EID_EXT_SCHEDULE = 144;  
WLAN_EID_STA_AVAILABILITY = 145;  
WLAN_EID_DMG_TSPEC = 146;  
WLAN_EID_DMG_AT = 147;  
WLAN_EID_DMG_CAP = 148;  
149 reserved for Cisco
WLAN_EID_CISCO_VENDOR_SPECIFIC = 150;  
WLAN_EID_DMG_OPERATION = 151;  
WLAN_EID_DMG_BSS_PARAM_CHANGE = 152;  
WLAN_EID_DMG_BEAM_REFINEMENT = 153;  
WLAN_EID_CHANNEL_MEASURE_FEEDBACK = 154;  
155-156 reserved for Cisco
WLAN_EID_AWAKE_WINDOW = 157;  
WLAN_EID_MULTI_BAND = 158;  
WLAN_EID_ADDBA_EXT = 159;  
WLAN_EID_NEXT_PCP_LIST = 160;  
WLAN_EID_PCP_HANDOVER = 161;  
WLAN_EID_DMG_LINK_MARGIN = 162;  
WLAN_EID_SWITCHING_STREAM = 163;  
WLAN_EID_SESSION_TRANSITION = 164;  
WLAN_EID_DYN_TONE_PAIRING_REPORT = 165;  
WLAN_EID_CLUSTER_REPORT = 166;  
WLAN_EID_RELAY_CAP = 167;  
WLAN_EID_RELAY_XFER_PARAM_SET = 168;  
WLAN_EID_BEAM_LINK_MAINT = 169;  
WLAN_EID_MULTIPLE_MAC_ADDR = 170;  
WLAN_EID_U_PID = 171;  
WLAN_EID_DMG_LINK_ADAPT_ACK = 172;  
173 reserved for Symbol
WLAN_EID_MCCAOP_ADV_OVERVIEW = 174;  
WLAN_EID_QUIET_PERIOD_REQ = 175;  
176 reserved for Symbol
WLAN_EID_QUIET_PERIOD_RESP = 177;  
178-179 reserved for Symbol
180 reserved for ISO/IEC 20011
WLAN_EID_EPAC_POLICY = 182;  
WLAN_EID_CLISTER_TIME_OFF = 183;  
WLAN_EID_INTER_AC_PRIO = 184;  
WLAN_EID_SCS_DESCRIPTOR = 185;  
WLAN_EID_QLOAD_REPORT = 186;  
WLAN_EID_HCCA_TXOP_UPDATE_COUNT = 187;  
WLAN_EID_HL_STREAM_ID = 188;  
WLAN_EID_GCR_GROUP_ADDR = 189;  
WLAN_EID_ANTENNA_SECTOR_ID_PATTERN = 190;  
WLAN_EID_VHT_CAPABILITY = 191;  
WLAN_EID_VHT_OPERATION = 192;  
WLAN_EID_EXTENDED_BSS_LOAD = 193;  
WLAN_EID_WIDE_BW_CHANNEL_SWITCH = 194;  
WLAN_EID_VHT_TX_POWER_ENVELOPE = 195;  
WLAN_EID_CHANNEL_SWITCH_WRAPPER = 196;  
WLAN_EID_AID = 197;  
WLAN_EID_QUIET_CHANNEL = 198;  
WLAN_EID_OPMODE_NOTIF = 199;  
 
WLAN_EID_VENDOR_SPECIFIC = 221;  
WLAN_EID_QOS_PARAMETER = 222;  


WLAN action category codes WLAN_CATEGORY_*
WLAN_CATEGORY_SPECTRUM_MGMT = 0;  
WLAN_CATEGORY_QOS = 1;  
WLAN_CATEGORY_DLS = 2;  
WLAN_CATEGORY_BACK = 3;  
WLAN_CATEGORY_PUBLIC = 4;  
WLAN_CATEGORY_RADIO_MEASUREMENT = 5;  
WLAN_CATEGORY_HT = 7;  
WLAN_CATEGORY_SA_QUERY = 8;  
WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9;  
WLAN_CATEGORY_WNM = 10;  
WLAN_CATEGORY_WNM_UNPROTECTED = 11;  
WLAN_CATEGORY_TDLS = 12;  
WLAN_CATEGORY_MESH_ACTION = 13;  
WLAN_CATEGORY_MULTIHOP_ACTION = 14;  
WLAN_CATEGORY_SELF_PROTECTED = 15;  
WLAN_CATEGORY_DMG = 16;  
WLAN_CATEGORY_WMM = 17;  
WLAN_CATEGORY_FST = 18;  
WLAN_CATEGORY_UNPROT_DMG = 20;  
WLAN_CATEGORY_VHT = 21;  
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126;  
WLAN_CATEGORY_VENDOR_SPECIFIC = 127;  


WLAN spectrum action codes WLAN_ACTION_SPCT_*
WLAN_ACTION_SPCT_MSR_REQ = 0;  
WLAN_ACTION_SPCT_MSR_RPRT = 1;  
WLAN_ACTION_SPCT_TPC_REQ = 2;  
WLAN_ACTION_SPCT_TPC_RPRT = 3;  
WLAN_ACTION_SPCT_CHL_SWITCH = 4;  


WLAN HT action codes WLAN_HT_ACTION_*
WLAN_HT_ACTION_NOTIFY_CHANWIDTH = 0;  
WLAN_HT_ACTION_SMPS = 1;  
WLAN_HT_ACTION_PSMP = 2;  
WLAN_HT_ACTION_PCO_PHASE = 3;  
WLAN_HT_ACTION_CSI = 4;  
WLAN_HT_ACTION_NONCOMPRESSED_BF = 5;  
WLAN_HT_ACTION_COMPRESSED_BF = 6;  
WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7;  


WLAN VHT action codes WLAN_VHT_ACTION_*
WLAN_VHT_ACTION_COMPRESSED_BF = 0;  
WLAN_VHT_ACTION_GROUPID_MGMT = 1;  
WLAN_VHT_ACTION_OPMODE_NOTIF = 2;  


WLAN self protected action codes WLAN_SP_*
WLAN_SP_RESERVED = 0;  
WLAN_SP_MESH_PEERING_OPEN = 1;  
WLAN_SP_MESH_PEERING_CONFIRM = 2;  
WLAN_SP_MESH_PEERING_CLOSE = 3;  
WLAN_SP_MGK_INFORM = 4;  
WLAN_SP_MGK_ACK = 5;  


WLAN mesh action codes WLAN_MESH_ACTION_*
WLAN_MESH_ACTION_LINK_METRIC_REPORT = 0;  
WLAN_MESH_ACTION_HWMP_PATH_SELECTION = 1;  
WLAN_MESH_ACTION_GATE_ANNOUNCEMENT = 2;  
WLAN_MESH_ACTION_CONGESTION_CONTROL_NOTIFICATION = 3;  
WLAN_MESH_ACTION_MCCA_SETUP_REQUEST = 4;  
WLAN_MESH_ACTION_MCCA_SETUP_REPLY = 5;  
WLAN_MESH_ACTION_MCCA_ADVERTISEMENT_REQUEST = 6;  
WLAN_MESH_ACTION_MCCA_ADVERTISEMENT = 7;  
WLAN_MESH_ACTION_MCCA_TEARDOWN = 8;  
WLAN_MESH_ACTION_TBTT_ADJUSTMENT_REQUEST = 9;  
WLAN_MESH_ACTION_TBTT_ADJUSTMENT_RESPONSE = 10;  


WLAN security key lengths WLAN_KEY_LEN_*
WLAN_KEY_LEN_WEP40 = 5;  
WLAN_KEY_LEN_WEP104 = 13;  
WLAN_KEY_LEN_CCMP = 16;  
WLAN_KEY_LEN_CCMP_256 = 32;  
WLAN_KEY_LEN_TKIP = 32;  
WLAN_KEY_LEN_AES_CMAC = 16;  
WLAN_KEY_LEN_SMS4 = 32;  
WLAN_KEY_LEN_GCMP = 16;  
WLAN_KEY_LEN_GCMP_256 = 32;  
WLAN_KEY_LEN_BIP_CMAC_256 = 32;  
WLAN_KEY_LEN_BIP_GMAC_128 = 16;  
WLAN_KEY_LEN_BIP_GMAC_256 = 32;  


IEEE 802.11 security key lengths IEEE80211_*_LEN
IEEE80211_WEP_IV_LEN = 4;  
IEEE80211_WEP_ICV_LEN = 4;  
IEEE80211_CCMP_HDR_LEN = 8;  
IEEE80211_CCMP_MIC_LEN = 8;  
IEEE80211_CCMP_PN_LEN = 6;  
IEEE80211_CCMP_256_HDR_LEN = 8;  
IEEE80211_CCMP_256_MIC_LEN = 16;  
IEEE80211_CCMP_256_PN_LEN = 6;  
IEEE80211_TKIP_IV_LEN = 8;  
IEEE80211_TKIP_ICV_LEN = 4;  
IEEE80211_CMAC_PN_LEN = 6;  
IEEE80211_GMAC_PN_LEN = 6;  
IEEE80211_GCMP_HDR_LEN = 8;  
IEEE80211_GCMP_MIC_LEN = 16;  
IEEE80211_GCMP_PN_LEN = 6;  


WLAN public action codes WLAN_PUB_ACTION_*
WLAN_PUB_ACTION_EXT_CHANSW_ANN = 4;  
WLAN_PUB_ACTION_TDLS_DISCOVER_RES = 14;  


WLAN TDLS action codes WLAN_TDLS_*
WLAN_TDLS_SETUP_REQUEST = 0;  
WLAN_TDLS_SETUP_RESPONSE = 1;  
WLAN_TDLS_SETUP_CONFIRM = 2;  
WLAN_TDLS_TEARDOWN = 3;  
WLAN_TDLS_PEER_TRAFFIC_INDICATION = 4;  
WLAN_TDLS_CHANNEL_SWITCH_REQUEST = 5;  
WLAN_TDLS_CHANNEL_SWITCH_RESPONSE = 6;  
WLAN_TDLS_PEER_PSM_REQUEST = 7;  
WLAN_TDLS_PEER_PSM_RESPONSE = 8;  
WLAN_TDLS_PEER_TRAFFIC_RESPONSE = 9;  
WLAN_TDLS_DISCOVERY_REQUEST = 10;  


WLAN extended channel switching capabilities 1st byte WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING*
Note: Extended Channel Switching capability to be set in the 1st byte of the WLAN_EID_EXT_CAPABILITY information element
WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING = (1 shl 2);  


WLAN extended TDLS capabilities 4th byte WLAN_EXT_CAPA4_TDLS_*
Note: TDLS capabilities in the 4th byte of WLAN_EID_EXT_CAPABILITY
WLAN_EXT_CAPA4_TDLS_BUFFER_STA = (1 shl 4);  
WLAN_EXT_CAPA4_TDLS_PEER_PSM = (1 shl 5);  
WLAN_EXT_CAPA4_TDLS_CHAN_SWITCH = (1 shl 6);  


WLAN extended interworking capabilities 4th byte WLAN_EXT_CAPA4_INTERWORKING_*
Note: Interworking capabilities are set in 7th bit of 4th byte of the WLAN_EID_EXT_CAPABILITY information element
WLAN_EXT_CAPA4_INTERWORKING_ENABLED = (1 shl 7);  


WLAN extended TDLS capabilities 5th byte WLAN_EXT_CAPA5_TDLS_*
Note: TDLS capabililites to be enabled in the 5th byte of the WLAN_EID_EXT_CAPABILITY information element
WLAN_EXT_CAPA5_TDLS_ENABLED = (1 shl 5);  
WLAN_EXT_CAPA5_TDLS_PROHIBITED = (1 shl 6);  
WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED = (1 shl 7);  


WLAN extended TDLS capabilities 8th byte WLAN_EXT_CAPA8_TDLS_*
WLAN_EXT_CAPA8_TDLS_WIDE_BW_ENABLED = (1 shl 5);  
WLAN_EXT_CAPA8_OPMODE_NOTIF = (1 shl 6);  


WLAN TDLS specific payload type WLAN_TDLS_*_RFTYPE*
Note: TDLS specific payload type in the LLC/SNAP header
WLAN_TDLS_SNAP_RFTYPE = $2;  


WLAN coex IE information field bits WLAN_*_COEX_INFORMATION_*
WLAN_BSS_COEX_INFORMATION_REQUEST = (1 shl 0);  


IEEE 802.11 mesh synchronization method identifier IEEE80211_SYNC_METHOD_*
IEEE80211_SYNC_METHOD_NEIGHBOR_OFFSET = 1; The default synchronization method
IEEE80211_SYNC_METHOD_VENDOR = 255; A vendor specific synchronization method that will be specified in a vendor specific information element


IEEE 802.11 mesh path selection protocol identifier IEEE80211_PATH_PROTOCOL_*
IEEE80211_PATH_PROTOCOL_HWMP = 1; The default path selection protocol
IEEE80211_PATH_PROTOCOL_VENDOR = 255; A vendor specific protocol that will be specified in a vendor specific information element


IEEE 802.11 mesh path selection metric identifier IEEE80211_PATH_METRIC_*
IEEE80211_PATH_METRIC_AIRTIME = 1; The default path selection metric
IEEE80211_PATH_METRIC_VENDOR = 255; A vendor specific metric that will be specified in a vendor specific information element


IEEE 802.11 root mesh STA mode identifier IEEE80211_ROOTMODE_*
Note: These attributes are used by dot11MeshHWMPRootMode to set root mesh STA mode
IEEE80211_ROOTMODE_NO_ROOT = 0; The mesh STA is not a root mesh STA (default)
IEEE80211_ROOTMODE_ROOT = 1; The mesh STA is a root mesh STA if greater than this value
IEEE80211_PROACTIVE_PREQ_NO_PREP = 2; The mesh STA is a root mesh STA supports the proactive PREQ with proactive PREP subfield set to 0
IEEE80211_PROACTIVE_PREQ_WITH_PREP = 3; The mesh STA is a root mesh STA supports the proactive PREQ with proactive PREP subfield set to 1
IEEE80211_PROACTIVE_RANN = 4; The mesh STA is a root mesh STA supports the proactive RANN


IEEE 802.11 country information element IEEE80211_COUNTRY_*
Note: IEEE 802.11-2007 7.3.2.9 country information element
IEEE80211_COUNTRY_IE_MIN_LEN = 6; Minimum length is 8 octets, ie len must be evenly divisible by 2.
 
IEEE80211_COUNTRY_STRING_LEN = 3; The Country String field of the element shall be 3 octets in length.
 
Note: For regulatory extension stuff see IEEE 802.11-2007 Annex I (page 1141) and Annex J (page 1147). Also review 7.3.2.9.

When dot11RegulatoryClassesRequired is true and the first_channel/reg_extension_id is >= 201 then the IE compromises of the 'ext' struct represented below:
- Regulatory extension ID - when generating IE this just needs to be monotonically increasing for each triplet passed in the IE
- Regulatory class - index into set of rules
- Coverage class - index into air propagation time (Table 7-27), in microseconds, you can compute the air propagation time from the index by multiplying by 3, so index 10 yields a propagation of 10 us. Valid values are 0-31, values 32-255 are not defined yet. A value of 0 inicates air propagation of <= 1 us.

See also Table I.2 for Emission limit sets and table I.3 for Behavior limit sets. Table J.1 indicates how to map a reg_class to an emission limit set and behavior limit set
IEEE80211_COUNTRY_EXTENSION_ID = 201;  


WLAN timeout interval WLAN_TIMEOUT_*
WLAN_TIMEOUT_REASSOC_DEADLINE = 1; 802.11r
WLAN_TIMEOUT_KEY_LIFETIME = 2; 802.11r
WLAN_TIMEOUT_ASSOC_COMEBACK = 3; 802.11w


WLAN block-ack action code WLAN_ACTION_*
WLAN_ACTION_ADDBA_REQ = 0;  
WLAN_ACTION_ADDBA_RESP = 1;  
WLAN_ACTION_DELBA = 2;  


WLAN block-ack parties WLAN_BACK_*
WLAN_BACK_RECIPIENT = 0;  
WLAN_BACK_INITIATOR = 1;  


WLAN SA query action WLAN_ACTION_SA_QUERY_*
WLAN_ACTION_SA_QUERY_REQUEST = 0;  
WLAN_ACTION_SA_QUERY_RESPONSE = 1;  


WLAN cipher suite selectors WLAN_CIPHER_SUITE_*
WLAN_CIPHER_SUITE_USE_GROUP = $000FAC00;  
WLAN_CIPHER_SUITE_WEP40 = $000FAC01;  
WLAN_CIPHER_SUITE_TKIP = $000FAC02;  
Reserved: = $000FAC03
WLAN_CIPHER_SUITE_CCMP = $000FAC04;  
WLAN_CIPHER_SUITE_WEP104 = $000FAC05;  
WLAN_CIPHER_SUITE_AES_CMAC = $000FAC06;  
WLAN_CIPHER_SUITE_GCMP = $000FAC08;  
WLAN_CIPHER_SUITE_GCMP_256 = $000FAC09;  
WLAN_CIPHER_SUITE_CCMP_256 = $000FAC0A;  
WLAN_CIPHER_SUITE_BIP_GMAC_128 = $000FAC0B;  
WLAN_CIPHER_SUITE_BIP_GMAC_256 = $000FAC0C;  
WLAN_CIPHER_SUITE_BIP_CMAC_256 = $000FAC0D;  
 
WLAN_CIPHER_SUITE_SMS4 = $00147201;  


WLAN AKM suite selectors WLAN_AKM_SUITE_*
WLAN_AKM_SUITE_8021X = $000FAC01;  
WLAN_AKM_SUITE_PSK = $000FAC02;  
WLAN_AKM_SUITE_8021X_SHA256 = $000FAC05;  
WLAN_AKM_SUITE_PSK_SHA256 = $000FAC06;  
WLAN_AKM_SUITE_TDLS = $000FAC07;  
WLAN_AKM_SUITE_SAE = $000FAC08;  
WLAN_AKM_SUITE_FT_OVER_SAE = $000FAC09;  


WLAN key lengths WLAN_*_KEY_LEN*
WLAN_MAX_KEY_LEN = 32;  
 
WLAN_PMKID_LEN = 16;  


WLAN OUI types WLAN_OUI_WFA*
WLAN_OUI_WFA = $506f9a;  
WLAN_OUI_TYPE_WFA_P2P = 9;  
WLAN_OUI_MICROSOFT = $0050f2;  
WLAN_OUI_TYPE_MICROSOFT_WPA = 1;  
WLAN_OUI_TYPE_MICROSOFT_WMM = 2;  
WLAN_OUI_TYPE_MICROSOFT_WPS = 4;  


IEEE 802.11 Tspec element IEEE80211_WMM_IE_TSPEC_TID_*
IEEE80211_WMM_IE_TSPEC_TID_MASK = $0F;  
IEEE80211_WMM_IE_TSPEC_TID_SHIFT = 1;  


IEEE 802.11 Tspec status IEEE80211_TSPEC_STATUS_*
IEEE80211_TSPEC_STATUS_ADMISS_ACCEPTED = 0;  
IEEE80211_TSPEC_STATUS_ADDTS_INVAL_PARAMS = $1;  


IEEE 802.11 frequency bands IEEE80211_BAND_*
Note: These constants are NOT defined by IEEE 802.11 but are internal to the implementation

As per Linux cfg80211.h IEEE80211_BAND_*

IEEE80211_BAND_2GHZ = 0; (NL80211_BAND_2GHZ) 2.4GHz ISM band
IEEE80211_BAND_5GHZ = 1; (NL80211_BAND_5GHZ) 5GHz band (4.9-5.7)
IEEE80211_BAND_60GHZ = 2; (NL80211_BAND_60GHZ) 60 GHz band (58.32 - 64.80 GHz)
 
IEEE80211_NUM_BANDS = 3;  


IEEE 802.11 channel flags IEEE80211_CHAN_*
Note: As per Linux cfg80211.h IEEE80211_CHAN_*
IEEE80211_CHAN_DISABLED = (1 shl 0); This channel is disabled
IEEE80211_CHAN_NO_IR = (1 shl 1); Do not initiate radiation, this includes sending probe requests or beaconing.
(1 shl 2)
IEEE80211_CHAN_RADAR = (1 shl 3); Radar detection is required on this channel
IEEE80211_CHAN_NO_HT40PLUS = (1 shl 4); Extension channel above this channel is not permitted
IEEE80211_CHAN_NO_HT40MINUS = (1 shl 5); Extension channel below this channel is not permitted
IEEE80211_CHAN_NO_OFDM = (1 shl 6); OFDM is not allowed on this channel
IEEE80211_CHAN_NO_80MHZ = (1 shl 7); If the driver supports 80 MHz on the band, this flag indicates that an 80 MHz channel cannot use this channel as the control or any of the secondary channels.
IEEE80211_CHAN_NO_160MHZ = (1 shl 8); If the driver supports 160 MHz on the band, this flag indicates that an 160 MHz channel cannot use this channel as the control or any of the secondary channels.
IEEE80211_CHAN_INDOOR_ONLY = (1 shl 9); see NL80211_FREQUENCY_ATTR_INDOOR_ONLY
IEEE80211_CHAN_GO_CONCURRENT = (1 shl 10); see NL80211_FREQUENCY_ATTR_GO_CONCURRENT
IEEE80211_CHAN_NO_20MHZ = (1 shl 11); 20 MHz bandwidth is not permitted on this channel
IEEE80211_CHAN_NO_10MHZ = (1 shl 12); 10 MHz bandwidth is not permitted on this channel
 
IEEE80211_CHAN_NO_HT40 = IEEE80211_CHAN_NO_HT40PLUS or IEEE80211_CHAN_NO_HT40MINUS;  


IEEE 802.11 DFS times IEEE80211_DFS_MIN_*_TIME_MS*
IEEE80211_DFS_MIN_CAC_TIME_MS = 60000;  
IEEE80211_DFS_MIN_NOP_TIME_MS = (30 * 60 * 1000);  


IEEE 802.11 rate flags IEEE80211_RATE_*
Note: As per Linux cfg80211.h IEEE80211_RATE_*
IEEE80211_RATE_SHORT_PREAMBLE = (1 shl 0);  
IEEE80211_RATE_MANDATORY_A = (1 shl 1);  
IEEE80211_RATE_MANDATORY_B = (1 shl 2);  
IEEE80211_RATE_MANDATORY_G = (1 shl 3);  
IEEE80211_RATE_ERP_G = (1 shl 4);  
IEEE80211_RATE_SUPPORTS_5MHZ = (1 shl 5);  
IEEE80211_RATE_SUPPORTS_10MHZ = (1 shl 6);  


IEEE 802.11 BSS type values IEEE80211_BSS_TYPE_*
Note: As per Linux cfg80211.h IEEE80211_BSS_TYPE_*
IEEE80211_BSS_TYPE_ESS = 0; Infrastructure BSS
IEEE80211_BSS_TYPE_PBSS = 1; Personal BSS
IEEE80211_BSS_TYPE_IBSS = 2; Independent BSS
IEEE80211_BSS_TYPE_MBSS = 3; Mesh BSS
IEEE80211_BSS_TYPE_ANY = 4; Wildcard value for matching any BSS type


IEEE 802.11 privacy values IEEE80211_PRIVACY_*
Note: As per Linux cfg80211.h IEEE80211_PRIVACY_*
IEEE80211_PRIVACY_ON = 0; Privacy bit set
IEEE80211_PRIVACY_OFF = 1; Privacy bit clear
IEEE80211_PRIVACY_ANY = 2; Wildcard value for matching any privacy setting


IEEE 802.11 filter flags IEEE80211_FIF_*
Note: As per Linux mac80211.h FIF_*
IEEE80211_FIF_PROMISC_IN_BSS = (1 shl 0); Promiscuous mode within your BSS, think of the BSS as your network segment and then this corresponds to the regular ethernet device promiscuous mode.
IEEE80211_FIF_ALLMULTI = (1 shl 1); Pass all multicast frames, this is used if requested by the user or if the hardware is not capable of filtering by multicast address.
IEEE80211_FIF_FCSFAIL = (1 shl 2); Pass frames with failed FCS
IEEE80211_FIF_PLCPFAIL = (1 shl 3); Pass frames with failed PLCP CRC
IEEE80211_FIF_BCN_PRBRESP_PROMISC = (1 shl 4); Set during scanning to indicate to the hardware that it should not filter beacons or probe responses by BSSID
IEEE80211_FIF_CONTROL = (1 shl 5); Pass control frames (except for PS Poll), if PROMISC_IN_BSS is not set then only those addressed to this station.
IEEE80211_FIF_OTHER_BSS = (1 shl 6); Pass frames destined to other BSSes
IEEE80211_FIF_PSPOLL = (1 shl 7); Pass PS Poll frames, if PROMISC_IN_BSS is not set then only those addressed to this station.
IEEE80211_FIF_PROBE_REQ = (1 shl 8); Pass probe request frames


IEEE 802.11 hardware flags IEEE80211_HW_*
Note: As per Linux mac80211.h IEEE80211_HW_*
IEEE80211_HW_HAS_RATE_CONTROL = (1 shl 0);  
IEEE80211_HW_RX_INCLUDES_FCS = (1 shl 1); Indicates that received frames passed to the stack include the FCS at the end
IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = (1 shl 2);  
IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = (1 shl 3); Hardware is not capable of short slot operation on the 2.4 GHz band
IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = (1 shl 4); Hardware is not capable of receiving frames with short preamble on the 2.4 GHz band
IEEE80211_HW_SIGNAL_UNSPEC = (1 shl 5); Hardware can provide signal values but we don't know its units. We expect values between 0 and MaxSignal.
IEEE80211_HW_SIGNAL_DBM = (1 shl 6);  
IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC = (1 shl 7);  
IEEE80211_HW_SPECTRUM_MGMT = (1 shl 8);  
IEEE80211_HW_AMPDU_AGGREGATION = (1 shl 9);  
IEEE80211_HW_SUPPORTS_PS = (1 shl 10);  
IEEE80211_HW_PS_NULLFUNC_STACK = (1 shl 11);  
IEEE80211_HW_SUPPORTS_DYNAMIC_PS = (1 shl 12);  
IEEE80211_HW_MFP_CAPABLE = (1 shl 13);  
IEEE80211_HW_WANT_MONITOR_VIF = (1 shl 14);  
IEEE80211_HW_NO_AUTO_VIF = (1 shl 15);  
IEEE80211_HW_SW_CRYPTO_CONTROL = (1 shl 16);  
free slots
IEEE80211_HW_REPORTS_TX_ACK_STATUS = (1 shl 18);  
IEEE80211_HW_CONNECTION_MONITOR = (1 shl 19);  
IEEE80211_HW_QUEUE_CONTROL = (1 shl 20);  
IEEE80211_HW_SUPPORTS_PER_STA_GTK = (1 shl 21);  
IEEE80211_HW_AP_LINK_PS = (1 shl 22);  
IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = (1 shl 23);  
IEEE80211_HW_SUPPORTS_RC_TABLE = (1 shl 24);  
IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = (1 shl 25);  
IEEE80211_HW_TIMING_BEACON_ONLY = (1 shl 26);  
IEEE80211_HW_SUPPORTS_HT_CCK_RATES = (1 shl 27);  
IEEE80211_HW_CHANCTX_STA_CSA = (1 shl 28);  
IEEE80211_HW_SUPPORTS_CLONED_SKBS = (1 shl 29);  
IEEE80211_SINGLE_HW_SCAN_ON_ALL_BANDS = (1 shl 30);  


IEEE 802.11 configuration flags IEEE80211_CONF_*
Note: As per Linux mac80211.h IEEE80211_CONF_*
IEEE80211_CONF_MONITOR = (1 shl 0);  
IEEE80211_CONF_PS = (1 shl 1);  
IEEE80211_CONF_IDLE = (1 shl 2);  
IEEE80211_CONF_OFFCHANNEL = (1 shl 3);  


IEEE 802.11 configuration changed flags IEEE80211_CONF_CHANGE_*
Note: As per Linux mac80211.h IEEE80211_CONF_CHANGE_*
IEEE80211_CONF_CHANGE_SMPS = (1 shl 1);  
IEEE80211_CONF_CHANGE_LISTEN_INTERVAL = (1 shl 2);  
IEEE80211_CONF_CHANGE_MONITOR = (1 shl 3);  
IEEE80211_CONF_CHANGE_PS = (1 shl 4);  
IEEE80211_CONF_CHANGE_POWER = (1 shl 5);  
IEEE80211_CONF_CHANGE_CHANNEL = (1 shl 6);  
IEEE80211_CONF_CHANGE_RETRY_LIMITS = (1 shl 7);  
IEEE80211_CONF_CHANGE_IDLE = (1 shl 8);  


IEEE 802.11 TX status headroom IEEE80211_TX_STATUS_HEADROOM_*
IEEE80211_TX_STATUS_HEADROOM = 14;  


IEEE 802.11 max CSA counters IEEE80211_MAX_CSA_COUNTERS_*
IEEE80211_MAX_CSA_COUNTERS_NUM = 2;  


WiFi specific constants WIFI_*
WIFI_DEVICE_TIMER_INTERVAL = 500; Timer interval for new device additions
 
EAPOL_TRANSPORT_NAME = 'EAPOL';  
RSN_TRANSPORT_NAME = 'RSN';  


WiFi device states WIFI_STATE_*
WIFI_STATE_NONE = 0;  


WiFi device status WIFI_STATUS_*
WIFI_STATUS_NONE = 0;  


WiFi device flags WIFI_FLAG_*
Note: As per Linux cfg80211.h WIPHY_FLAG_*
(1 shl 0)
(1 shl 1)
(1 shl 2)
WIFI_FLAG_NETNS_OK = (1 shl 3); If not set, do not allow changing the netns of this wiphy at all.
WIFI_FLAG_PS_ON_BY_DEFAULT = (1 shl 4); If set to true, powersave will be enabled by default.
WIFI_FLAG_4ADDR_AP = (1 shl 5); Supports 4addr mode even on AP (with a single station on a VLAN interface)
WIFI_FLAG_4ADDR_STATION = (1 shl 6); Supports 4addr mode even as a station
WIFI_FLAG_CONTROL_PORT_PROTOCOL = (1 shl 7); This device supports setting the control port protocol ethertype
WIFI_FLAG_IBSS_RSN = (1 shl 8); The device supports IBSS RSN
WIFI_FLAG_MESH_AUTH = (1 shl 10); The device supports mesh authentication
WIFI_FLAG_SUPPORTS_SCHED_SCAN = (1 shl 11); The device supports scheduled scans
(1 shl 12)
WIFI_FLAG_SUPPORTS_FW_ROAM = (1 shl 13); The device supports roaming feature in the firmware
WIFI_FLAG_AP_UAPSD = (1 shl 14); The device supports uapsd on AP
WIFI_FLAG_SUPPORTS_TDLS = (1 shl 15); The device supports TDLS (802.11z) operation
WIFI_FLAG_TDLS_EXTERNAL_SETUP = (1 shl 16); The device does not handle TDLS (802.11z) link setup/discovery operations internally
WIFI_FLAG_HAVE_AP_SME = (1 shl 17); Device integrates AP SME
WIFI_FLAG_REPORTS_OBSS = (1 shl 18); The device will report beacons from other BSSes
WIFI_FLAG_AP_PROBE_RESP_OFFLOAD = (1 shl 19); When operating as an AP, the device responds to probe-requests in hardware.
WIFI_FLAG_OFFCHAN_TX = (1 shl 20); Device supports direct off-channel TX
WIFI_FLAG_HAS_REMAIN_ON_CHANNEL = (1 shl 21); Device supports remain-on-channel call
WIFI_FLAG_SUPPORTS_5_10_MHZ = (1 shl 22); Device supports 5 MHz and 10 MHz channels
WIFI_FLAG_HAS_CHANNEL_SWITCH = (1 shl 23); Device supports channel switch in beaconing mode (AP, IBSS, Mesh, ...)


WiFi device features WIFI_FEATURE_*
Note: As per Linux nl80211.h NL80211_FEATURE_*
WIFI_FEATURE_SK_TX_STATUS = (1 shl 0); This driver supports reflecting back TX status to the socket error queue when requested with the socket option
WIFI_FEATURE_HT_IBSS = (1 shl 1); This driver supports IBSS with HT datarates
WIFI_FEATURE_INACTIVITY_TIMER = (1 shl 2); This driver takes care of freeing up the connected inactive stations in AP mode
WIFI_FEATURE_CELL_BASE_REG_HINTS = (1 shl 3); This driver has been tested to work properly to support receiving regulatory hints from cellular base stations
WIFI_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = (1 shl 4); No longer available, only here to reserve the value for API/ABI compatibility
WIFI_FEATURE_SAE = (1 shl 5); This driver supports simultaneous authentication of equals (SAE) with user space SME (NL80211_CMD_AUTHENTICATE) in station mode
WIFI_FEATURE_LOW_PRIORITY_SCAN = (1 shl 6); This driver supports low priority scan
WIFI_FEATURE_SCAN_FLUSH = (1 shl 7); Scan flush is supported
WIFI_FEATURE_AP_SCAN = (1 shl 8); Support scanning using an AP vif
WIFI_FEATURE_VIF_TXPOWER = (1 shl 9); The driver supports per-vif TX power setting
WIFI_FEATURE_NEED_OBSS_SCAN = (1 shl 10); The driver expects userspace to perform OBSS scans and generate 20/40 BSS coex reports
WIFI_FEATURE_P2P_GO_CTWIN = (1 shl 11); P2P GO implementation supports CT Window setting
WIFI_FEATURE_P2P_GO_OPPPS = (1 shl 12); P2P GO implementation supports opportunistic powersave
bit 13 is reserved
WIFI_FEATURE_ADVERTISE_CHAN_LIMITS = (1 shl 14); cfg80211 advertises channel limits (HT40, VHT 80/160 MHz) if this flag is set
WIFI_FEATURE_FULL_AP_CLIENT_STATE = (1 shl 15); The driver supports full state transitions for AP clients
WIFI_FEATURE_USERSPACE_MPM = (1 shl 16); This driver supports a userspace Mesh Peering Management
WIFI_FEATURE_ACTIVE_MONITOR = (1 shl 17); This driver supports an active monitor interface
WIFI_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE = (1 shl 18); This driver supports dynamic channel bandwidth change (e.g., HT 20 <-> 40 MHz channel) during the lifetime of a BSS
WIFI_FEATURE_DS_PARAM_SET_IE_IN_PROBES = (1 shl 19); This device adds a DS Parameter Set IE to probe requests
WIFI_FEATURE_WFA_TPC_IE_IN_PROBES = (1 shl 20); This device adds a WFA TPC Report IE to probe requests
WIFI_FEATURE_QUIET = (1 shl 21); This device, in client mode, supports Quiet Period requests sent to it by an AP.
WIFI_FEATURE_TX_POWER_INSERTION = (1 shl 22); This device is capable of inserting the current tx power value into the TPC Report IE in the spectrum management TPC Report action frame, and in the Radio Measurement Link Measurement Report action frame.
WIFI_FEATURE_ACKTO_ESTIMATION = (1 shl 23); This driver supports dynamic ACK timeout estimation
WIFI_FEATURE_STATIC_SMPS = (1 shl 24); Device supports static spatial multiplexing powersave
WIFI_FEATURE_DYNAMIC_SMPS = (1 shl 25); Device supports dynamic spatial multiplexing powersave
WIFI_FEATURE_SUPPORTS_WMM_ADMISSION = (1 shl 26); The device supports setting up WMM TSPEC sessions
WIFI_FEATURE_MAC_ON_CREATE = (1 shl 27); Device supports configuring the vif's MAC address upon creation
WIFI_FEATURE_TDLS_CHANNEL_SWITCH = (1 shl 28); Driver supports channel switching when operating as a TDLS peer
WIFI_FEATURE_SCAN_RANDOM_MAC_ADDR = (1 shl 29); This device/driver supports using a random MAC address during scan (if the device is unassociated)
WIFI_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR = (1 shl 30); This device/driver supports using a random MAC address for every scan iteration during scheduled scan (while not associated)
WIFI_FEATURE_ND_RANDOM_MAC_ADDR = (1 shl 31); This device/driver supports using a random MAC address for every scan iteration during "net detect" i.e. scan in unassociated WoWLAN


WiFi device LED values WIFI_LED_*
WIFI_LED_OFF = 0;  
WIFI_LED_HALF = 127;  
WIFI_LED_FULL = 255;  


WiFi interface types WIFI_IFTYPE_*
Note: As per Linux nl80211.h NL80211_IFTYPE_*
WIFI_IFTYPE_UNSPECIFIED = 0; Unspecified type, driver decides.
WIFI_IFTYPE_ADHOC = 1; Independent BSS member
WIFI_IFTYPE_STATION = 2; Managed BSS member
WIFI_IFTYPE_AP = 3; Access point
WIFI_IFTYPE_AP_VLAN = 4; VLAN interface for access points
WIFI_IFTYPE_WDS = 5; Wireless distribution interface
WIFI_IFTYPE_MONITOR = 6; Monitor interface receiving all frames
WIFI_IFTYPE_MESH_POINT = 7; Mesh point
WIFI_IFTYPE_P2P_CLIENT = 8; P2P client
WIFI_IFTYPE_P2P_GO = 9; P2P group owner
WIFI_IFTYPE_P2P_DEVICE = 10; P2P device interface type
WIFI_IFTYPE_OCB = 11; Outside Context of a BSS
 
WIFI_NUM_IFTYPES = 12; Number of defined interface types


WiFi channel types WIFI_CHAN_*
Note: As per Linux nl80211.h NL80211_CHAN_*
WIFI_CHAN_NO_HT = 0; 20 MHz, non-HT channel
WIFI_CHAN_HT20 = 1; 20 MHz HT channel
WIFI_CHAN_HT40MINUS = 2; HT40 channel, secondary channel below the control channel.
WIFI_CHAN_HT40PLUS = 3; HT40 channel, secondary channel above the control channel.


WiFi channel widths WIFI_CHAN_WIDTH_*
Note: As per Linux nl80211.h NL80211_CHAN_WIDTH_*
WIFI_CHAN_WIDTH_20_NOHT = 0; 20 MHz, non-HT channel
WIFI_CHAN_WIDTH_20 = 1; 20 MHz HT channel
WIFI_CHAN_WIDTH_40 = 2; 40 MHz channel, the NL80211_ATTR_CENTER_FREQ1 attribute must be provided as well.
WIFI_CHAN_WIDTH_80 = 3; 80 MHz channel, the NL80211_ATTR_CENTER_FREQ1 attribute must be provided as well.
WIFI_CHAN_WIDTH_80P80 = 4; 80+80 MHz channel, the NL80211_ATTR_CENTER_FREQ1 and NL80211_ATTR_CENTER_FREQ2 attributes must be provided as well.
WIFI_CHAN_WIDTH_160 = 5; 160 MHz channel, the %NL80211_ATTR_CENTER_FREQ1 attribute must be provided as well
WIFI_CHAN_WIDTH_5 = 6; 5 MHz OFDM channel
WIFI_CHAN_WIDTH_10 = 7; 10 MHz OFDM channel


WiFi signal types WIFI_SIGNAL_TYPE_*
Note: As per Linux cfg80211.h CFG80211_SIGNAL_TYPE_*
WIFI_SIGNAL_TYPE_NONE = 0; No signal strength information available
WIFI_SIGNAL_TYPE_MBM = 1; Signal strength in mBm (100*dBm)
WIFI_SIGNAL_TYPE_UNSPEC = 2; Signal strength, increasing from 0 through 100


WiFi TX power adjustment WIFI_TX_POWER_*
Note: As per Linux nl80211.h NL80211_TX_POWER_*
WIFI_TX_POWER_AUTOMATIC = 0; Automatically determine transmit power
WIFI_TX_POWER_LIMITED = 1; Limit TX power by the mBm parameter
WIFI_TX_POWER_FIXED = 2; Fix TX power to the mBm parameter


WiFi RX flags WIFI_RX_FLAG_*
Note: As per Linux mac80211.h RX_FLAG_*
WIFI_RX_FLAG_MMIC_ERROR = (1 shl 0); Michael MIC error was reported on this frame
WIFI_RX_FLAG_DECRYPTED = (1 shl 1); This frame was decrypted in hardware
WIFI_RX_FLAG_MMIC_STRIPPED = (1 shl 3); The Michael MIC is stripped off this frame, verification has been done by the hardware.
WIFI_RX_FLAG_IV_STRIPPED = (1 shl 4); The IV/ICV are stripped from this frame
WIFI_RX_FLAG_FAILED_FCS_CRC = (1 shl 5); Set this flag if the FCS check failed on the frame
WIFI_RX_FLAG_FAILED_PLCP_CRC = (1 shl 6); Set this flag if the PCLP check failed on the frame
WIFI_RX_FLAG_MACTIME_START = (1 shl 7); The timestamp passed in the RX status MACTime field is valid and contains the time the first symbol of the MPDU was received
WIFI_RX_FLAG_SHORTPRE = (1 shl 8); Short preamble was used for this frame
WIFI_RX_FLAG_HT = (1 shl 9); HT MCS was used and RateIndex is MCS index
WIFI_RX_FLAG_40MHZ = (1 shl 10); HT40 (40 MHz) was used
WIFI_RX_FLAG_SHORT_GI = (1 shl 11); Short guard interval was used
WIFI_RX_FLAG_NO_SIGNAL_VAL = (1 shl 12); The signal strength value is not present. Valid only for data frames (mainly A-MPDU).
WIFI_RX_FLAG_HT_GF = (1 shl 13); This frame was received in a HT-greenfield transmission
WIFI_RX_FLAG_AMPDU_DETAILS = (1 shl 14); A-MPDU details are known
WIFI_RX_FLAG_AMPDU_REPORT_ZEROLEN = (1 shl 15); Driver reports 0-length subframes
WIFI_RX_FLAG_AMPDU_IS_ZEROLEN = (1 shl 16); This is a zero-length subframe
WIFI_RX_FLAG_AMPDU_LAST_KNOWN = (1 shl 17); Last subframe is known
WIFI_RX_FLAG_AMPDU_IS_LAST = (1 shl 18); This subframe is the last subframe of the A-MPDU
WIFI_RX_FLAG_AMPDU_DELIM_CRC_ERROR = (1 shl 19); A delimiter CRC error has been detected on this subframe
WIFI_RX_FLAG_AMPDU_DELIM_CRC_KNOWN = (1 shl 20); The delimiter CRC field is known
WIFI_RX_FLAG_MACTIME_END = (1 shl 21); The timestamp passed in the RX status MACTime field is valid and contains the time the last symbol of the MPDU (including FCS) was received
WIFI_RX_FLAG_VHT = (1 shl 22); HT MCS was used and RateIndex is MCS index
WIFI_RX_FLAG_LDPC = (1 shl 23); LDPC was used
WIFI_RX_FLAG_STBC_MASK = (1 shl 26) or (1 shl 27); STBC 2 bit bitmask. 1 - Nss=1, 2 - Nss=2, 3 - Nss=3
WIFI_RX_FLAG_10MHZ = (1 shl 28); 10 MHz (half channel) was used
WIFI_RX_FLAG_5MHZ = (1 shl 29); 5 MHz (quarter channel) was used
WIFI_RX_FLAG_AMSDU_MORE = (1 shl 30); Some drivers may prefer to report separate A-MSDU subframes instead of a one huge frame for performance reasons
WIFI_RX_FLAG_RADIOTAP_VENDOR_DATA = (1 shl 31); This frame contains vendor-specific radiotap data in the data (before the frame)


WiFi RX VHT flags WIFI_RX_VHT_FLAG_*
Note: As per Linux mac80211.h RX_VHT_FLAG_*
WIFI_RX_VHT_FLAG_80MHZ = (1 shl 0); 80 MHz was used
WIFI_RX_VHT_FLAG_160MHZ = (1 shl 1); 160 MHz was used
WIFI_RX_VHT_FLAG_BF = (1 shl 2); Packet was beamformed


Type definitions



IEEE 802.11 header

PIEEE80211Header = ^TIEEE80211Header;

TIEEE80211Header = record

Note: From Linux ieee80211.h ieee80211_hdr

Not Packed

FrameControl:Word; LE16
DurationId:Word; LE16
Address1:THardwareAddress;  
Address2:THardwareAddress;  
Address3:THardwareAddress;  
SequenceControl:Word; LE16
Address4:THardwareAddress;  

IEEE 802.11 header 3 address

PIEEE80211Header3Address = ^TIEEE80211Header3Address;

TIEEE80211Header3Address = record

Note: From Linux ieee80211.h ieee80211_hdr_3addr

Not Packed

FrameControl:Word; LE16
DurationId:Word; LE16
Address1:THardwareAddress;  
Address2:THardwareAddress;  
Address3:THardwareAddress;  
SequenceControl:Word; LE16

IEEE 802.11 QOS header

PIEEE80211QOSHeader = ^TIEEE80211QOSHeader;

TIEEE80211QOSHeader = record

Note: From Linux ieee80211.h ieee80211_qos_hdr

Not Packed

FrameControl:Word; LE16
DurationId:Word; LE16
Address1:THardwareAddress;  
Address2:THardwareAddress;  
Address3:THardwareAddress;  
SequenceControl:Word; LE16
QoSControl:Word; LE16

IEEE 802.11 S header

PIEEE80211SHeader = ^TIEEE80211SHeader;

TIEEE80211SHeader = record

Note: From Linux ieee80211.h ieee80211s_hdr

Not Packed

Flags:Byte;  
TTL:Byte;  
SequenceNumber:LongWord; LE32
Address1:THardwareAddress;  
Address2:THardwareAddress;  

IEEE 802.11 quiet information element

PIEEE80211QuietIE = ^TIEEE80211QuietIE;

TIEEE80211QuietIE = packed record

Note: From Linux ieee80211.h ieee80211_quiet_ie
Count:Byte;  
Period:Byte;  
Duration:Word; LE16
Offset:Word; LE16

IEEE 802.11 measurement request/report information element

PIEEE80211MeasurementIE = ^TIEEE80211MeasurementIE;

TIEEE80211MeasurementIE = packed record

Note: From Linux ieee80211.h ieee80211_msrment_ie
Token:Byte;  
Mode:Byte;  
TType:Byte; Type
Request:array[0..0] of Byte;  

IEEE 802.11 channel switch announcement information element

PIEEE80211ChannelSwitchIE = ^TIEEE80211ChannelSwitchIE;

TIEEE80211ChannelSwitchIE = packed record

Note: From Linux ieee80211.h ieee80211_channel_sw_ie
Mode:Byte;  
NewChannel:Byte;  
Count:Byte;  

IEEE 802.11 extended channel switch announcement information element

PIEEE80211ExtChannelSwitchIE = ^TIEEE80211ExtChannelSwitchIE;

TIEEE80211ExtChannelSwitchIE = packed record

Note: From Linux ieee80211.h ieee80211_ext_chansw_ie
Mode:Byte;  
NewOperatingClass:Byte;  
NewChannel:Byte;  
Count:Byte;  

IEEE 802.11 secondary channel offset information element

PIEEE80211SecondaryChannelOffsetIE = ^TIEEE80211SecondaryChannelOffsetIE;

TIEEE80211SecondaryChannelOffsetIE = packed record

Note: From Linux ieee80211.h ieee80211_sec_chan_offs_ie
SecondaryChannelOffset:Byte; Secondary channel offset, uses IEEE80211_HT_PARAM_CHA_SEC_* values here

IEEE 802.11 mesh channel switch parameters information element

PIEEE80211MeshChannelSwitchParamsIE = ^TIEEE80211MeshChannelSwitchParamsIE;

TIEEE80211MeshChannelSwitchParamsIE = packed record

Note: From Linux ieee80211.h ieee80211_mesh_chansw_params_ie
MeshTTL:Byte;  
MeshFlags:Byte; See IEEE80211_CHAN_SWITCH_PARAM_*
MeshReason:Word; LE16
MeshPreValue:Word; LE16

IEEE 802.11 wide bandwidth channel switch information element

PIEEE80211WidebandChannelSwitchIE = ^TIEEE80211WidebandChannelSwitchIE;

TIEEE80211WidebandChannelSwitchIE = packed record

Note: From Linux ieee80211.h ieee80211_wide_bw_chansw_ie
NewChannelWidth:Byte;  
NewCenterFreqSeg0:Byte;  
NewCenterFreqSeg1:Byte;  

IEEE 802.11 traffic indication map information element

PIEEE80211TrafficIndicationMapIE = ^TIEEE80211TrafficIndicationMapIE;

TIEEE80211TrafficIndicationMapIE = packed record

Note: From Linux ieee80211.h ieee80211_tim_ie
DTIMCount:Byte;  
DTIMPeriod:Byte;  
BitmapControl:Byte;  
VirtualMap:array[0..0] of Byte; Variable size: 1 - 251 bytes

IEEE 802.11 mesh configuration information element

PIEEE80211MeshConfigurationIE = ^TIEEE80211MeshConfigurationIE;

TIEEE80211MeshConfigurationIE = packed record

Note: From Linux ieee80211.h ieee80211_meshconf_ie
MeshConfPSEL:Byte;  
MeshConfPMetric:Byte;  
MeshconfCongest:Byte;  
MeshconfSynch:Byte;  
MeshConfAuth:Byte;  
MeshConfForm:Byte;  
MeshConfCap:Byte;  

IEEE 802.11 root announcement information element

PIEEE80211RootAnnouncementIE = ^TIEEE80211RootAnnouncementIE;

TIEEE80211RootAnnouncementIE = packed record

Note: From Linux ieee80211.h ieee80211_rann_ie
RannFlags:Byte;  
RannHopcount:Byte;  
RannTTL:Byte;  
RannAddress:THardwareAddress;  
RannSequence:LongWord; LE32
RannInterval:LongWord; LE32
RannMetric:LongWord; LE32

IEEE 802.11 TPC report information element

PIEEE80211TPCReportIE = ^TIEEE80211TPCReportIE;

TIEEE80211TPCReportIE = packed record

Note: From Linux ieee80211.h ieee80211_tpc_report_ie
TXPower:Byte;  
LinkMargin:Byte;  

IEEE 802.11 management authority

TIEEE80211ManagementAuth = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
AuthAlgorithm:Word; LE16
AuthTransaction:Word; LE16
StatusCode:Word; LE16
Possibly followed by Challenge text
Variable:array[0..0] of Byte;  

IEEE 802.11 management deauthority

TIEEE80211ManagementDeauth = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ReasonCode:Word; LE16

IEEE 802.11 management association request

TIEEE80211ManagementAssocRequest = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
CapabilitiesInfo:Word; LE16
ListenInterval:Word; LE16
Followed by SSID and Supported rates
Variable:array[0..0] of Byte;  

IEEE 802.11 management association response

TIEEE80211ManagementAssocResponse = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
CapabilitiesInfo:Word; LE16
StatusCode:Word; LE16
AID:Word; LE16
Followed by Supported rates
Variable:array[0..0] of Byte;  

IEEE 802.11 management reassociation request

TIEEE80211ManagementReassocRequest = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
CapabilitiesInfo:Word; LE16
ListenInterval:Word; LE16
CurrentAP:THardwareAddress;  
Followed by SSID and Supported rates
Variable:array[0..0] of Byte;  

IEEE 802.11 management disassociation

TIEEE80211ManagementDisassoc = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ReasonCode:Word; LE16

IEEE 802.11 management beacon

TIEEE80211ManagementBeacon = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
Timestamp:Int64; LE64
BeaconInterval:Word; LE16
CapabilitiesInfo:Word; LE16
Followed by some of SSID, Supported rates, FH Params, DS Params, CF Params, IBSS Params, TIM
Variable:array[0..0] of Byte;  

IEEE 802.11 management probe request

TIEEE80211ManagementProbeRequest = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
Only variable items: SSID, Supported rates
Variable:array[0..0] of Byte;  

IEEE 802.11 management probe response

TIEEE80211ManagementProbeResponse = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
Timestamp:Int64; LE64
BeaconInterval:Word; LE16
CapabilitiesInfo:Word; LE16
Followed by some of SSID, Supported rates, FH Params, DS Params, CF Params, IBSS Params
Variable:array[0..0] of Byte;  

IEEE 802.11 management action WME action

TIEEE80211ManagementActionWMEAction = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
DialogToken:Byte;  
StatusCode:Byte;  
Variable:array[0..0] of Byte;  

IEEE 802.11 management action channel switch

TIEEE80211ManagementActionChannelSwitch = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
Variable:array[0..0] of Byte;  

IEEE 802.11 management action extended channel switch

TIEEE80211ManagementActionExtChannelSwitch = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
Data:TIEEE80211ExtChannelSwitchIE;  
Variable:array[0..0] of Byte;  

IEEE 802.11 management action measurement

TIEEE80211ManagementActionMeasurement = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
DialogToken:Byte;  
ElementID:Byte;  
Length:Byte;  
Element:TIEEE80211MeasurementIE;  

IEEE 802.11 management action add BA request

TIEEE80211ManagementActionAddBARequest = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
DialogToken:Byte;  
Capability:Word; LE16
Timeout:Word; LE16
StartSequenceNumber:Word; LE16

IEEE 802.11 management action add BA response

TIEEE80211ManagementActionAddBAResponse = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
DialogToken:Byte;  
Status:Word; LE16
Capability:Word; LE16
Timeout:Word; LE16

IEEE 802.11 management action delete BA

TIEEE80211ManagementActionDelBA = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
Params:Word; LE16
ReasonCode:Word; LE16

IEEE 802.11 management action self protection

TIEEE80211ManagementActionSelfProt = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
Variable:array[0..0] of Byte;  

IEEE 802.11 management action mesh action

TIEEE80211ManagementActionMeshAction = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
Variable:array[0..0] of Byte;  

IEEE 802.11 management action SA query

TIEEE80211ManagementActionSAQuery = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
TransID:array[0..WLAN_SA_QUERY_TR_ID_LEN - 1] of Byte;  

IEEE 802.11 management action HTSMPS

TIEEE80211ManagementActionHTSMPS = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
Action:Byte;  
SMPSControl:Byte;  

IEEE 802.11 management action HT notify channel width

TIEEE80211ManagementActionHTNotifyChannelWidth = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
ChannelWidth:Byte;  

IEEE 802.11 management action TDLS discover response

TIEEE80211ManagementActionTDLSDiscoverResponse = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
DialogToken:Byte;  
Capability:Word; LE16
Variable:array[0..0] of Byte;  

IEEE 802.11 management action VHT opmode notify

TIEEE80211ManagementActionVHTOpmodeNotify = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
OperatingMode:Byte;  

IEEE 802.11 management action TPC report

TIEEE80211ManagementActionTPCReport = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
ActionCode:Byte;  
DialogToken:Byte;  
TPCElementID:Byte;  
TPCElementLength:Byte;  
TPC:TIEEE80211TPCReportIE;  

IEEE 802.11 management action

TIEEE80211ManagementAction = packed record

Note: From Linux ieee80211.h ieee80211_mgmt
case Integer of  
0:(WMEAction:TIEEE80211ManagementAuth);  
1:(ChannelSwitch:TIEEE80211ManagementActionChannelSwitch);  
2:(ExtChannelSwitch:TIEEE80211ManagementActionExtChannelSwitch);  
3:(Measurement:TIEEE80211ManagementActionMeasurement);  
4:(AddBARequest:TIEEE80211ManagementActionAddBARequest);  
5:(AddBAResponse:TIEEE80211ManagementActionAddBAResponse);  
6:(DelBA:TIEEE80211ManagementActionDelBA);  
7:(SelfProt:TIEEE80211ManagementActionSelfProt);  
8:(MeshAction:TIEEE80211ManagementActionMeshAction);  
9:(SAQuery:TIEEE80211ManagementActionSAQuery);  
10:(HTSMPS:TIEEE80211ManagementActionHTSMPS);  
11:(HTNotifyChannelWidth:TIEEE80211ManagementActionHTNotifyChannelWidth);  
12:(TDLSDiscoverResponse:TIEEE80211ManagementActionTDLSDiscoverResponse);  
13:(VHTOpmodeNotify:TIEEE80211ManagementActionVHTOpmodeNotify);  
14:(TPCReport:TIEEE80211ManagementActionTPCReport);  

IEEE 802.11 management

PIEEE80211Management = ^TIEEE80211Management;

TIEEE80211Management = record

Note: From Linux ieee80211.h ieee80211_mgmt

Not Packed

FrameControl:Word; LE16
Duration:Word; LE16
DestinationAddress:THardwareAddress;  
SourceAddress:THardwareAddress;  
BSSID:THardwareAddress;  
SequenceControl:Word; LE16
case Integer of  
0:(Auth:TIEEE80211ManagementAuth);  
1:(Deauth:TIEEE80211ManagementDeauth);  
2:(AssocRequest:TIEEE80211ManagementAssocRequest);  
3:(AssocResponse:TIEEE80211ManagementAssocResponse);  
4:(ReassocResponse:TIEEE80211ManagementAssocResponse);  
5:(ReassocRequest:TIEEE80211ManagementReassocRequest);  
6:(Disassoc:TIEEE80211ManagementDisassoc);  
7:(Beacon:TIEEE80211ManagementBeacon);  
8:(ProbeRequest:TIEEE80211ManagementProbeRequest);  
9:(ProbeResponse:TIEEE80211ManagementProbeResponse);  
10:(Action:TIEEE80211ManagementAction);  

IEEE 802.11 management MIC information element (IEEE 802.11w)

PIEEE80211ManagementMICIE = ^TIEEE80211ManagementMICIE;

TIEEE80211ManagementMICIE = packed record

Note: From Linux ieee80211.h ieee80211_mmie
ElementID:Byte;  
Length:Byte;  
KeyID:Word; LE16
SequenceNumber:array[0..5] of Byte;  
MIC:array[0..7] of Byte;  

IEEE 802.11 management MIC information element (IEEE 802.11w) for GMAC and CMAC-256

PIEEE80211ManagementMIC16IE = ^TIEEE80211ManagementMIC16IE;

TIEEE80211ManagementMIC16IE = packed record

Note: From Linux ieee80211.h ieee80211_mmie_16
ElementID:Byte;  
Length:Byte;  
KeyID:Word; LE16
SequenceNumber:array[0..5] of Byte;  
MIC:array[0..15] of Byte;  

IEEE 802.11 vendor information element

PIEEE80211VendorIE = ^TIEEE80211VendorIE;

TIEEE80211VendorIE = packed record

Note: From Linux ieee80211.h ieee80211_vendor_ie
ElementID:Byte;  
Length:Byte;  
OUI:array[0..2] of Byte;  
OUIType:Byte;  

IEEE 802.11 WMM AC parameters

PIEEE80211WMMACParam = ^TIEEE80211WMMACParam;

TIEEE80211WMMACParam = packed record

Note: From Linux ieee80211.h ieee80211_wmm_ac_param
ACI_AIFSN:Byte; AIFSN, ACM, ACI
CW:Byte; ECWmin, ECWmax (CW = 2^ECW - 1)
TXOpLimit:Word; LE16

IEEE 802.11 WMM parameters information element

PIEEE80211WMMParamIE = ^TIEEE80211WMMParamIE;

TIEEE80211WMMParamIE = packed record

Note: From Linux ieee80211.h ieee80211_wmm_param_ie
ElementID:Byte; Element ID: 221 (= $dd);
Length:Byte; Length: 24
Required fields for WMM version 1
OUI:array[0..2] of Byte; 00:50:f2
OUIType:Byte; 2
OUISubType:Byte; 1
Version:Byte; 1 for WMM version 1.0
QoSInfo:Byte; AP/STA specific QoS info
Reserved:Byte; 0
AC_BE, AC_BK, AC_VI, AC_VO
AC:array[0..3] of TIEEE80211WMMACParam;  

IEEE 802.11 RTS

PIEEE80211RTS = ^TIEEE80211RTS;

TIEEE80211RTS = record

Note: Not Packed
FrameControl:Word; LE16
Duration:Word; LE16
ReceiverAddress:THardwareAddress;  
TransmitterAddress:THardwareAddress;  

IEEE 802.11 CTS

PIEEE80211CTS = ^TIEEE80211CTS;

TIEEE80211CTS = record

Note: Not Packed
FrameControl:Word; LE16
Duration:Word; LE16
ReceiverAddress:THardwareAddress;  

IEEE 802.11 PS poll

PIEEE80211PSPoll = ^TIEEE80211PSPoll;

TIEEE80211PSPoll = record

Note: Not Packed
FrameControl:Word; LE16
AID:Word; LE16
BSSID:THardwareAddress;  
TransmitterAddress:THardwareAddress;  

IEEE 802.11 channel switch timing

PIEEE80211ChannelSwitchTiming = ^TIEEE80211ChannelSwitchTiming;

TIEEE80211ChannelSwitchTiming = packed record

Note: From Linux ieee80211.h ieee80211_ch_switch_timing
SwitchTime:Word; LE16
SwitchTimeout:Word; LE16

IEEE 802.11 TDLS link-id information element

PIEEE80211TDLSLinkIdentifierIE = ^TIEEE80211TDLSLinkIdentifierIE;

TIEEE80211TDLSLinkIdentifierIE = packed record

Note: From Linux ieee80211.h ieee80211_tdls_lnkie
ElementID:Byte; Link Identifier IE
Length:Byte;  
BSSID:THardwareAddress;  
InitiatingStation:THardwareAddress;  
RespondingStation:THardwareAddress;  

IEEE 802.11 TDLS data setup request

TIEEE80211TDLSDataSetupRequest = packed record

DialogToken:Byte;  
Capability:Word; LE16
Variable:array[0..0] of Byte;  

IEEE 802.11 TDLS data setup response

TIEEE80211TDLSDataSetupResponse = packed record

StatusCode:Word; LE16
DialogToken:Byte;  
Capability:Word; LE16
Variable:array[0..0] of Byte;  

IEEE 802.11 TDLS data setup confirmation

TIEEE80211TDLSDataSetupConfirm = packed record

StatusCode:Word; LE16
DialogToken:Byte;  
Variable:array[0..0] of Byte;  

IEEE 802.11 TDLS data teardown

TIEEE80211TDLSDataTeardown = packed record

ReasonCode:Word; LE16
Variable:array[0..0] of Byte;  

IEEE 802.11 TDLS data discover request

TIEEE80211TDLSDataDiscoverRequest = packed record

DialogToken:Byte;  
Variable:array[0..0] of Byte;  

IEEE 802.11 TDLS data channel switch request

TIEEE80211TDLSDataChannelSwitchRequest = packed record

TargetChannel:Byte;  
OperatingClass:Byte;  
Variable:array[0..0] of Byte;  

IEEE 802.11 TDLS data channel switch response

TIEEE80211TDLSDataChannelSwitchResponse = packed record

StatusCode:Word; LE16
Variable:array[0..0] of Byte;  

IEEE 802.11 TDLS data

PIEEE80211TDLSData = ^TIEEE80211TDLSData;

TIEEE80211TDLSData = packed record

Note: From Linux ieee80211.h ieee80211_tdls_data
DestinationAddress:THardwareAddress;  
SourceAddress:THardwareAddress;  
EtherType:Word; BE16 (As per Ethernet Header)
PayloadType:Byte;  
Category:Byte;  
ActionCode:Byte;  
case Integer of  
0:(SetupRequest:TIEEE80211TDLSDataSetupRequest);  
1:(SetupResponse:TIEEE80211TDLSDataSetupResponse);  
2:(SetupConfirm:TIEEE80211TDLSDataSetupConfirm);  
3:(Teardown:TIEEE80211TDLSDataTeardown);  
4:(DiscoverRequest:TIEEE80211TDLSDataDiscoverRequest);  
5:(ChannelSwitchRequest:TIEEE80211TDLSDataChannelSwitchRequest);  
6:(ChannelSwitchResponse:TIEEE80211TDLSDataChannelSwitchResponse);  

IEEE 802.11 P2P notice of absence description

PIEEE80211P2PNOADescription = ^TIEEE80211P2PNOADescription;

TIEEE80211P2PNOADescription = packed record

Note: From Linux ieee80211.h ieee80211_p2p_noa_desc
Count:Byte;  
Duration:LongWord; LE32
Interval:LongWord; LE32
StartTime:LongWord; LE32

IEEE 802.11 P2P notice of absence attribute

PIEEE80211P2PNOAAttribute = ^TIEEE80211P2PNOAAttribute;

TIEEE80211P2PNOAAttribute = packed record

Note: From Linux ieee80211.h ieee80211_p2p_noa_attr
Index:Byte;  
OPPPS_CTWindow:Byte;  
Description:array[0..IEEE80211_P2P_NOA_DESC_MAX - 1] of TIEEE80211P2PNOADescription;  

IEEE 802.11 HT block acknowledgement request

PIEEE80211Bar = ^TIEEE80211Bar;

TIEEE80211Bar = packed record

Note: This structure refers to "HT BlockAckReq" as described in 802.11n draft section 7.2.1.7.1

From Linux ieee80211.h ieee80211_bar

FrameControl:Word; LE16
Duration:Word; LE16
ReceiverAddress:THardwareAddress;  
TransmitterAddress:THardwareAddress;  
Control:Word; LE16
StartSequenceNumber:Word; LE16

IEEE 802.11 HT MCS information

PIEEE80211MCSInfo = ^TIEEE80211MCSInfo;

TIEEE80211MCSInfo = packed record

Note: From Linux ieee80211.h ieee80211_mcs_info
RXMask:array[0..IEEE80211_HT_MCS_MASK_LEN - 1] of Byte; RX mask
RXHighest:Word; Highest supported RX rate (LE16). If set represents the highest supported RX data rate in units of 1 Mbps. If this field is 0 this value should not be used to consider the highest RX data rate supported.
TXParams:Byte; TX parameters
Reserved:array[0..2] of Byte;  

IEEE 802.11 HT capabilities

PIEEE80211HTCapabilities = ^TIEEE80211HTCapabilities;

TIEEE80211HTCapabilities = packed record

Note: This structure is the "HT capabilities element" as described in 802.11n D5.0 7.3.2.57

From Linux ieee80211.h ieee80211_ht_cap

CapabilityInfo:Word; LE16
AMPDUParamsInfo:Byte;  
MCS:TIEEE80211MCSInfo; 16 bytes MCS information
ExtendedHTCapInfo:Word; LE16
TXBFCapInfo:LongWord; LE32
AntennaSelectionInfo:Byte;  

IEEE 802.11 HT operation

PIEEE80211HTOperation = ^TIEEE80211HTOperation;

TIEEE80211HTOperation = packed record

Note: From Linux ieee80211.h ieee80211_ht_operation
PrimaryChannel:Byte;  
HTParam:Byte;  
OperationMode:Word; LE16
STBCParam:Word; LE16
BasicSet:array[0..15] of Byte;  

IEEE 802.11 VHT MCS information

PIEEE80211VHTMCSInfo = ^TIEEE80211VHTMCSInfo;

TIEEE80211VHTMCSInfo = packed record

Note: From Linux ieee80211.h ieee80211_vht_mcs_info
RXMCSMap:Word; LE16 RX MCS map 2 bits for each stream, total 8 streams
RXHighest:Word; LE16 Indicates highest long GI VHT PPDU data rate STA can receive. Rate expressed in units of 1 Mbps. If this field is 0 this value should not be used to consider the highest RX data rate supported. The top 3 bits of this field are reserved.
TXMCSMap:Word; LE16 TX MCS map 2 bits for each stream, total 8 streams
TXHighest:Word; LE16 Indicates highest long GI VHT PPDU data rate STA can transmit. Rate expressed in units of 1 Mbps. If this field is 0 this value should not be used to consider the highest TX data rate supported. The top 3 bits of this field are reserved.

IEEE 802.11 VHT capabilities

PIEEE80211VHTCapabilities = ^TIEEE80211VHTCapabilities;

TIEEE80211VHTCapabilities = packed record

Note: This structure is the "VHT capabilities element" as described in 802.11ac D3.0 8.4.2.160

From Linux ieee80211.h ieee80211_vht_cap

VHTCapabilityInfo:LongWord; LE32 VHT capability info
SupportedMCS:TIEEE80211VHTMCSInfo; VHT MCS supported rates

IEEE 802.11 VHT operation

PIEEE80211VHTOperation = ^TIEEE80211VHTOperation;

TIEEE80211VHTOperation = packed record

Note: This structure is the "VHT operation element" as described in 802.11ac D3.0 8.4.2.161

From Linux ieee80211.h ieee80211_vht_operation

ChannelWidth:Byte;  
CenterFreqSeg1Idx:Byte;  
CenterFreqSeg2Idx:Byte;  
BasicMCSSet:Word; LE16

IEEE 802.11 country triplet information element channels

TIEEE80211CountryTripletIEChannels = packed record

FirstChannel:Byte;  
NumChannels:Byte;  
MaxPower:ShortInt;  

IEEE 802.11 country triplet information element extended

TIEEE80211CountryTripletIEExt = packed record

RegExtensionID:Byte;  
RegClass:Byte;  
CoverageClass:Byte;  

IEEE 802.11 country triplet information element

PIEEE80211CountryTripletIE = ^TIEEE80211CountryTripletIE;

TIEEE80211CountryTripletIE = packed record

Note: Channels numbers in the IE must be monotonically increasing if dot11RegulatoryClassesRequired is not true. If dot11RegulatoryClassesRequired is true consecutive subband triplets following a regulatory triplet shall have monotonically increasing first_channel number fields. Channel numbers shall not overlap. Note that MaxPower is signed.

From Linux ieee80211.h ieee80211_country_ie_triplet

case Integer of  
0:(Channels:TIEEE80211CountryTripletIEChannels);  
1:(Ext:TIEEE80211CountryTripletIEExt);  

IEEE 802.11 timeout interval information element

PIEEE80211TimeoutIntervalIE = ^TIEEE80211TimeoutIntervalIE;

TIEEE80211TimeoutIntervalIE = packed record

Note: From Linux ieee80211.h ieee80211_timeout_interval_ie
IntervalType:Byte;  
Value:LongWord; LE32

IEEE 802.11 Tspec information element

PIEEE80211TSpecIE = ^TIEEE80211TSpecIE;

TIEEE80211TSpecIE = packed record

Note: From Linux ieee80211.h ieee80211_tspec_ie
ElementID:Byte;  
Length:Byte;  
OUI:array[0..2] of Byte;  
OUIType:Byte;  
OUISubType:Byte;  
Version:Byte;  
TSInfo:Word; LE16
TSInfoReserved:Byte;  
NominalMSDU:Word; LE16
MaxMSDU:Word; LE16
MinServiceInt:LongWord; LE32
MaxServiceInt:LongWord; LE32
InactivityInt:LongWord; LE32
SuspensionInt:LongWord; LE32
ServiceStartTime:LongWord; LE32
MinDataRate:LongWord; LE32
MeanDataRate:LongWord; LE32
PeakDataRate:LongWord; LE32
MaxBurstSize:LongWord; LE32
DelayBound:LongWord; LE32
MinPhyRate:LongWord; LE32
SBA:Word; LE16
MediumTime:Word; LE16

IEEE 802.11 channel

PIEEE80211Channel = ^TIEEE80211Channel;

TIEEE80211Channel = record

Note: These structures are NOT defined by IEEE 802.11 but are internal to the implementation

From Linux cfg80211.h ieee80211_channel

Band:LongWord; IEEE80211_BAND_2GHZ etc
CenterFrequency:Word;  
HardwareChannel:Word;  
Flags:LongWord; IEEE80211_CHAN_DISABLED etc
MaxAntennaGain:LongInt;  
MaxPower:LongInt;  
MaxRegPower:LongInt;  
BeaconFound:LongBool;  

IEEE 802.11 channels

PIEEE80211Channels = ^TIEEE80211Channels;

TIEEE80211Channels = array[0..0] of TIEEE80211Channel;

   

IEEE 802.11 rate

PIEEE80211Rate = ^TIEEE80211Rate;

TIEEE80211Rate = record

Note: From Linux cfg80211.h ieee80211_rate
Flags:LongWord; Rate-specific flags
BitRate:Word; Bitrate in units of 100 Kbps
HardwareRate:Word; Driver/hardware value for this rate
HardwareRateShort:Word; Driver/hardware value for this rate when short preamble is used

IEEE 802.11 rates

PIEEE80211Rates = ^TIEEE80211Rates;

TIEEE80211Rates = array[0..0] of TIEEE80211Rate;

   

IEEE 802.11 channel definition

PIEEE80211ChannelDefinition = ^TIEEE80211ChannelDefinition;

TIEEE80211ChannelDefinition = record

Channel:PIEEE80211Channel; Control channel
Width:LongWord; Channel width (See WIFI_CHAN_WIDTH_*)
CenterFrequency1:LongWord; Center frequency of first segment
CenterFrequency2:LongWord; Center frequency of second segment (only with 80+80 MHz)

IEEE 802.11 station HT capabilities

PIEEE80211StationHTCap = ^TIEEE80211StationHTCap;

TIEEE80211StationHTCap = record

Note: From Linux cfg80211.h ieee80211_sta_ht_cap
Capabilities:LongWord; HT capabilities map as described in 802.11n spec (eg IEEE80211_HT_CAP_*)
HTSupported:LongBool; True if HT supported by the STA
AMPDUFactor:LongWord; Maximum A-MPDU length factor
AMPDUDensity:LongWord; Minimum A-MPDU spacing
MCS:TIEEE80211MCSInfo; Supported MCS rates

IEEE 802.11 station VHT capabilities

PIEEE80211StationVHTCap = ^TIEEE80211StationVHTCap;

TIEEE80211StationVHTCap = record

Note: From Linux cfg80211.h ieee80211_sta_vht_cap
Capabilities:LongWord; VHT capabilities map as described in 802.11ac spec (eg IEEE80211_VHT_CAP_*)
VHTSupported:LongBool; True if VHT supported by the STA
VHTMCS:TIEEE80211VHTMCSInfo; Supported VHT MCS rates

IEEE 802.11 supported band

PIEEE80211SupportedBand = ^TIEEE80211SupportedBand;

TIEEE80211SupportedBand = record

Note: From Linux cfg80211.h ieee80211_supported_band
Channels:PIEEE80211Channels;  
Rates:PIEEE80211Rates;  
ChannelCount:LongWord;  
RateCount:LongWord;  
HTCapabilities:TIEEE80211StationHTCap;  
VHTCapabilities:TIEEE80211StationVHTCap;  

IEEE 802.11 BSS configuration

PIEEE80211BSSConfiguration = ^TIEEE80211BSSConfiguration;

TIEEE80211BSSConfiguration = record

Note: From Linux mac80211.h ieee80211_bss_conf
BSSID:PByte; The BSSID for this BSS
Association related
Associated:LongBool; Association status
IBSSJoined:LongBool; Indicates whether this station is part of an IBSS or not
IBSSCreator:LongBool; Indicates if a new IBSS network is being created
AssociationID:Word; Association Id number, valid only when Associated is true
ERP related
UseCTSProtection:LongBool; Use CTS protection
UseShortPreamble:LongBool; Use 802.11b short preamble (if the hardware cannot handle this it must set the IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE flag)
UseShortSlot:LongBool; Use short slot time (only relevant for ERP) (if the hardware cannot handle this it must set the IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE flag)
EnableBeacon:LongBool; Whether beaconing should be enabled or not
DTIMPeriod:Byte; No of beacons before the next DTIM, for beaconing, valid in station mode only if after the driver was notified with the BSS_CHANGED_BEACON_INFO flag, will be non-zero then.
BeaconInterval:Word; Beacon interval
AssociationCapability:Word; Capabilities taken from association response
SyncTSF:Int64; Last beacon's/probe response's TSF timestamp (could be old as it may have been received during scanning long ago)
SyncDeviceTS:LongWord; The device timestamp corresponding to the SyncTSF
SyncDTIMCount:Byte; Only valid when IEEE80211_HW_TIMING_BEACON_ONLY is requested
BasicRates:LongWord; Bitmap of basic rates, each bit stands for an index into the rate table configured by the driver in the current band
BeaconRate:PIEEE80211Rate; Associated AP's beacon TX rate
MulticastRate:array[0..IEEE80211_NUM_BANDS - 1] of Integer; Per-band multicast rate index + 1 (0: disabled)
HTOperationMode:Word; HT operation mode like in TIEEE80211HTOperation
CQMRSSIThreshold:LongInt; Connection quality monitor RSSI threshold, a zero value implies disabled.
CQMRSSIHysteresis:LongWord; Connection quality monitor RSSI hysteresis
ChannelDefinition:TIEEE80211ChannelDefinition; Channel definition for this BSS (the hardware might be configured a higher bandwidth than this BSS uses)
QoS:LongBool; This is a QoS-enabled BSS
Idle:LongBool; This interface is idle. There's also a global idle flag in the hardware config which may be more appropriate depending on what your driver/device needs to do.
Powersave:LongBool; Power-save mode (STA only). This flag is NOT affected by offchannel/dynamic_ps operations.
SSID:array[0..IEEE80211_MAX_SSID_LEN - 1] of Byte; The SSID of the current interface. Valid in AP and IBSS mode.
SSIDLength:LongWord; Length of SSID given in SSID
HiddenSSID:LongBool; The SSID of the current interface is hidden. Only valid in AP-mode.
TXPower:LongInt; TX power in dBm
TXPowerType:LongWord; TX power adjustment used to control per packet Transmit Power Control (TPC) in driver for the current interface (WIFI_TX_POWER_*)
P2PNOAAttribute:TIEEE80211P2PNOAAttribute; P2P NoA attribute for P2P powersave

IEEE 802.11 RX status

PIEEE80211RXStatus = ^TIEEE80211RXStatus;

TIEEE80211RXStatus = record

Note: From Linux mac80211.h ieee80211_rx_status
MACTime:Int64; Value in microseconds of the 64-bit Time Synchronization Function (TSF) timer when the first data symbol (MPDU) arrived at the hardware
DeviceTimestamp:LongWord; Arbitrary timestamp for the device
AMPDUReference:LongWord; A-MPDU reference number, must be a different value for each A-MPDU but the same for each subframe within one A-MPDU.
Flags:LongWord; WIFI_RX_FLAG_*
Frequency:Word; Frequency the radio was tuned to when receiving this frame, in MHz.
VHTFlags:Byte; WIFI_RX_VHT_FLAG_*
RateIndex:Byte; Index of data rate into band's supported rates or MCS index if HT or VHT is used (WIFI_RX_FLAG_HT/WIFI_RX_FLAG_VHT)
VHTNSS:Byte; Number of streams (VHT only)
RXFlags:Byte; Internal RX flags (IEEE80211_RX_*)
Band:Byte; The active band when this frame was received
Antenna:Byte; Antenna used
Signal:Byte; Signal strength when receiving this frame, either in dBm, in dB or unspecified depending on the hardware capabilities flags IEEE80211_HW_SIGNAL_*
Chains:Byte; Bitmask of receive chains for which separate signal strength values were filled
ChainSignal:array[0..IEEE80211_MAX_CHAINS - 1] of Byte; Per-chain signal strength, in dBm (unlike Signal, doesn't support dB or unspecified units).
AMPDUDelimiterCRC:Byte; A-MPDU delimiter CRC

IEEE 802.11 TX information

PIEEE80211TXInfo = ^TIEEE80211TXInfo;

TIEEE80211TXInfo = record

Note: From Linux mac80211.h ieee80211_tx_info
 

IEEE 802.11 information elements

PIEEE80211InformationElements = ^TIEEE80211InformationElements;

TIEEE80211InformationElements = record

Note: From Linux ieee80211_i.h ieee802_11_elems
Address:Pointer;  
Size:LongWord;  
Information Elements
LinkIdentifier:PIEEE80211TDLSLinkIdentifierIE;  
ChannelSwitchTiming:PIEEE80211ChannelSwitchTiming;  
ExtendedCapabilities:Pointer;  
SSID:Pointer;  
SupportedRates:Pointer;  
DSParameters:Pointer;  
TrafficIndicationMap:PIEEE80211TrafficIndicationMapIE;  
ChallengeText:Pointer;  
RSN:Pointer;  
ERPInfo:Pointer;  
ExtendedSupportedRates:Pointer;  
WMMInfo:Pointer;  
WMMParam:Pointer;  
HTCapabilities:PIEEE80211HTCapabilities;  
HTOperation:PIEEE80211HTOperation;  
VHTCapabilities:PIEEE80211VHTCapabilities;  
VHTOperation:PIEEE80211VHTOperation;  
MeshConfiguration:PIEEE80211MeshConfigurationIE;  
MeshID:Pointer;  
PeerManagement:Pointer;  
MeshAwakeWindow:Word; LE16
PREQ:Pointer;  
PREP:Pointer;  
PERR:Pointer;  
RootAnnouncement:PIEEE80211RootAnnouncementIE;  
ChannelSwitch:PIEEE80211ChannelSwitchIE;  
ExtChannelSwitch:PIEEE80211ExtChannelSwitchIE;  
WidebandChannelSwitch:PIEEE80211WidebandChannelSwitchIE;  
Country:Pointer;  
PowerConstraint:Pointer;  
CiscoDTPC:Pointer;  
TimeoutInterval:PIEEE80211TimeoutIntervalIE;  
OpmodeNotification:Pointer;  
SecondaryChannelOffset:PIEEE80211SecondaryChannelOffsetIE;  
MeshChannelSwitchParams:PIEEE80211MeshChannelSwitchParamsIE;  
Lengths of Elements
ExtendedCapabilitiesLength:Byte;  
SSIDLength:Byte;  
SupportedRatesLength:Byte;  
TrafficIndicationMapLength:Byte;  
ChallengeTextLength:Byte;  
RSNLength:Byte;  
ExtendedSupportedRatesLength:Byte;  
WMMInfoLength:Byte;  
WMMParamLength:Byte;  
MeshIDLength:Byte;  
PeerManagementLength:Byte;  
PREQLength:Byte;  
PREPLength:Byte;  
PERRLength:Byte;  
CountryLength:Byte;  

WiFi device event

PWiFiDeviceEvent = ^TWiFiDeviceEvent;

TWiFiDeviceEvent = record

Timer:TTimerHandle;  
Device:PNetworkDevice;  

WiFi hardware

PWiFiHardware = ^TWiFiHardware;

TWiFiHardware = record

Flags:LongWord; Hardware flags (See IEEE80211_HW_*)
ExtraTXHeadroom:LongWord; Headroom to reserve in each transmit buffer for use by the driver (e.g. for transmit headers)
ExtraBeaconTailroom:LongWord; Tailroom to reserve in each beacon tx buffer. Can be used by drivers to add extra IE.
MaxListenInterval:LongWord; Max listen interval in units of beacon interval that HW supports
MaxSignal:LongInt; Maximum value for signal (RSSI) in RX information
MaxRates:LongWord; Maximum number of alternate rate retry stages the hw can handle
MaxReportRates:LongWord; Maximum number of alternate rate retry stages the hw can report back
MaxRateTries:LongWord; Maximum number of tries for each stage
MaxRXAggregationSubframes:LongWord; Maximum buffer size (number of sub-frames) to be used for A-MPDU block ack receiver aggregation
MaxTXAggregationSubframes:LongWord; Maximum number of subframes in an aggregate an HT driver will transmit, used by the peer as a hint to size its reorder buffer.

WiFi configuration

PWiFiConfiguration = ^TWiFiConfiguration;

TWiFiConfiguration = record

Flags:LongWord; Configuration flags (See IEEE80211_CONF_*)
PowerLevel:LongInt; Requested transmit power (in dBm), backward compatibility value only that is set to the minimum of all interfaces.
ListenInterval:LongWord; Listen interval in units of beacon interval
LongFrameMaxTXCount:LongWord; Maximum number of transmissions for a "long" frame (a frame not RTS protected), called "dot11LongRetryLimit" in 802.11, but actually means the number of transmissions not the number of retries.
ShortFrameMaxTXCount:LongWord; Maximum number of transmissions for a "short" frame, called "dot11ShortRetryLimit" in 802.11, but actually means the number of transmissions not the number of retries.
RadarEnabled:LongBool; Whether radar detection is enabled
SMPSMode:LongWord; Spatial multiplexing powersave mode. Note that IEEE80211_SMPS_STATIC is used when the device is not configured for an HT channel.
ChannelDefinition:TIEEE80211ChannelDefinition; The channel definition to tune to

WiFi interface

PWiFiInterface = ^TWiFiInterface;

TWiFiInterface = record

InterfaceType:LongWord; Type of this virtual interface (WIFI_IFTYPE_*)
Address:THardwareAddress; Address of this interface
BSSConfiguration:TIEEE80211BSSConfiguration; BSS configuration for this interface, either our own or the BSS we're associated to.
 
DriverFlags:LongWord; Interface specific flags (IEEE80211_VIF_*)

WiFi device configure

TWiFiDeviceConfigure = function(WiFi:PWiFiDevice; Flags:LongWord):LongWord;

WiFi device configure filter

TWiFiDeviceConfigureFilter = function(WiFi:PWiFiDevice; var Filter:LongWord):LongWord;

WiFi device configuration interface

TWiFiDeviceConfigureInterface = function(WiFi:PWiFiDevice; Interrface:PWiFiInterface):LongWord;

WiFi device

PWiFiDevice = ^TWiFiDevice;

TWiFiDevice = record

Network Properties
Network:TNetworkDevice;  
WiFi Properties
WiFiFlags:LongWord; Flags for this WiFi device (eg WIFI_FLAG_*)
WiFiState:LongWord; State of this WiFi device (eg WIFI_STATE_*)
WiFiStatus:LongWord; Status of this WiFi device (eg WIFI_STATUS_*)
WiFiFeatures:LongWord; Features of this WiFi device (eg WIFI_FEATURE_*)
DeviceConfigure:TWiFiDeviceConfigure;  
DeviceConfigureFilter:TWiFiDeviceConfigureFilter;  
DeviceConfigureInterface:TWiFiDeviceConfigureInterface;  
 
PermanentAddress:THardwareAddress; The permanent MAC address of this device
AddressMask:THardwareAddress; If the device supports multiple MAC addresses by masking, set this to a mask with variable bits set to 1, e.g. if the last four bits are variable then set it to 00-00-00-00-00-0f
Addresses:PHardwareAddresses; If the device has more than one address, set this to a list of addresses (6 bytes each). The first one will be used by default for PermanentAddress. In this case, the mask should be set to all zeroes.
AddressCount:LongWord; The number of addresses in Addresses array
InterfaceModes:LongWord; Bitmask of interfaces types valid for this wifi, must be set by driver (eg 1 shl WIFI_IFTYPE_*)
 
SignalType:LongWord; Signal type reported in bss
RetryShort:LongWord; Retry limit for short frames (dot11ShortRetryLimit)
RetryLong:LongWord; Retry limit for long frames (dot11LongRetryLimit)
FragThreshold:LongWord; Fragmentation threshold (dot11FragmentationThreshold); -1 = fragmentation disabled, only odd values >= 256 used
RTSThreshold:LongWord; RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled
CoverageClass:LongWord; Current coverage class
MaxCSACounters:Byte; Number of supported csa_counters in beacons and probe responses
 
MaxScanSSIDs:Byte; Maximum number of SSIDs the device can scan for in any given scan
MaxScanIELength:Word; Maximum length of user-controlled IEs device can add to probe request frames transmitted during a scan, must not include fixed IEs like supported rates.
 
MaxRemainOnChannelDuration:Word; Maximum time a remain-on-channel operation may request, if implemented.
 
CipherSuites:PLongWord;  
CipherSuiteCount:LongWord;  
 
Bands:array[0..IEEE80211_NUM_BANDS - 1] of PIEEE80211SupportedBand;  
 
RXChains:LongWord; Number of RX chains the hardware has
TXHeadroom:LongWord; Required headroom for hardware
ScanIELength:LongWord;  
 
Hardware:TWiFiHardware; Hardware information and state
Configuration:TWiFiConfiguration; Configuration of the device
Interrface:TWiFiInterface; Interface of the device
Driver Properties
 


Class definitions



WiFi adapter

TWiFiAdapter = class(TNetworkAdapter)

constructor Create(AManager:TAdapterManager; ADevice:PNetworkDevice; const AName:String);  
private
FDefaultAddress:THardwareAddress;  
FHardwareAddress:THardwareAddress;  
FBroadcastAddress:THardwareAddress;  
FMulticastAddresses:TMulticastAddresses;  
 
function CheckReceiveFrame(APacket:PNetworkPacket; AStatus:PIEEE80211RXStatus):Boolean;  
 
function ReceiveHandler(APacket:PNetworkPacket; AStatus:PIEEE80211RXStatus):Boolean;  
 
function ScanReceiver(APacket:PNetworkPacket; AStatus:PIEEE80211RXStatus):Boolean;  
function DataReceiver(APacket:PNetworkPacket; AStatus:PIEEE80211RXStatus):Boolean;  
protected
 
public
function AddTransport(APacketType,AFrameType:Word; const APacketName:String; APacketHandler:TAdapterPacketHandler):THandle; override;  
function RemoveTransport(AHandle:THandle; APacketType:Word):Boolean; override;  
 
function GetMTU(AHandle:THandle):Word; override;  
 
function SendPacket(AHandle:THandle; ADest:Pointer; APacket:PPacketFragment; ASize:Integer):Boolean; override;  
 
function GetDefaultAddress(AHandle:THandle):THardwareAddress; override;  
function GetHardwareAddress(AHandle:THandle):THardwareAddress; override;  
function SetHardwareAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; override;  
function GetBroadcastAddress(AHandle:THandle):THardwareAddress; override;  
function GetMulticastAddresses(AHandle:THandle):TMulticastAddresses; override;  
 
function AddMulticastAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; override;  
function RemoveMulticastAddress(AHandle:THandle; const AAddress:THardwareAddress):Boolean; override;  
 
function StartAdapter:Boolean; override;  
function StopAdapter:Boolean; override;  
function ProcessAdapter:Boolean; override;  

EAPOL transport adapter

TEAPOLTransportAdapter = class(TTransportAdapter)

constructor Create;  
private
 
public
 

EAPOL transport

TEAPOLTransport = class(TNetworkTransport)

constructor Create(AManager:TTransportManager; const AName:String);  
destructor Destroy; override;  
private
function PacketHandler(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;  
protected
 
public
function AddAdapter(AAdapter:TNetworkAdapter; AConfigType:Word; AAddress,ANetmask,AGateway,AServer:Pointer):Boolean; override;  
function RemoveAdapter(AAdapter:TNetworkAdapter):Boolean; override;  
 
function StartTransport:Boolean; override;  
function StopTransport:Boolean; override;  
function ProcessTransport:Boolean; override;  
 
function BindTransport(AAdapter:TNetworkAdapter):Boolean; override;  
function UnbindTransport(AAdapter:TNetworkAdapter):Boolean; override;  

RSN transport adapter

TRSNTransportAdapter = class(TTransportAdapter)

constructor Create;  
private
 
public
 

RSN transport

TRSNTransport = class(TNetworkTransport)

constructor Create(AManager:TTransportManager; const AName:String);  
destructor Destroy; override;  
private
function PacketHandler(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;  
protected
 
public
function AddAdapter(AAdapter:TNetworkAdapter; AConfigType:Word; AAddress,ANetmask,AGateway,AServer:Pointer):Boolean; override;  
function RemoveAdapter(AAdapter:TNetworkAdapter):Boolean; override;  
 
function StartTransport:Boolean; override;  
function StopTransport:Boolean; override;  
function ProcessTransport:Boolean; override;  
 
function BindTransport(AAdapter:TNetworkAdapter):Boolean; override;  
function UnbindTransport(AAdapter:TNetworkAdapter):Boolean; override;  


Public variables


None defined

Function declarations



Initialization functions

procedure WiFiInit;
Description: To be documented
Note None documented


function WiFiStart(Data:Pointer; Event:LongWord):LongWord;
Description: To be documented
Note None documented


function WiFiStop(Data:Pointer; Event:LongWord):LongWord;
Description: To be documented
Note None documented


function WiFiStartCompleted:Boolean;
Description: To be documented
Return Returns True if the WiFi sub system has been started


WiFi functions

function WiFiDeviceConfigure(WiFi:PWiFiDevice; Flags:LongWord):LongWord;
Description: To be documented
Note None documented


function WiFiDeviceConfigureFilter(WiFi:PWiFiDevice; var Filter:LongWord):LongWord;
Description: To be documented
Note None documented


function WiFiDeviceConfigureInterface(WiFi:PWiFiDevice; Interrface:PWiFiInterface):LongWord; 
Description: To be documented
Note None documented


function WiFiDeviceCreate:PWiFiDevice;
Description: Create a new WiFi entry
Return Pointer to new WiFi entry or nil if entry could not be created


function WiFiDeviceCreateEx(Size:LongWord):PWiFiDevice;
Description: Create a new WiFi entry
Size Size in bytes to allocate for new entry (Including the WiFi entry)
Return Pointer to new WiFi entry or nil if entry could not be created


function WiFiDeviceDestroy(WiFi:PWiFiDevice):LongWord;
Description: To be documented
Note None documented


function WiFiDeviceRegister(WiFi:PWiFiDevice):LongWord;
Description: To be documented
Note None documented


function WiFiDeviceDeregister(WiFi:PWiFiDevice):LongWord;
Description: To be documented
Note None documented


WiFi helper functions

function WiFiConfigurationIsHT(Configuration:PWiFiConfiguration):Boolean;
Description: To be documented
Note conf_is_ht


function WiFiConfigurationIsHT20(Configuration:PWiFiConfiguration):Boolean;
Description: To be documented
Note conf_is_ht20


function WiFiConfigurationIsHT40(Configuration:PWiFiConfiguration):Boolean;
Description: To be documented
Note conf_is_ht40


function WiFiConfigurationIsHT40Plus(Configuration:PWiFiConfiguration):Boolean;
Description: To be documented
Note conf_is_ht40_plus


function WiFiConfigurationIsHT40Minus(Configuration:PWiFiConfiguration):Boolean;
Description: To be documented
Note conf_is_ht40_minus


procedure WiFiNetworkDeviceAdd(Event:PWiFiDeviceEvent);
Description: To be documented
Note None documented


function WiFiNetworkDeviceRemove(Network:PNetworkDevice):LongWord;
Description: To be documented
Note None documented


function WiFiNetworkDeviceEnum(Network:PNetworkDevice; Data:Pointer):LongWord;
Description: To be documented
Note None documented


function WiFiNetworkDeviceNotify(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
Description: To be documented
Note None documented


IEEE 802.11 helper functions

function IEEE80211HasToDS(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_TODS is set
Note ieee80211_has_tods


function IEEE80211HasFromDS(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_FROMDS is set
Note ieee80211_has_fromds


function IEEE80211HasA4(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_TODS and IEEE80211_FCTL_FROMDS are set
Note ieee80211_has_a4


function IEEE80211HasMoreFrags(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_MOREFRAGS is set
Note ieee80211_has_morefrags


function IEEE80211HasRetry(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_RETRY is set
Note ieee80211_has_retry


function IEEE80211HasPM(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_PM is set
Note ieee80211_has_pm


function IEEE80211HasMoreData(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_MOREDATA is set
Note ieee80211_has_moredata


function IEEE80211HasProtected(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_PROTECTED is set
Note ieee80211_has_protected


function IEEE80211HasOrder(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FCTL_ORDER is set
Note ieee80211_has_order


function IEEE80211IsMgmt(FrameControl:Word):Boolean; inline;
Description: Check if type is IEEE80211_FTYPE_MGMT
Note ieee80211_is_mgmt


function IEEE80211IsCtl(FrameControl:Word):Boolean; inline;
Description: Check if type is IEEE80211_FTYPE_CTL
Note ieee80211_is_ctl


function IEEE80211IsData(FrameControl:Word):Boolean; inline;
Description: Check if type is IEEE80211_FTYPE_DATA
Note ieee80211_is_data


function IEEE80211IsDataQoS(FrameControl:Word):Boolean; inline;
Description: Check if type is IEEE80211_FTYPE_DATA and IEEE80211_STYPE_QOS_DATA is set
Note ieee80211_is_data_qos


function IEEE80211IsDataPresent(FrameControl:Word):Boolean; inline;
Description: Check if type is IEEE80211_FTYPE_DATA and has data
Note ieee80211_is_data_present


function IEEE80211IsAssocReq(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ASSOC_REQ
Note ieee80211_is_assoc_req


function IEEE80211IsAssocResp(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ASSOC_RESP
Note ieee80211_is_assoc_resp


function IEEE80211IsReassocReq(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_REASSOC_REQ
Note ieee80211_is_reassoc_req


function IEEE80211IsReassocResp(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_REASSOC_RESP
Note ieee80211_is_reassoc_resp


function IEEE80211IsProbeReq(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_PROBE_REQ
Note ieee80211_is_probe_req


function IEEE80211IsProbeResp(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_PROBE_RESP
Note ieee80211_is_probe_resp


function IEEE80211IsBeacon(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_BEACON
Note ieee80211_is_beacon


function IEEE80211IsATIM(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ATIM
Note ieee80211_is_atim


function IEEE80211IsDisassoc(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_DISASSOC
Note ieee80211_is_disassoc


function IEEE80211IsAuth(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_AUTH
Note ieee80211_is_auth


function IEEE80211IsDeauth(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_DEAUTH
Note ieee80211_is_deauth


function IEEE80211IsAction(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ACTION
Note ieee80211_is_action


function IEEE80211IsBackReq(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_BACK_REQ
Note ieee80211_is_back_req


function IEEE80211IsBack(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_BACK
Note ieee80211_is_back


function IEEE80211IsPSPoll(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_PSPOLL
Note ieee80211_is_pspoll


function IEEE80211IsRTS(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_RTS
Note ieee80211_is_rts


function IEEE80211IsCTS(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_CTS
Note ieee80211_is_cts


function IEEE80211IsACK(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_ACK
Note ieee80211_is_ack


function IEEE80211IsCFEnd(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_CFEND
Note ieee80211_is_cfend


function IEEE80211IsCFEndAck(FrameControl:Word):Boolean; inline;
Description: Check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_CFENDACK
Note ieee80211_is_cfendack


function IEEE80211IsNullFunc(FrameControl:Word):Boolean; inline;
Description: Check if frame is a regular (non-QoS) nullfunc frame
Note ieee80211_is_nullfunc


function IEEE80211IsQoSNullFunc(FrameControl:Word):Boolean; inline;
Description: Check if frame is a QoS nullfunc frame
Note ieee80211_is_qos_nullfunc


function IEEE80211IsBufferableMMPDU(FrameControl:Word):Boolean; inline;
Description: Check if frame is bufferable MMPDU
Note ieee80211_is_bufferable_mmpdu


function IEEE80211IsFirstFrag(SequenceControl:Word):Boolean; inline;
Description: Check if IEEE80211_SCTL_FRAG is not set
Note ieee80211_is_first_frag


function IEEE80211HeaderLength(FrameControl:Word):LongWord;
Description: To be documented
Note ieee80211_hdrlen


function IEEE80211HeaderLengthFromBuffer(Data:Pointer; Size:LongWord):LongWord;
Description: To be documented
Note ieee80211_get_hdrlen_from_skb


function IEEE80211MCSToChains(MCS:PIEEE80211MCSInfo):Byte;
Description: To be documented
Note ieee80211_mcs_to_chains


function IEEE80211ChannelToFrequency(Channel:Integer; Band:LongWord):Integer;
Description: To be documented
Note ieee80211_channel_to_frequency


function IEEE80211FrequencyToChannel(Frequency:Integer):Integer;
Description: To be documented
Note ieee80211_frequency_to_channel


procedure IEEE80211InitializeChannelDefinition(Definition:PIEEE80211ChannelDefinition; Channel:PIEEE80211Channel; ChannelType:LongWord);
Description: To be documented
Note cfg80211_chandef_create


function IEEE80211FindInformationElement(Identifier:Byte; InformationElement:PByte; ElementLength:LongWord):PByte;
Description: To be documented
Note cfg80211_find_ie


function IEEE80211ParseInformationElements(Buffer:Pointer; Size:LongWord; Action:Boolean; Elements:PIEEE80211InformationElements):Boolean;
Description: To be documented
Note ieee802_11_parse_elems_crc


Return to Unit Reference