139beb93cSSam Leffler /* 239beb93cSSam Leffler * IEEE 802.11 Frame type definitions 34bc52338SCy Schubert * Copyright (c) 2002-2019, Jouni Malinen <j@w1.fi> 439beb93cSSam Leffler * Copyright (c) 2007-2008 Intel Corporation 539beb93cSSam Leffler * 6f05cddf9SRui Paulo * This software may be distributed under the terms of the BSD license. 7f05cddf9SRui Paulo * See README for more details. 839beb93cSSam Leffler */ 939beb93cSSam Leffler 1039beb93cSSam Leffler #ifndef IEEE802_11_DEFS_H 1139beb93cSSam Leffler #define IEEE802_11_DEFS_H 1239beb93cSSam Leffler 13325151a3SRui Paulo #include <utils/common.h> 14325151a3SRui Paulo 1539beb93cSSam Leffler /* IEEE 802.11 defines */ 1639beb93cSSam Leffler 1739beb93cSSam Leffler #define WLAN_FC_PVER 0x0003 1839beb93cSSam Leffler #define WLAN_FC_TODS 0x0100 1939beb93cSSam Leffler #define WLAN_FC_FROMDS 0x0200 2039beb93cSSam Leffler #define WLAN_FC_MOREFRAG 0x0400 2139beb93cSSam Leffler #define WLAN_FC_RETRY 0x0800 2239beb93cSSam Leffler #define WLAN_FC_PWRMGT 0x1000 2339beb93cSSam Leffler #define WLAN_FC_MOREDATA 0x2000 2439beb93cSSam Leffler #define WLAN_FC_ISWEP 0x4000 2539beb93cSSam Leffler #define WLAN_FC_ORDER 0x8000 2639beb93cSSam Leffler 2739beb93cSSam Leffler #define WLAN_FC_GET_TYPE(fc) (((fc) & 0x000c) >> 2) 2839beb93cSSam Leffler #define WLAN_FC_GET_STYPE(fc) (((fc) & 0x00f0) >> 4) 2939beb93cSSam Leffler 305b9c547cSRui Paulo #define WLAN_INVALID_MGMT_SEQ 0xFFFF 315b9c547cSRui Paulo 3239beb93cSSam Leffler #define WLAN_GET_SEQ_FRAG(seq) ((seq) & (BIT(3) | BIT(2) | BIT(1) | BIT(0))) 3339beb93cSSam Leffler #define WLAN_GET_SEQ_SEQ(seq) \ 3439beb93cSSam Leffler (((seq) & (~(BIT(3) | BIT(2) | BIT(1) | BIT(0)))) >> 4) 3539beb93cSSam Leffler 3639beb93cSSam Leffler #define WLAN_FC_TYPE_MGMT 0 3739beb93cSSam Leffler #define WLAN_FC_TYPE_CTRL 1 3839beb93cSSam Leffler #define WLAN_FC_TYPE_DATA 2 3939beb93cSSam Leffler 4039beb93cSSam Leffler /* management */ 4139beb93cSSam Leffler #define WLAN_FC_STYPE_ASSOC_REQ 0 4239beb93cSSam Leffler #define WLAN_FC_STYPE_ASSOC_RESP 1 4339beb93cSSam Leffler #define WLAN_FC_STYPE_REASSOC_REQ 2 4439beb93cSSam Leffler #define WLAN_FC_STYPE_REASSOC_RESP 3 4539beb93cSSam Leffler #define WLAN_FC_STYPE_PROBE_REQ 4 4639beb93cSSam Leffler #define WLAN_FC_STYPE_PROBE_RESP 5 4739beb93cSSam Leffler #define WLAN_FC_STYPE_BEACON 8 4839beb93cSSam Leffler #define WLAN_FC_STYPE_ATIM 9 4939beb93cSSam Leffler #define WLAN_FC_STYPE_DISASSOC 10 5039beb93cSSam Leffler #define WLAN_FC_STYPE_AUTH 11 5139beb93cSSam Leffler #define WLAN_FC_STYPE_DEAUTH 12 5239beb93cSSam Leffler #define WLAN_FC_STYPE_ACTION 13 5339beb93cSSam Leffler 5439beb93cSSam Leffler /* control */ 5539beb93cSSam Leffler #define WLAN_FC_STYPE_PSPOLL 10 5639beb93cSSam Leffler #define WLAN_FC_STYPE_RTS 11 5739beb93cSSam Leffler #define WLAN_FC_STYPE_CTS 12 5839beb93cSSam Leffler #define WLAN_FC_STYPE_ACK 13 5939beb93cSSam Leffler #define WLAN_FC_STYPE_CFEND 14 6039beb93cSSam Leffler #define WLAN_FC_STYPE_CFENDACK 15 6139beb93cSSam Leffler 6239beb93cSSam Leffler /* data */ 6339beb93cSSam Leffler #define WLAN_FC_STYPE_DATA 0 6439beb93cSSam Leffler #define WLAN_FC_STYPE_DATA_CFACK 1 6539beb93cSSam Leffler #define WLAN_FC_STYPE_DATA_CFPOLL 2 6639beb93cSSam Leffler #define WLAN_FC_STYPE_DATA_CFACKPOLL 3 6739beb93cSSam Leffler #define WLAN_FC_STYPE_NULLFUNC 4 6839beb93cSSam Leffler #define WLAN_FC_STYPE_CFACK 5 6939beb93cSSam Leffler #define WLAN_FC_STYPE_CFPOLL 6 7039beb93cSSam Leffler #define WLAN_FC_STYPE_CFACKPOLL 7 7139beb93cSSam Leffler #define WLAN_FC_STYPE_QOS_DATA 8 72f05cddf9SRui Paulo #define WLAN_FC_STYPE_QOS_DATA_CFACK 9 73f05cddf9SRui Paulo #define WLAN_FC_STYPE_QOS_DATA_CFPOLL 10 74f05cddf9SRui Paulo #define WLAN_FC_STYPE_QOS_DATA_CFACKPOLL 11 75f05cddf9SRui Paulo #define WLAN_FC_STYPE_QOS_NULL 12 76f05cddf9SRui Paulo #define WLAN_FC_STYPE_QOS_CFPOLL 14 77f05cddf9SRui Paulo #define WLAN_FC_STYPE_QOS_CFACKPOLL 15 7839beb93cSSam Leffler 7939beb93cSSam Leffler /* Authentication algorithms */ 8039beb93cSSam Leffler #define WLAN_AUTH_OPEN 0 8139beb93cSSam Leffler #define WLAN_AUTH_SHARED_KEY 1 8239beb93cSSam Leffler #define WLAN_AUTH_FT 2 83f05cddf9SRui Paulo #define WLAN_AUTH_SAE 3 8485732ac8SCy Schubert #define WLAN_AUTH_FILS_SK 4 8585732ac8SCy Schubert #define WLAN_AUTH_FILS_SK_PFS 5 8685732ac8SCy Schubert #define WLAN_AUTH_FILS_PK 6 8739beb93cSSam Leffler #define WLAN_AUTH_LEAP 128 8839beb93cSSam Leffler 8939beb93cSSam Leffler #define WLAN_AUTH_CHALLENGE_LEN 128 9039beb93cSSam Leffler 9139beb93cSSam Leffler #define WLAN_CAPABILITY_ESS BIT(0) 9239beb93cSSam Leffler #define WLAN_CAPABILITY_IBSS BIT(1) 9339beb93cSSam Leffler #define WLAN_CAPABILITY_CF_POLLABLE BIT(2) 9439beb93cSSam Leffler #define WLAN_CAPABILITY_CF_POLL_REQUEST BIT(3) 9539beb93cSSam Leffler #define WLAN_CAPABILITY_PRIVACY BIT(4) 9639beb93cSSam Leffler #define WLAN_CAPABILITY_SHORT_PREAMBLE BIT(5) 9739beb93cSSam Leffler #define WLAN_CAPABILITY_PBCC BIT(6) 9839beb93cSSam Leffler #define WLAN_CAPABILITY_CHANNEL_AGILITY BIT(7) 9939beb93cSSam Leffler #define WLAN_CAPABILITY_SPECTRUM_MGMT BIT(8) 100780fb4a2SCy Schubert #define WLAN_CAPABILITY_QOS BIT(9) 10139beb93cSSam Leffler #define WLAN_CAPABILITY_SHORT_SLOT_TIME BIT(10) 102780fb4a2SCy Schubert #define WLAN_CAPABILITY_APSD BIT(11) 103780fb4a2SCy Schubert #define WLAN_CAPABILITY_RADIO_MEASUREMENT BIT(12) 10439beb93cSSam Leffler #define WLAN_CAPABILITY_DSSS_OFDM BIT(13) 105780fb4a2SCy Schubert #define WLAN_CAPABILITY_DELAYED_BLOCK_ACK BIT(14) 106780fb4a2SCy Schubert #define WLAN_CAPABILITY_IMM_BLOCK_ACK BIT(15) 10739beb93cSSam Leffler 10885732ac8SCy Schubert /* Status codes (IEEE Std 802.11-2016, 9.4.1.9, Table 9-46) */ 10939beb93cSSam Leffler #define WLAN_STATUS_SUCCESS 0 11039beb93cSSam Leffler #define WLAN_STATUS_UNSPECIFIED_FAILURE 1 111f05cddf9SRui Paulo #define WLAN_STATUS_TDLS_WAKEUP_ALTERNATE 2 112f05cddf9SRui Paulo #define WLAN_STATUS_TDLS_WAKEUP_REJECT 3 113f05cddf9SRui Paulo #define WLAN_STATUS_SECURITY_DISABLED 5 114f05cddf9SRui Paulo #define WLAN_STATUS_UNACCEPTABLE_LIFETIME 6 115f05cddf9SRui Paulo #define WLAN_STATUS_NOT_IN_SAME_BSS 7 11639beb93cSSam Leffler #define WLAN_STATUS_CAPS_UNSUPPORTED 10 11739beb93cSSam Leffler #define WLAN_STATUS_REASSOC_NO_ASSOC 11 11839beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12 11939beb93cSSam Leffler #define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13 12039beb93cSSam Leffler #define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14 12139beb93cSSam Leffler #define WLAN_STATUS_CHALLENGE_FAIL 15 12239beb93cSSam Leffler #define WLAN_STATUS_AUTH_TIMEOUT 16 12339beb93cSSam Leffler #define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17 12439beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_RATES 18 12539beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19 12639beb93cSSam Leffler #define WLAN_STATUS_SPEC_MGMT_REQUIRED 22 12739beb93cSSam Leffler #define WLAN_STATUS_PWR_CAPABILITY_NOT_VALID 23 12839beb93cSSam Leffler #define WLAN_STATUS_SUPPORTED_CHANNEL_NOT_VALID 24 12939beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_NO_SHORT_SLOT_TIME 25 130f05cddf9SRui Paulo #define WLAN_STATUS_ASSOC_DENIED_NO_HT 27 131e28a4053SRui Paulo #define WLAN_STATUS_R0KH_UNREACHABLE 28 132f05cddf9SRui Paulo #define WLAN_STATUS_ASSOC_DENIED_NO_PCO 29 13339beb93cSSam Leffler #define WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY 30 13439beb93cSSam Leffler #define WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION 31 135e28a4053SRui Paulo #define WLAN_STATUS_UNSPECIFIED_QOS_FAILURE 32 13685732ac8SCy Schubert #define WLAN_STATUS_DENIED_INSUFFICIENT_BANDWIDTH 33 13785732ac8SCy Schubert #define WLAN_STATUS_DENIED_POOR_CHANNEL_CONDITIONS 34 13885732ac8SCy Schubert #define WLAN_STATUS_DENIED_QOS_NOT_SUPPORTED 35 139e28a4053SRui Paulo #define WLAN_STATUS_REQUEST_DECLINED 37 140e28a4053SRui Paulo #define WLAN_STATUS_INVALID_PARAMETERS 38 14185732ac8SCy Schubert #define WLAN_STATUS_REJECTED_WITH_SUGGESTED_CHANGES 39 14239beb93cSSam Leffler #define WLAN_STATUS_INVALID_IE 40 14339beb93cSSam Leffler #define WLAN_STATUS_GROUP_CIPHER_NOT_VALID 41 14439beb93cSSam Leffler #define WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID 42 14539beb93cSSam Leffler #define WLAN_STATUS_AKMP_NOT_VALID 43 14639beb93cSSam Leffler #define WLAN_STATUS_UNSUPPORTED_RSN_IE_VERSION 44 14739beb93cSSam Leffler #define WLAN_STATUS_INVALID_RSN_IE_CAPAB 45 14839beb93cSSam Leffler #define WLAN_STATUS_CIPHER_REJECTED_PER_POLICY 46 14939beb93cSSam Leffler #define WLAN_STATUS_TS_NOT_CREATED 47 15039beb93cSSam Leffler #define WLAN_STATUS_DIRECT_LINK_NOT_ALLOWED 48 15139beb93cSSam Leffler #define WLAN_STATUS_DEST_STA_NOT_PRESENT 49 15239beb93cSSam Leffler #define WLAN_STATUS_DEST_STA_NOT_QOS_STA 50 15339beb93cSSam Leffler #define WLAN_STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE 51 15439beb93cSSam Leffler #define WLAN_STATUS_INVALID_FT_ACTION_FRAME_COUNT 52 1553157ba21SRui Paulo #define WLAN_STATUS_INVALID_PMKID 53 1563157ba21SRui Paulo #define WLAN_STATUS_INVALID_MDIE 54 1573157ba21SRui Paulo #define WLAN_STATUS_INVALID_FTIE 55 15885732ac8SCy Schubert #define WLAN_STATUS_REQUESTED_TCLAS_NOT_SUPPORTED 56 15985732ac8SCy Schubert #define WLAN_STATUS_INSUFFICIENT_TCLAS_PROCESSING_RESOURCES 57 16085732ac8SCy Schubert #define WLAN_STATUS_TRY_ANOTHER_BSS 58 161f05cddf9SRui Paulo #define WLAN_STATUS_GAS_ADV_PROTO_NOT_SUPPORTED 59 162f05cddf9SRui Paulo #define WLAN_STATUS_NO_OUTSTANDING_GAS_REQ 60 163f05cddf9SRui Paulo #define WLAN_STATUS_GAS_RESP_NOT_RECEIVED 61 164f05cddf9SRui Paulo #define WLAN_STATUS_STA_TIMED_OUT_WAITING_FOR_GAS_RESP 62 165f05cddf9SRui Paulo #define WLAN_STATUS_GAS_RESP_LARGER_THAN_LIMIT 63 166f05cddf9SRui Paulo #define WLAN_STATUS_REQ_REFUSED_HOME 64 167f05cddf9SRui Paulo #define WLAN_STATUS_ADV_SRV_UNREACHABLE 65 168f05cddf9SRui Paulo #define WLAN_STATUS_REQ_REFUSED_SSPN 67 169f05cddf9SRui Paulo #define WLAN_STATUS_REQ_REFUSED_UNAUTH_ACCESS 68 170f05cddf9SRui Paulo #define WLAN_STATUS_INVALID_RSNIE 72 17185732ac8SCy Schubert #define WLAN_STATUS_U_APSD_COEX_NOT_SUPPORTED 73 17285732ac8SCy Schubert #define WLAN_STATUS_U_APSD_COEX_MODE_NOT_SUPPORTED 74 17385732ac8SCy Schubert #define WLAN_STATUS_BAD_INTERVAL_WITH_U_APSD_COEX 75 174f05cddf9SRui Paulo #define WLAN_STATUS_ANTI_CLOGGING_TOKEN_REQ 76 175f05cddf9SRui Paulo #define WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED 77 17685732ac8SCy Schubert #define WLAN_STATUS_CANNOT_FIND_ALT_TBTT 78 177f05cddf9SRui Paulo #define WLAN_STATUS_TRANSMISSION_FAILURE 79 17885732ac8SCy Schubert #define WLAN_STATUS_REQ_TCLAS_NOT_SUPPORTED 80 17985732ac8SCy Schubert #define WLAN_STATUS_TCLAS_RESOURCES_EXCHAUSTED 81 180325151a3SRui Paulo #define WLAN_STATUS_REJECTED_WITH_SUGGESTED_BSS_TRANSITION 82 18185732ac8SCy Schubert #define WLAN_STATUS_REJECT_WITH_SCHEDULE 83 18285732ac8SCy Schubert #define WLAN_STATUS_REJECT_NO_WAKEUP_SPECIFIED 84 18385732ac8SCy Schubert #define WLAN_STATUS_SUCCESS_POWER_SAVE_MODE 85 184325151a3SRui Paulo #define WLAN_STATUS_PENDING_ADMITTING_FST_SESSION 86 18585732ac8SCy Schubert #define WLAN_STATUS_PERFORMING_FST_NOW 87 18685732ac8SCy Schubert #define WLAN_STATUS_PENDING_GAP_IN_BA_WINDOW 88 18785732ac8SCy Schubert #define WLAN_STATUS_REJECT_U_PID_SETTING 89 18885732ac8SCy Schubert #define WLAN_STATUS_REFUSED_EXTERNAL_REASON 92 18985732ac8SCy Schubert #define WLAN_STATUS_REFUSED_AP_OUT_OF_MEMORY 93 19085732ac8SCy Schubert #define WLAN_STATUS_REJECTED_EMERGENCY_SERVICE_NOT_SUPPORTED 94 1915b9c547cSRui Paulo #define WLAN_STATUS_QUERY_RESP_OUTSTANDING 95 19285732ac8SCy Schubert #define WLAN_STATUS_REJECT_DSE_BAND 96 19385732ac8SCy Schubert #define WLAN_STATUS_TCLAS_PROCESSING_TERMINATED 97 19485732ac8SCy Schubert #define WLAN_STATUS_TS_SCHEDULE_CONFLICT 98 195325151a3SRui Paulo #define WLAN_STATUS_DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL 99 19685732ac8SCy Schubert #define WLAN_STATUS_MCCAOP_RESERVATION_CONFLICT 100 19785732ac8SCy Schubert #define WLAN_STATUS_MAF_LIMIT_EXCEEDED 101 19885732ac8SCy Schubert #define WLAN_STATUS_MCCA_TRACK_LIMIT_EXCEEDED 102 19985732ac8SCy Schubert #define WLAN_STATUS_DENIED_DUE_TO_SPECTRUM_MANAGEMENT 103 2005b9c547cSRui Paulo #define WLAN_STATUS_ASSOC_DENIED_NO_VHT 104 20185732ac8SCy Schubert #define WLAN_STATUS_ENABLEMENT_DENIED 105 20285732ac8SCy Schubert #define WLAN_STATUS_RESTRICTION_FROM_AUTHORIZED_GDB 106 20385732ac8SCy Schubert #define WLAN_STATUS_AUTHORIZATION_DEENABLED 107 20485732ac8SCy Schubert #define WLAN_STATUS_FILS_AUTHENTICATION_FAILURE 112 20585732ac8SCy Schubert #define WLAN_STATUS_UNKNOWN_AUTHENTICATION_SERVER 113 20685732ac8SCy Schubert #define WLAN_STATUS_UNKNOWN_PASSWORD_IDENTIFIER 123 20739beb93cSSam Leffler 20885732ac8SCy Schubert /* Reason codes (IEEE Std 802.11-2016, 9.4.1.7, Table 9-45) */ 20939beb93cSSam Leffler #define WLAN_REASON_UNSPECIFIED 1 21039beb93cSSam Leffler #define WLAN_REASON_PREV_AUTH_NOT_VALID 2 21139beb93cSSam Leffler #define WLAN_REASON_DEAUTH_LEAVING 3 21239beb93cSSam Leffler #define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4 21339beb93cSSam Leffler #define WLAN_REASON_DISASSOC_AP_BUSY 5 21439beb93cSSam Leffler #define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6 21539beb93cSSam Leffler #define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7 21639beb93cSSam Leffler #define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8 21739beb93cSSam Leffler #define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9 21839beb93cSSam Leffler #define WLAN_REASON_PWR_CAPABILITY_NOT_VALID 10 21939beb93cSSam Leffler #define WLAN_REASON_SUPPORTED_CHANNEL_NOT_VALID 11 22085732ac8SCy Schubert #define WLAN_REASON_BSS_TRANSITION_DISASSOC 12 22139beb93cSSam Leffler #define WLAN_REASON_INVALID_IE 13 22239beb93cSSam Leffler #define WLAN_REASON_MICHAEL_MIC_FAILURE 14 22339beb93cSSam Leffler #define WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT 15 22439beb93cSSam Leffler #define WLAN_REASON_GROUP_KEY_UPDATE_TIMEOUT 16 22539beb93cSSam Leffler #define WLAN_REASON_IE_IN_4WAY_DIFFERS 17 22639beb93cSSam Leffler #define WLAN_REASON_GROUP_CIPHER_NOT_VALID 18 22739beb93cSSam Leffler #define WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID 19 22839beb93cSSam Leffler #define WLAN_REASON_AKMP_NOT_VALID 20 22939beb93cSSam Leffler #define WLAN_REASON_UNSUPPORTED_RSN_IE_VERSION 21 23039beb93cSSam Leffler #define WLAN_REASON_INVALID_RSN_IE_CAPAB 22 23139beb93cSSam Leffler #define WLAN_REASON_IEEE_802_1X_AUTH_FAILED 23 23239beb93cSSam Leffler #define WLAN_REASON_CIPHER_SUITE_REJECTED 24 233f05cddf9SRui Paulo #define WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE 25 234f05cddf9SRui Paulo #define WLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED 26 23585732ac8SCy Schubert #define WLAN_REASON_SSP_REQUESTED_DISASSOC 27 23685732ac8SCy Schubert #define WLAN_REASON_NO_SSP_ROAMING_AGREEMENT 28 23785732ac8SCy Schubert #define WLAN_REASON_BAD_CIPHER_OR_AKM 29 23885732ac8SCy Schubert #define WLAN_REASON_NOT_AUTHORIZED_THIS_LOCATION 30 23985732ac8SCy Schubert #define WLAN_REASON_SERVICE_CHANGE_PRECLUDES_TS 31 24085732ac8SCy Schubert #define WLAN_REASON_UNSPECIFIED_QOS_REASON 32 24185732ac8SCy Schubert #define WLAN_REASON_NOT_ENOUGH_BANDWIDTH 33 242f05cddf9SRui Paulo #define WLAN_REASON_DISASSOC_LOW_ACK 34 24385732ac8SCy Schubert #define WLAN_REASON_EXCEEDED_TXOP 35 24485732ac8SCy Schubert #define WLAN_REASON_STA_LEAVING 36 24585732ac8SCy Schubert #define WLAN_REASON_END_TS_BA_DLS 37 24685732ac8SCy Schubert #define WLAN_REASON_UNKNOWN_TS_BA 38 24785732ac8SCy Schubert #define WLAN_REASON_TIMEOUT 39 24885732ac8SCy Schubert #define WLAN_REASON_PEERKEY_MISMATCH 45 24985732ac8SCy Schubert #define WLAN_REASON_AUTHORIZED_ACCESS_LIMIT_REACHED 46 25085732ac8SCy Schubert #define WLAN_REASON_EXTERNAL_SERVICE_REQUIREMENTS 47 25185732ac8SCy Schubert #define WLAN_REASON_INVALID_FT_ACTION_FRAME_COUNT 48 25285732ac8SCy Schubert #define WLAN_REASON_INVALID_PMKID 49 25385732ac8SCy Schubert #define WLAN_REASON_INVALID_MDE 50 25485732ac8SCy Schubert #define WLAN_REASON_INVALID_FTE 51 2555b9c547cSRui Paulo #define WLAN_REASON_MESH_PEERING_CANCELLED 52 2565b9c547cSRui Paulo #define WLAN_REASON_MESH_MAX_PEERS 53 2575b9c547cSRui Paulo #define WLAN_REASON_MESH_CONFIG_POLICY_VIOLATION 54 2585b9c547cSRui Paulo #define WLAN_REASON_MESH_CLOSE_RCVD 55 2595b9c547cSRui Paulo #define WLAN_REASON_MESH_MAX_RETRIES 56 2605b9c547cSRui Paulo #define WLAN_REASON_MESH_CONFIRM_TIMEOUT 57 2615b9c547cSRui Paulo #define WLAN_REASON_MESH_INVALID_GTK 58 2625b9c547cSRui Paulo #define WLAN_REASON_MESH_INCONSISTENT_PARAMS 59 2635b9c547cSRui Paulo #define WLAN_REASON_MESH_INVALID_SECURITY_CAP 60 26485732ac8SCy Schubert #define WLAN_REASON_MESH_PATH_ERROR_NO_PROXY_INFO 61 26585732ac8SCy Schubert #define WLAN_REASON_MESH_PATH_ERROR_NO_FORWARDING_INFO 62 26685732ac8SCy Schubert #define WLAN_REASON_MESH_PATH_ERROR_DEST_UNREACHABLE 63 26785732ac8SCy Schubert #define WLAN_REASON_MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS 64 26885732ac8SCy Schubert #define WLAN_REASON_MESH_CHANNEL_SWITCH_REGULATORY_REQ 65 26985732ac8SCy Schubert #define WLAN_REASON_MESH_CHANNEL_SWITCH_UNSPECIFIED 66 27039beb93cSSam Leffler 27139beb93cSSam Leffler 27285732ac8SCy Schubert /* Information Element IDs (IEEE Std 802.11-2016, 9.4.2.1, Table 9-77) */ 27339beb93cSSam Leffler #define WLAN_EID_SSID 0 27439beb93cSSam Leffler #define WLAN_EID_SUPP_RATES 1 27539beb93cSSam Leffler #define WLAN_EID_DS_PARAMS 3 27639beb93cSSam Leffler #define WLAN_EID_CF_PARAMS 4 27739beb93cSSam Leffler #define WLAN_EID_TIM 5 27839beb93cSSam Leffler #define WLAN_EID_IBSS_PARAMS 6 27939beb93cSSam Leffler #define WLAN_EID_COUNTRY 7 28085732ac8SCy Schubert #define WLAN_EID_REQUEST 10 2815b9c547cSRui Paulo #define WLAN_EID_BSS_LOAD 11 28285732ac8SCy Schubert #define WLAN_EID_EDCA_PARAM_SET 12 28385732ac8SCy Schubert #define WLAN_EID_TSPEC 13 28485732ac8SCy Schubert #define WLAN_EID_TCLAS 14 28585732ac8SCy Schubert #define WLAN_EID_SCHEDULE 15 28639beb93cSSam Leffler #define WLAN_EID_CHALLENGE 16 28739beb93cSSam Leffler #define WLAN_EID_PWR_CONSTRAINT 32 28839beb93cSSam Leffler #define WLAN_EID_PWR_CAPABILITY 33 28939beb93cSSam Leffler #define WLAN_EID_TPC_REQUEST 34 29039beb93cSSam Leffler #define WLAN_EID_TPC_REPORT 35 29139beb93cSSam Leffler #define WLAN_EID_SUPPORTED_CHANNELS 36 29239beb93cSSam Leffler #define WLAN_EID_CHANNEL_SWITCH 37 29339beb93cSSam Leffler #define WLAN_EID_MEASURE_REQUEST 38 29439beb93cSSam Leffler #define WLAN_EID_MEASURE_REPORT 39 29585732ac8SCy Schubert #define WLAN_EID_QUIET 40 29639beb93cSSam Leffler #define WLAN_EID_IBSS_DFS 41 29739beb93cSSam Leffler #define WLAN_EID_ERP_INFO 42 29885732ac8SCy Schubert #define WLAN_EID_TS_DELAY 43 29985732ac8SCy Schubert #define WLAN_EID_TCLAS_PROCESSING 44 30039beb93cSSam Leffler #define WLAN_EID_HT_CAP 45 3015b9c547cSRui Paulo #define WLAN_EID_QOS 46 30239beb93cSSam Leffler #define WLAN_EID_RSN 48 30339beb93cSSam Leffler #define WLAN_EID_EXT_SUPP_RATES 50 30485732ac8SCy Schubert #define WLAN_EID_AP_CHANNEL_REPORT 51 3055b9c547cSRui Paulo #define WLAN_EID_NEIGHBOR_REPORT 52 30685732ac8SCy Schubert #define WLAN_EID_RCPI 53 30739beb93cSSam Leffler #define WLAN_EID_MOBILITY_DOMAIN 54 30839beb93cSSam Leffler #define WLAN_EID_FAST_BSS_TRANSITION 55 30939beb93cSSam Leffler #define WLAN_EID_TIMEOUT_INTERVAL 56 31039beb93cSSam Leffler #define WLAN_EID_RIC_DATA 57 31185732ac8SCy Schubert #define WLAN_EID_DSE_REGISTERED_LOCATION 58 3125b9c547cSRui Paulo #define WLAN_EID_SUPPORTED_OPERATING_CLASSES 59 313780fb4a2SCy Schubert #define WLAN_EID_EXT_CHANSWITCH_ANN 60 31439beb93cSSam Leffler #define WLAN_EID_HT_OPERATION 61 31539beb93cSSam Leffler #define WLAN_EID_SECONDARY_CHANNEL_OFFSET 62 31685732ac8SCy Schubert #define WLAN_EID_BSS_AVERAGE_ACCESS_DELAY 63 31785732ac8SCy Schubert #define WLAN_EID_ANTENNA 64 31885732ac8SCy Schubert #define WLAN_EID_RSNI 65 31985732ac8SCy Schubert #define WLAN_EID_MEASUREMENT_PILOT_TRANSMISSION 66 32085732ac8SCy Schubert #define WLAN_EID_BSS_AVAILABLE_ADM_CAPA 67 32185732ac8SCy Schubert #define WLAN_EID_BSS_AC_ACCESS_DELAY 68 /* note: also used by WAPI */ 322f05cddf9SRui Paulo #define WLAN_EID_TIME_ADVERTISEMENT 69 3235b9c547cSRui Paulo #define WLAN_EID_RRM_ENABLED_CAPABILITIES 70 32485732ac8SCy Schubert #define WLAN_EID_MULTIPLE_BSSID 71 32539beb93cSSam Leffler #define WLAN_EID_20_40_BSS_COEXISTENCE 72 32639beb93cSSam Leffler #define WLAN_EID_20_40_BSS_INTOLERANT 73 32739beb93cSSam Leffler #define WLAN_EID_OVERLAPPING_BSS_SCAN_PARAMS 74 32885732ac8SCy Schubert #define WLAN_EID_RIC_DESCRIPTOR 75 32939beb93cSSam Leffler #define WLAN_EID_MMIE 76 33085732ac8SCy Schubert #define WLAN_EID_EVENT_REQUEST 78 33185732ac8SCy Schubert #define WLAN_EID_EVENT_REPORT 79 33285732ac8SCy Schubert #define WLAN_EID_DIAGNOSTIC_REQUEST 80 33385732ac8SCy Schubert #define WLAN_EID_DIAGNOSTIC_REPORT 81 33485732ac8SCy Schubert #define WLAN_EID_LOCATION_PARAMETERS 82 33585732ac8SCy Schubert #define WLAN_EID_NONTRANSMITTED_BSSID_CAPA 83 336f05cddf9SRui Paulo #define WLAN_EID_SSID_LIST 84 3374bc52338SCy Schubert #define WLAN_EID_MULTIPLE_BSSID_INDEX 85 33885732ac8SCy Schubert #define WLAN_EID_FMS_DESCRIPTOR 86 33985732ac8SCy Schubert #define WLAN_EID_FMS_REQUEST 87 34085732ac8SCy Schubert #define WLAN_EID_FMS_RESPONSE 88 34185732ac8SCy Schubert #define WLAN_EID_QOS_TRAFFIC_CAPABILITY 89 342f05cddf9SRui Paulo #define WLAN_EID_BSS_MAX_IDLE_PERIOD 90 343f05cddf9SRui Paulo #define WLAN_EID_TFS_REQ 91 344f05cddf9SRui Paulo #define WLAN_EID_TFS_RESP 92 345f05cddf9SRui Paulo #define WLAN_EID_WNMSLEEP 93 34685732ac8SCy Schubert #define WLAN_EID_TIM_BROADCAST_REQUEST 94 34785732ac8SCy Schubert #define WLAN_EID_TIM_BROADCAST_RESPONSE 95 34885732ac8SCy Schubert #define WLAN_EID_COLLOCATED_INTERFERENCE_REPORT 96 34985732ac8SCy Schubert #define WLAN_EID_CHANNEL_USAGE 97 350f05cddf9SRui Paulo #define WLAN_EID_TIME_ZONE 98 35185732ac8SCy Schubert #define WLAN_EID_DMS_REQUEST 99 35285732ac8SCy Schubert #define WLAN_EID_DMS_RESPONSE 100 353f05cddf9SRui Paulo #define WLAN_EID_LINK_ID 101 35485732ac8SCy Schubert #define WLAN_EID_WAKEUP_SCHEDULE 102 35585732ac8SCy Schubert #define WLAN_EID_CHANNEL_SWITCH_TIMING 104 35685732ac8SCy Schubert #define WLAN_EID_PTI_CONTROL 105 35785732ac8SCy Schubert #define WLAN_EID_TPU_BUFFER_STATUS 106 358f05cddf9SRui Paulo #define WLAN_EID_INTERWORKING 107 359f05cddf9SRui Paulo #define WLAN_EID_ADV_PROTO 108 36085732ac8SCy Schubert #define WLAN_EID_EXPEDITED_BANDWIDTH_REQ 109 3615b9c547cSRui Paulo #define WLAN_EID_QOS_MAP_SET 110 362f05cddf9SRui Paulo #define WLAN_EID_ROAMING_CONSORTIUM 111 36385732ac8SCy Schubert #define WLAN_EID_EMERGENCY_ALERT_ID 112 3645b9c547cSRui Paulo #define WLAN_EID_MESH_CONFIG 113 3655b9c547cSRui Paulo #define WLAN_EID_MESH_ID 114 36685732ac8SCy Schubert #define WLAN_EID_MESH_LINK_METRIC_REPORT 115 36785732ac8SCy Schubert #define WLAN_EID_CONGESTION_NOTIFICATION 116 3685b9c547cSRui Paulo #define WLAN_EID_PEER_MGMT 117 36985732ac8SCy Schubert #define WLAN_EID_MESH_CHANNEL_SWITCH_PARAMETERS 118 37085732ac8SCy Schubert #define WLAN_EID_MESH_AWAKE_WINDOW 119 37185732ac8SCy Schubert #define WLAN_EID_BEACON_TIMING 120 37285732ac8SCy Schubert #define WLAN_EID_MCCAOP_SETUP_REQUEST 121 37385732ac8SCy Schubert #define WLAN_EID_MCCAOP_SETUP_REPLY 122 37485732ac8SCy Schubert #define WLAN_EID_MCCAOP_ADVERTISEMENT 123 37585732ac8SCy Schubert #define WLAN_EID_MCCAOP_TEARDOWN 124 37685732ac8SCy Schubert #define WLAN_EID_GANN 125 37785732ac8SCy Schubert #define WLAN_EID_RANN 126 378f05cddf9SRui Paulo #define WLAN_EID_EXT_CAPAB 127 37985732ac8SCy Schubert #define WLAN_EID_PREQ 130 38085732ac8SCy Schubert #define WLAN_EID_PREP 131 38185732ac8SCy Schubert #define WLAN_EID_PERR 132 38285732ac8SCy Schubert #define WLAN_EID_PXU 137 38385732ac8SCy Schubert #define WLAN_EID_PXUC 138 3845b9c547cSRui Paulo #define WLAN_EID_AMPE 139 3855b9c547cSRui Paulo #define WLAN_EID_MIC 140 38685732ac8SCy Schubert #define WLAN_EID_DESTINATION_URI 141 38785732ac8SCy Schubert #define WLAN_EID_U_APSD_COEX 142 38885732ac8SCy Schubert #define WLAN_EID_DMG_WAKEUP_SCHEDULE 143 38985732ac8SCy Schubert #define WLAN_EID_EXTENDED_SCHEDULE 144 39085732ac8SCy Schubert #define WLAN_EID_STA_AVAILABILITY 145 39185732ac8SCy Schubert #define WLAN_EID_DMG_TSPEC 146 39285732ac8SCy Schubert #define WLAN_EID_NEXT_DMG_ATI 147 39385732ac8SCy Schubert #define WLAN_EID_DMG_CAPABILITIES 148 39485732ac8SCy Schubert #define WLAN_EID_DMG_OPERATION 151 39585732ac8SCy Schubert #define WLAN_EID_DMG_BSS_PARAMETER_CHANGE 152 39685732ac8SCy Schubert #define WLAN_EID_DMG_BEAM_REFINEMENT 153 39785732ac8SCy Schubert #define WLAN_EID_CHANNEL_MEASUREMENT_FEEDBACK 154 398f05cddf9SRui Paulo #define WLAN_EID_CCKM 156 39985732ac8SCy Schubert #define WLAN_EID_AWAKE_WINDOW 157 400325151a3SRui Paulo #define WLAN_EID_MULTI_BAND 158 40185732ac8SCy Schubert #define WLAN_EID_ADDBA_EXTENSION 159 40285732ac8SCy Schubert #define WLAN_EID_NEXTPCP_LIST 160 40385732ac8SCy Schubert #define WLAN_EID_PCP_HANDOVER 161 40485732ac8SCy Schubert #define WLAN_EID_DMG_LINK_MARGIN 162 40585732ac8SCy Schubert #define WLAN_EID_SWITCHING_STREAM 163 406325151a3SRui Paulo #define WLAN_EID_SESSION_TRANSITION 164 40785732ac8SCy Schubert #define WLAN_EID_DYNAMIC_TONE_PAIRING_REPORT 165 40885732ac8SCy Schubert #define WLAN_EID_CLUSTER_REPORT 166 40985732ac8SCy Schubert #define WLAN_EID_REPLAY_CAPABILITIES 167 41085732ac8SCy Schubert #define WLAN_EID_RELAY_TRANSFER_PARAM_SET 168 41185732ac8SCy Schubert #define WLAN_EID_BEAMLINK_MAINTENANCE 169 41285732ac8SCy Schubert #define WLAN_EID_MULTIPLE_MAC_SUBLAYERS 170 41385732ac8SCy Schubert #define WLAN_EID_U_PID 171 41485732ac8SCy Schubert #define WLAN_EID_DMG_LINK_ADAPTATION_ACK 172 41585732ac8SCy Schubert #define WLAN_EID_MCCAOP_ADVERTISEMENT_OVERVIEW 174 41685732ac8SCy Schubert #define WLAN_EID_QUIET_PERIOD_REQUEST 175 41785732ac8SCy Schubert #define WLAN_EID_QUIET_PERIOD_RESPONSE 177 41885732ac8SCy Schubert #define WLAN_EID_QMF_POLICY 181 41985732ac8SCy Schubert #define WLAN_EID_ECAPC_POLICY 182 42085732ac8SCy Schubert #define WLAN_EID_CLUSTER_TIME_OFFSET 183 42185732ac8SCy Schubert #define WLAN_EID_INTRA_ACCESS_CATEGORY_PRIORITY 184 42285732ac8SCy Schubert #define WLAN_EID_SCS_DESCRIPTOR 185 42385732ac8SCy Schubert #define WLAN_EID_QLOAD_REPORT 186 42485732ac8SCy Schubert #define WLAN_EID_HCCA_TXOP_UPDATE_COUNT 187 42585732ac8SCy Schubert #define WLAN_EID_HIGHER_LAYER_STREAM_ID 188 42685732ac8SCy Schubert #define WLAN_EID_GCR_GROUP_ADDRESS 189 42785732ac8SCy Schubert #define WLAN_EID_ANTENNA_SECTOR_ID_PATTERN 190 428f05cddf9SRui Paulo #define WLAN_EID_VHT_CAP 191 429f05cddf9SRui Paulo #define WLAN_EID_VHT_OPERATION 192 430f05cddf9SRui Paulo #define WLAN_EID_VHT_EXTENDED_BSS_LOAD 193 431f05cddf9SRui Paulo #define WLAN_EID_VHT_WIDE_BW_CHSWITCH 194 432f05cddf9SRui Paulo #define WLAN_EID_VHT_TRANSMIT_POWER_ENVELOPE 195 433f05cddf9SRui Paulo #define WLAN_EID_VHT_CHANNEL_SWITCH_WRAPPER 196 434f05cddf9SRui Paulo #define WLAN_EID_VHT_AID 197 435f05cddf9SRui Paulo #define WLAN_EID_VHT_QUIET_CHANNEL 198 436f05cddf9SRui Paulo #define WLAN_EID_VHT_OPERATING_MODE_NOTIFICATION 199 43785732ac8SCy Schubert #define WLAN_EID_UPSIM 200 43885732ac8SCy Schubert #define WLAN_EID_REDUCED_NEIGHBOR_REPORT 201 43985732ac8SCy Schubert #define WLAN_EID_TVHT_OPERATION 202 44085732ac8SCy Schubert #define WLAN_EID_DEVICE_LOCATION 204 44185732ac8SCy Schubert #define WLAN_EID_WHITE_SPACE_MAP 205 44285732ac8SCy Schubert #define WLAN_EID_FTM_PARAMETERS 206 44339beb93cSSam Leffler #define WLAN_EID_VENDOR_SPECIFIC 221 44485732ac8SCy Schubert #define WLAN_EID_CAG_NUMBER 237 44585732ac8SCy Schubert #define WLAN_EID_AP_CSN 239 44685732ac8SCy Schubert #define WLAN_EID_FILS_INDICATION 240 44785732ac8SCy Schubert #define WLAN_EID_DILS 241 44885732ac8SCy Schubert #define WLAN_EID_FRAGMENT 242 44985732ac8SCy Schubert #define WLAN_EID_EXTENSION 255 45085732ac8SCy Schubert 45185732ac8SCy Schubert /* Element ID Extension (EID 255) values */ 45285732ac8SCy Schubert #define WLAN_EID_EXT_ASSOC_DELAY_INFO 1 45385732ac8SCy Schubert #define WLAN_EID_EXT_FILS_REQ_PARAMS 2 45485732ac8SCy Schubert #define WLAN_EID_EXT_FILS_KEY_CONFIRM 3 45585732ac8SCy Schubert #define WLAN_EID_EXT_FILS_SESSION 4 45685732ac8SCy Schubert #define WLAN_EID_EXT_FILS_HLP_CONTAINER 5 45785732ac8SCy Schubert #define WLAN_EID_EXT_FILS_IP_ADDR_ASSIGN 6 45885732ac8SCy Schubert #define WLAN_EID_EXT_KEY_DELIVERY 7 45985732ac8SCy Schubert #define WLAN_EID_EXT_FILS_WRAPPED_DATA 8 46085732ac8SCy Schubert #define WLAN_EID_EXT_FTM_SYNC_INFO 9 46185732ac8SCy Schubert #define WLAN_EID_EXT_EXTENDED_REQUEST 10 46285732ac8SCy Schubert #define WLAN_EID_EXT_ESTIMATED_SERVICE_PARAMS 11 46385732ac8SCy Schubert #define WLAN_EID_EXT_FILS_PUBLIC_KEY 12 46485732ac8SCy Schubert #define WLAN_EID_EXT_FILS_NONCE 13 46585732ac8SCy Schubert #define WLAN_EID_EXT_FUTURE_CHANNEL_GUIDANCE 14 46685732ac8SCy Schubert #define WLAN_EID_EXT_OWE_DH_PARAM 32 46785732ac8SCy Schubert #define WLAN_EID_EXT_PASSWORD_IDENTIFIER 33 46885732ac8SCy Schubert #define WLAN_EID_EXT_HE_CAPABILITIES 35 46985732ac8SCy Schubert #define WLAN_EID_EXT_HE_OPERATION 36 4704bc52338SCy Schubert #define WLAN_EID_EXT_HE_MU_EDCA_PARAMS 38 471*206b73d0SCy Schubert #define WLAN_EID_EXT_SPATIAL_REUSE 39 4724bc52338SCy Schubert #define WLAN_EID_EXT_OCV_OCI 54 47339beb93cSSam Leffler 4744bc52338SCy Schubert /* Extended Capabilities field */ 4754bc52338SCy Schubert #define WLAN_EXT_CAPAB_20_40_COEX 0 4764bc52338SCy Schubert #define WLAN_EXT_CAPAB_GLK 1 4774bc52338SCy Schubert #define WLAN_EXT_CAPAB_EXT_CHAN_SWITCH 2 4784bc52338SCy Schubert #define WLAN_EXT_CAPAB_GLK_GCR 3 4794bc52338SCy Schubert #define WLAN_EXT_CAPAB_PSMP 4 4804bc52338SCy Schubert /* 5 - Reserved */ 4814bc52338SCy Schubert #define WLAN_EXT_CAPAB_S_PSMP 6 4824bc52338SCy Schubert #define WLAN_EXT_CAPAB_EVENT 7 4834bc52338SCy Schubert #define WLAN_EXT_CAPAB_DIAGNOSTICS 8 4844bc52338SCy Schubert #define WLAN_EXT_CAPAB_MULTICAST_DIAGNOSTICS 9 4854bc52338SCy Schubert #define WLAN_EXT_CAPAB_LOCATION_TRACKING 10 4864bc52338SCy Schubert #define WLAN_EXT_CAPAB_FMS 11 4874bc52338SCy Schubert #define WLAN_EXT_CAPAB_PROXY_ARP 12 4884bc52338SCy Schubert #define WLAN_EXT_CAPAB_COLL_INTERF_REP 13 4894bc52338SCy Schubert #define WLAN_EXT_CAPAB_CIVIC_LOCATION 14 4904bc52338SCy Schubert #define WLAN_EXT_CAPAB_GEOSPATIAL_LOCATION 15 4914bc52338SCy Schubert #define WLAN_EXT_CAPAB_TFS 16 4924bc52338SCy Schubert #define WLAN_EXT_CAPAB_WNM_SLEEP_MODE 17 4934bc52338SCy Schubert #define WLAN_EXT_CAPAB_TIM_BROADCAST 18 4944bc52338SCy Schubert #define WLAN_EXT_CAPAB_BSS_TRANSITION 19 4954bc52338SCy Schubert #define WLAN_EXT_CAPAB_QOS_TRAFFIC 20 4964bc52338SCy Schubert #define WLAN_EXT_CAPAB_AC_STA_COUNT 21 4974bc52338SCy Schubert #define WLAN_EXT_CAPAB_MULTIPLE_BSSID 22 4984bc52338SCy Schubert #define WLAN_EXT_CAPAB_TIMING_MEASUREMENT 23 4994bc52338SCy Schubert #define WLAN_EXT_CAPAB_CHANNEL_USAGE 24 5004bc52338SCy Schubert #define WLAN_EXT_CAPAB_SSID_LIST 25 5014bc52338SCy Schubert #define WLAN_EXT_CAPAB_DMS 26 5024bc52338SCy Schubert #define WLAN_EXT_CAPAB_UTF_TSF_OFFSET 27 5034bc52338SCy Schubert #define WLAN_EXT_CAPAB_TPU_BUFFER_STA 28 5044bc52338SCy Schubert #define WLAN_EXT_CAPAB_TDLS_PEER_PSM 29 5054bc52338SCy Schubert #define WLAN_EXT_CAPAB_TDLS_CHANNEL_SWITCH 30 5064bc52338SCy Schubert #define WLAN_EXT_CAPAB_INTERWORKING 31 5074bc52338SCy Schubert #define WLAN_EXT_CAPAB_QOS_MAP 32 5084bc52338SCy Schubert #define WLAN_EXT_CAPAB_EBR 33 5094bc52338SCy Schubert #define WLAN_EXT_CAPAB_SSPN_INTERFACE 34 5104bc52338SCy Schubert /* 35 - Reserved */ 5114bc52338SCy Schubert #define WLAN_EXT_CAPAB_MSGCF 36 5124bc52338SCy Schubert #define WLAN_EXT_CAPAB_TDLS 37 5134bc52338SCy Schubert #define WLAN_EXT_CAPAB_TDLS_PROHIBITED 38 5144bc52338SCy Schubert #define WLAN_EXT_CAPAB_TDLS_CHANNEL_SWITCH_PROHIBITED 39 5154bc52338SCy Schubert #define WLAN_EXT_CAPAB_REJECT_UNADMITTED_FRAME 40 5164bc52338SCy Schubert #define WLAN_EXT_CAPAB_ 5174bc52338SCy Schubert /* 41-43 - Service Interval Granularity */ 5184bc52338SCy Schubert #define WLAN_EXT_CAPAB_IDENTIFIER_LOCATION 44 5194bc52338SCy Schubert #define WLAN_EXT_CAPAB_U_APSD_COEX 45 5204bc52338SCy Schubert #define WLAN_EXT_CAPAB_WNM_NOTIFCATION 46 5214bc52338SCy Schubert #define WLAN_EXT_CAPAB_QAB 47 5224bc52338SCy Schubert #define WLAN_EXT_CAPAB_UTF_8_SSID 48 5234bc52338SCy Schubert #define WLAN_EXT_CAPAB_QMF 49 5244bc52338SCy Schubert #define WLAN_EXT_CAPAB_QMF_RECONFIG 50 5254bc52338SCy Schubert #define WLAN_EXT_CAPAB_ROBUST_AV_STREAMING 51 5264bc52338SCy Schubert #define WLAN_EXT_CAPAB_ADVANCED_GCR 52 5274bc52338SCy Schubert #define WLAN_EXT_CAPAB_MESH_GCR 53 5284bc52338SCy Schubert #define WLAN_EXT_CAPAB_SCS 54 5294bc52338SCy Schubert #define WLAN_EXT_CAPAB_QLOAD_REPORT 55 5304bc52338SCy Schubert #define WLAN_EXT_CAPAB_ALT_EDCA 56 5314bc52338SCy Schubert #define WLAN_EXT_CAPAB_UNPROT_TXOP_NEG 57 5324bc52338SCy Schubert #define WLAN_EXT_CAPAB_PROT_TXOP_NEG 58 5334bc52338SCy Schubert /* 59 - Reserved */ 5344bc52338SCy Schubert #define WLAN_EXT_CAPAB_PROT_QLOAD_REPORT 60 5354bc52338SCy Schubert #define WLAN_EXT_CAPAB_TDLS_WIDER_BW 61 5364bc52338SCy Schubert #define WLAN_EXT_CAPAB_OPMODE_NOTIF 62 5374bc52338SCy Schubert #define WLAN_EXT_CAPAB_ 5384bc52338SCy Schubert /* 63-64 - Max Number of MSDUs In A-MSDU */ 5394bc52338SCy Schubert #define WLAN_EXT_CAPAB_CHANNEL_SCHEDULE_MGMT 65 5404bc52338SCy Schubert #define WLAN_EXT_CAPAB_GEODB_INBAND_ENABLING_SIGNAL 66 5414bc52338SCy Schubert #define WLAN_EXT_CAPAB_NETWORK_CHANNEL_CTRL 67 5424bc52338SCy Schubert #define WLAN_EXT_CAPAB_WHITE_SPACE_MAP 68 5434bc52338SCy Schubert #define WLAN_EXT_CAPAB_CHANNEL_AVAIL_QUERY 69 5444bc52338SCy Schubert #define WLAN_EXT_CAPAB_FTM_RESPONDER 70 5454bc52338SCy Schubert #define WLAN_EXT_CAPAB_FTM_INITIATOR 71 5464bc52338SCy Schubert #define WLAN_EXT_CAPAB_FILS 72 5474bc52338SCy Schubert #define WLAN_EXT_CAPAB_EXT_SPECTRUM_MGMT 73 5484bc52338SCy Schubert #define WLAN_EXT_CAPAB_FUTURE_CHANNEL_GUIDANCE 74 5494bc52338SCy Schubert #define WLAN_EXT_CAPAB_PAD 75 5504bc52338SCy Schubert /* 76-79 - Reserved */ 5514bc52338SCy Schubert #define WLAN_EXT_CAPAB_COMPLETE_NON_TX_BSSID_PROFILE 80 5524bc52338SCy Schubert #define WLAN_EXT_CAPAB_SAE_PW_ID 81 5534bc52338SCy Schubert #define WLAN_EXT_CAPAB_SAE_PW_ID_EXCLUSIVELY 82 55439beb93cSSam Leffler 55585732ac8SCy Schubert /* Action frame categories (IEEE Std 802.11-2016, 9.4.1.11, Table 9-76) */ 55639beb93cSSam Leffler #define WLAN_ACTION_SPECTRUM_MGMT 0 55739beb93cSSam Leffler #define WLAN_ACTION_QOS 1 55839beb93cSSam Leffler #define WLAN_ACTION_DLS 2 55939beb93cSSam Leffler #define WLAN_ACTION_BLOCK_ACK 3 5603157ba21SRui Paulo #define WLAN_ACTION_PUBLIC 4 56139beb93cSSam Leffler #define WLAN_ACTION_RADIO_MEASUREMENT 5 56239beb93cSSam Leffler #define WLAN_ACTION_FT 6 5633157ba21SRui Paulo #define WLAN_ACTION_HT 7 56439beb93cSSam Leffler #define WLAN_ACTION_SA_QUERY 8 5655b9c547cSRui Paulo #define WLAN_ACTION_PROTECTED_DUAL 9 566f05cddf9SRui Paulo #define WLAN_ACTION_WNM 10 567f05cddf9SRui Paulo #define WLAN_ACTION_UNPROTECTED_WNM 11 568f05cddf9SRui Paulo #define WLAN_ACTION_TDLS 12 56985732ac8SCy Schubert #define WLAN_ACTION_MESH 13 57085732ac8SCy Schubert #define WLAN_ACTION_MULTIHOP 14 5715b9c547cSRui Paulo #define WLAN_ACTION_SELF_PROTECTED 15 57285732ac8SCy Schubert #define WLAN_ACTION_DMG 16 5733157ba21SRui Paulo #define WLAN_ACTION_WMM 17 /* WMM Specification 1.1 */ 574325151a3SRui Paulo #define WLAN_ACTION_FST 18 57585732ac8SCy Schubert #define WLAN_ACTION_ROBUST_AV_STREAMING 19 57685732ac8SCy Schubert #define WLAN_ACTION_UNPROTECTED_DMG 20 57785732ac8SCy Schubert #define WLAN_ACTION_VHT 21 57885732ac8SCy Schubert #define WLAN_ACTION_FILS 26 57985732ac8SCy Schubert #define WLAN_ACTION_VENDOR_SPECIFIC_PROTECTED 126 580f05cddf9SRui Paulo #define WLAN_ACTION_VENDOR_SPECIFIC 127 58185732ac8SCy Schubert /* Note: 128-255 used to report errors by setting category | 0x80 */ 582f05cddf9SRui Paulo 58385732ac8SCy Schubert /* Public action codes (IEEE Std 802.11-2016, 9.6.8.1, Table 9-307) */ 584f05cddf9SRui Paulo #define WLAN_PA_20_40_BSS_COEX 0 58585732ac8SCy Schubert #define WLAN_PA_DSE_ENABLEMENT 1 58685732ac8SCy Schubert #define WLAN_PA_DSE_DEENABLEMENT 2 58785732ac8SCy Schubert #define WLAN_PA_DSE_REG_LOCATION_ANNOUNCE 3 58885732ac8SCy Schubert #define WLAN_PA_EXT_CHANNEL_SWITCH_ANNOUNCE 4 58985732ac8SCy Schubert #define WLAN_PA_DSE_MEASUREMENT_REQ 5 59085732ac8SCy Schubert #define WLAN_PA_DSE_MEASUREMENT_RESP 6 59185732ac8SCy Schubert #define WLAN_PA_MEASUREMENT_PILOT 7 59285732ac8SCy Schubert #define WLAN_PA_DSE_POWER_CONSTRAINT 8 593f05cddf9SRui Paulo #define WLAN_PA_VENDOR_SPECIFIC 9 594f05cddf9SRui Paulo #define WLAN_PA_GAS_INITIAL_REQ 10 595f05cddf9SRui Paulo #define WLAN_PA_GAS_INITIAL_RESP 11 596f05cddf9SRui Paulo #define WLAN_PA_GAS_COMEBACK_REQ 12 597f05cddf9SRui Paulo #define WLAN_PA_GAS_COMEBACK_RESP 13 598f05cddf9SRui Paulo #define WLAN_TDLS_DISCOVERY_RESPONSE 14 59985732ac8SCy Schubert #define WLAN_PA_LOCATION_TRACK_NOTIFICATION 15 60085732ac8SCy Schubert #define WLAN_PA_QAB_REQUEST_FRAME 16 60185732ac8SCy Schubert #define WLAN_PA_QAB_RESPONSE_FRAME 17 60285732ac8SCy Schubert #define WLAN_PA_QMF_POLICY 18 60385732ac8SCy Schubert #define WLAN_PA_QMF_POLICY_CHANGE 19 60485732ac8SCy Schubert #define WLAN_PA_QLOAD_REQUEST 20 60585732ac8SCy Schubert #define WLAN_PA_QLOAD_REPORT 21 60685732ac8SCy Schubert #define WLAN_PA_HCCA_TXOP_ADVERTISEMENT 22 60785732ac8SCy Schubert #define WLAN_PA_HCCA_TXOP_RESPONSE 23 60885732ac8SCy Schubert #define WLAN_PA_PUBLIC_KEY 24 60985732ac8SCy Schubert #define WLAN_PA_CHANNEL_AVAILABILITY_QUERY 25 61085732ac8SCy Schubert #define WLAN_PA_CHANNEL_SCHEDULE_MANAGEMENT 26 61185732ac8SCy Schubert #define WLAN_PA_CONTACT_VERIFICATION_SIGNAL 27 61285732ac8SCy Schubert #define WLAN_PA_GDD_ENABLEMENT_REQ 28 61385732ac8SCy Schubert #define WLAN_PA_GDD_ENABLEMENT_RESP 29 61485732ac8SCy Schubert #define WLAN_PA_NETWORK_CHANNEL_CONTROL 30 61585732ac8SCy Schubert #define WLAN_PA_WHITE_SPACE_MAP_ANNOUNCEMENT 31 61685732ac8SCy Schubert #define WLAN_PA_FTM_REQUEST 32 61785732ac8SCy Schubert #define WLAN_PA_FTM 33 61885732ac8SCy Schubert #define WLAN_PA_FILS_DISCOVERY 34 61939beb93cSSam Leffler 62085732ac8SCy Schubert /* Protected Dual of Public Action frames (IEEE Std 802.11-2016, 9.6.11, 62185732ac8SCy Schubert * Table 9-332) */ 6225b9c547cSRui Paulo #define WLAN_PROT_DSE_ENABLEMENT 1 6235b9c547cSRui Paulo #define WLAN_PROT_DSE_DEENABLEMENT 2 6245b9c547cSRui Paulo #define WLAN_PROT_EXT_CSA 4 6255b9c547cSRui Paulo #define WLAN_PROT_MEASUREMENT_REQ 5 6265b9c547cSRui Paulo #define WLAN_PROT_MEASUREMENT_REPORT 6 6275b9c547cSRui Paulo #define WLAN_PROT_DSE_POWER_CONSTRAINT 8 6285b9c547cSRui Paulo #define WLAN_PROT_VENDOR_SPECIFIC 9 6295b9c547cSRui Paulo #define WLAN_PROT_GAS_INITIAL_REQ 10 6305b9c547cSRui Paulo #define WLAN_PROT_GAS_INITIAL_RESP 11 6315b9c547cSRui Paulo #define WLAN_PROT_GAS_COMEBACK_REQ 12 6325b9c547cSRui Paulo #define WLAN_PROT_GAS_COMEBACK_RESP 13 63385732ac8SCy Schubert #define WLAN_PROT_QAB_REQUEST_FRAME 16 63485732ac8SCy Schubert #define WLAN_PROT_QAB_RESPONSE_FRAME 17 63585732ac8SCy Schubert #define WLAN_PROT_QMF_POLICY 18 63685732ac8SCy Schubert #define WLAN_PROT_QMF_POLICY_CHANGE 19 63785732ac8SCy Schubert #define WLAN_PROT_QLOAD_REQUEST 20 63885732ac8SCy Schubert #define WLAN_PROT_QLOAD_REPORT 21 63985732ac8SCy Schubert #define WLAN_PROT_HCCA_TXOP_ADVERTISEMENT 22 64085732ac8SCy Schubert #define WLAN_PROT_HCCA_TXOP_RESPONSE 23 64185732ac8SCy Schubert #define WLAN_PROT_CHANNEL_AVAILABILITY_QUERY 25 64285732ac8SCy Schubert #define WLAN_PROT_CHANNEL_SCHEDULE_MANAGEMENT 26 64385732ac8SCy Schubert #define WLAN_PROT_CONTACT_VERIFICATION_SIGNAL 27 64485732ac8SCy Schubert #define WLAN_PROT_GDD_ENABLEMENT_REQ 28 64585732ac8SCy Schubert #define WLAN_PROT_GDD_ENABLEMENT_RESP 29 64685732ac8SCy Schubert #define WLAN_PROT_NETWORK_CHANNEL_CONTROL 30 64785732ac8SCy Schubert #define WLAN_PROT_WHITE_SPACE_MAP_ANNOUNCEMENT 31 6485b9c547cSRui Paulo 6493157ba21SRui Paulo /* SA Query Action frame (IEEE 802.11w/D8.0, 7.4.9) */ 65039beb93cSSam Leffler #define WLAN_SA_QUERY_REQUEST 0 65139beb93cSSam Leffler #define WLAN_SA_QUERY_RESPONSE 1 65239beb93cSSam Leffler 6533157ba21SRui Paulo #define WLAN_SA_QUERY_TR_ID_LEN 2 65439beb93cSSam Leffler 655f05cddf9SRui Paulo /* TDLS action codes */ 656f05cddf9SRui Paulo #define WLAN_TDLS_SETUP_REQUEST 0 657f05cddf9SRui Paulo #define WLAN_TDLS_SETUP_RESPONSE 1 658f05cddf9SRui Paulo #define WLAN_TDLS_SETUP_CONFIRM 2 659f05cddf9SRui Paulo #define WLAN_TDLS_TEARDOWN 3 660f05cddf9SRui Paulo #define WLAN_TDLS_PEER_TRAFFIC_INDICATION 4 661f05cddf9SRui Paulo #define WLAN_TDLS_CHANNEL_SWITCH_REQUEST 5 662f05cddf9SRui Paulo #define WLAN_TDLS_CHANNEL_SWITCH_RESPONSE 6 663f05cddf9SRui Paulo #define WLAN_TDLS_PEER_PSM_REQUEST 7 664f05cddf9SRui Paulo #define WLAN_TDLS_PEER_PSM_RESPONSE 8 665f05cddf9SRui Paulo #define WLAN_TDLS_PEER_TRAFFIC_RESPONSE 9 666f05cddf9SRui Paulo #define WLAN_TDLS_DISCOVERY_REQUEST 10 667f05cddf9SRui Paulo 6685b9c547cSRui Paulo /* Radio Measurement Action codes */ 6695b9c547cSRui Paulo #define WLAN_RRM_RADIO_MEASUREMENT_REQUEST 0 6705b9c547cSRui Paulo #define WLAN_RRM_RADIO_MEASUREMENT_REPORT 1 6715b9c547cSRui Paulo #define WLAN_RRM_LINK_MEASUREMENT_REQUEST 2 6725b9c547cSRui Paulo #define WLAN_RRM_LINK_MEASUREMENT_REPORT 3 6735b9c547cSRui Paulo #define WLAN_RRM_NEIGHBOR_REPORT_REQUEST 4 6745b9c547cSRui Paulo #define WLAN_RRM_NEIGHBOR_REPORT_RESPONSE 5 6755b9c547cSRui Paulo 67685732ac8SCy Schubert /* Radio Measurement capabilities (from RM Enabled Capabilities element) 67785732ac8SCy Schubert * IEEE Std 802.11-2016, 9.4.2.45, Table 9-157 */ 6785b9c547cSRui Paulo /* byte 1 (out of 5) */ 6795b9c547cSRui Paulo #define WLAN_RRM_CAPS_LINK_MEASUREMENT BIT(0) 6805b9c547cSRui Paulo #define WLAN_RRM_CAPS_NEIGHBOR_REPORT BIT(1) 68185732ac8SCy Schubert #define WLAN_RRM_CAPS_BEACON_REPORT_PASSIVE BIT(4) 68285732ac8SCy Schubert #define WLAN_RRM_CAPS_BEACON_REPORT_ACTIVE BIT(5) 68385732ac8SCy Schubert #define WLAN_RRM_CAPS_BEACON_REPORT_TABLE BIT(6) 684780fb4a2SCy Schubert /* byte 2 (out of 5) */ 685780fb4a2SCy Schubert #define WLAN_RRM_CAPS_LCI_MEASUREMENT BIT(4) 686780fb4a2SCy Schubert /* byte 5 (out of 5) */ 687780fb4a2SCy Schubert #define WLAN_RRM_CAPS_FTM_RANGE_REPORT BIT(2) 688780fb4a2SCy Schubert 689780fb4a2SCy Schubert /* 690780fb4a2SCy Schubert * IEEE P802.11-REVmc/D5.0, 9.4.2.21.19 (Fine Timing Measurement Range 691780fb4a2SCy Schubert * request) - Minimum AP count 692780fb4a2SCy Schubert */ 693780fb4a2SCy Schubert #define WLAN_RRM_RANGE_REQ_MAX_MIN_AP 15 6945b9c547cSRui Paulo 69539beb93cSSam Leffler /* Timeout Interval Type */ 69639beb93cSSam Leffler #define WLAN_TIMEOUT_REASSOC_DEADLINE 1 69739beb93cSSam Leffler #define WLAN_TIMEOUT_KEY_LIFETIME 2 69839beb93cSSam Leffler #define WLAN_TIMEOUT_ASSOC_COMEBACK 3 69939beb93cSSam Leffler 700f05cddf9SRui Paulo /* Interworking element (IEEE 802.11u) - Access Network Options */ 701f05cddf9SRui Paulo #define INTERWORKING_ANO_ACCESS_NETWORK_MASK 0x0f 702f05cddf9SRui Paulo #define INTERWORKING_ANO_INTERNET 0x10 703f05cddf9SRui Paulo #define INTERWORKING_ANO_ASRA 0x20 704f05cddf9SRui Paulo #define INTERWORKING_ANO_ESR 0x40 705f05cddf9SRui Paulo #define INTERWORKING_ANO_UESA 0x80 706f05cddf9SRui Paulo 707f05cddf9SRui Paulo #define INTERWORKING_ANT_PRIVATE 0 708f05cddf9SRui Paulo #define INTERWORKING_ANT_PRIVATE_WITH_GUEST 1 709f05cddf9SRui Paulo #define INTERWORKING_ANT_CHARGEABLE_PUBLIC 2 710f05cddf9SRui Paulo #define INTERWORKING_ANT_FREE_PUBLIC 3 711f05cddf9SRui Paulo #define INTERWORKING_ANT_PERSONAL_DEVICE 4 712f05cddf9SRui Paulo #define INTERWORKING_ANT_EMERGENCY_SERVICES 5 713f05cddf9SRui Paulo #define INTERWORKING_ANT_TEST 6 714f05cddf9SRui Paulo #define INTERWORKING_ANT_WILDCARD 15 715f05cddf9SRui Paulo 71685732ac8SCy Schubert /* Advertisement Protocol ID definitions (IEEE Std 802.11-2016, Table 9-215) */ 717f05cddf9SRui Paulo enum adv_proto_id { 718f05cddf9SRui Paulo ACCESS_NETWORK_QUERY_PROTOCOL = 0, 719f05cddf9SRui Paulo MIH_INFO_SERVICE = 1, 720f05cddf9SRui Paulo MIH_CMD_AND_EVENT_DISCOVERY = 2, 721f05cddf9SRui Paulo EMERGENCY_ALERT_SYSTEM = 3, 72285732ac8SCy Schubert REGISTERED_LOCATION_QUERY_PROTO = 4, 723f05cddf9SRui Paulo ADV_PROTO_VENDOR_SPECIFIC = 221 724f05cddf9SRui Paulo }; 725f05cddf9SRui Paulo 72685732ac8SCy Schubert /* Access Network Query Protocol info ID definitions (IEEE Std 802.11-2016, 72785732ac8SCy Schubert * Table 9-271; P802.11ai) */ 728f05cddf9SRui Paulo enum anqp_info_id { 729f05cddf9SRui Paulo ANQP_QUERY_LIST = 256, 730f05cddf9SRui Paulo ANQP_CAPABILITY_LIST = 257, 731f05cddf9SRui Paulo ANQP_VENUE_NAME = 258, 732f05cddf9SRui Paulo ANQP_EMERGENCY_CALL_NUMBER = 259, 733f05cddf9SRui Paulo ANQP_NETWORK_AUTH_TYPE = 260, 734f05cddf9SRui Paulo ANQP_ROAMING_CONSORTIUM = 261, 735f05cddf9SRui Paulo ANQP_IP_ADDR_TYPE_AVAILABILITY = 262, 736f05cddf9SRui Paulo ANQP_NAI_REALM = 263, 737f05cddf9SRui Paulo ANQP_3GPP_CELLULAR_NETWORK = 264, 738f05cddf9SRui Paulo ANQP_AP_GEOSPATIAL_LOCATION = 265, 739f05cddf9SRui Paulo ANQP_AP_CIVIC_LOCATION = 266, 740f05cddf9SRui Paulo ANQP_AP_LOCATION_PUBLIC_URI = 267, 741f05cddf9SRui Paulo ANQP_DOMAIN_NAME = 268, 742f05cddf9SRui Paulo ANQP_EMERGENCY_ALERT_URI = 269, 743780fb4a2SCy Schubert ANQP_TDLS_CAPABILITY = 270, 744f05cddf9SRui Paulo ANQP_EMERGENCY_NAI = 271, 745780fb4a2SCy Schubert ANQP_NEIGHBOR_REPORT = 272, 74685732ac8SCy Schubert ANQP_QUERY_AP_LIST = 273, 74785732ac8SCy Schubert ANQP_AP_LIST_RESPONSE = 274, 74885732ac8SCy Schubert ANQP_FILS_REALM_INFO = 275, 74985732ac8SCy Schubert ANQP_CAG = 276, 750780fb4a2SCy Schubert ANQP_VENUE_URL = 277, 751780fb4a2SCy Schubert ANQP_ADVICE_OF_CHARGE = 278, 752780fb4a2SCy Schubert ANQP_LOCAL_CONTENT = 279, 75385732ac8SCy Schubert ANQP_NETWORK_AUTH_TYPE_TIMESTAMP = 280, 754f05cddf9SRui Paulo ANQP_VENDOR_SPECIFIC = 56797 755f05cddf9SRui Paulo }; 756f05cddf9SRui Paulo 757f05cddf9SRui Paulo /* NAI Realm list - EAP Method subfield - Authentication Parameter ID */ 758f05cddf9SRui Paulo enum nai_realm_eap_auth_param { 759f05cddf9SRui Paulo NAI_REALM_EAP_AUTH_EXPANDED_EAP_METHOD = 1, 760f05cddf9SRui Paulo NAI_REALM_EAP_AUTH_NON_EAP_INNER_AUTH = 2, 761f05cddf9SRui Paulo NAI_REALM_EAP_AUTH_INNER_AUTH_EAP_METHOD = 3, 762f05cddf9SRui Paulo NAI_REALM_EAP_AUTH_EXPANDED_INNER_EAP_METHOD = 4, 763f05cddf9SRui Paulo NAI_REALM_EAP_AUTH_CRED_TYPE = 5, 764f05cddf9SRui Paulo NAI_REALM_EAP_AUTH_TUNNELED_CRED_TYPE = 6, 765f05cddf9SRui Paulo NAI_REALM_EAP_AUTH_VENDOR_SPECIFIC = 221 766f05cddf9SRui Paulo }; 767f05cddf9SRui Paulo 768f05cddf9SRui Paulo enum nai_realm_eap_auth_inner_non_eap { 769f05cddf9SRui Paulo NAI_REALM_INNER_NON_EAP_PAP = 1, 770f05cddf9SRui Paulo NAI_REALM_INNER_NON_EAP_CHAP = 2, 771f05cddf9SRui Paulo NAI_REALM_INNER_NON_EAP_MSCHAP = 3, 772f05cddf9SRui Paulo NAI_REALM_INNER_NON_EAP_MSCHAPV2 = 4 773f05cddf9SRui Paulo }; 774f05cddf9SRui Paulo 775f05cddf9SRui Paulo enum nai_realm_eap_cred_type { 776f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_SIM = 1, 777f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_USIM = 2, 778f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_NFC_SECURE_ELEMENT = 3, 779f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_HARDWARE_TOKEN = 4, 780f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_SOFTOKEN = 5, 781f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_CERTIFICATE = 6, 782f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_USERNAME_PASSWORD = 7, 783f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_NONE = 8, 784f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_ANONYMOUS = 9, 785f05cddf9SRui Paulo NAI_REALM_CRED_TYPE_VENDOR_SPECIFIC = 10 786f05cddf9SRui Paulo }; 78739beb93cSSam Leffler 788780fb4a2SCy Schubert /* 789780fb4a2SCy Schubert * IEEE P802.11-REVmc/D5.0 Table 9-81 - Measurement type definitions for 790780fb4a2SCy Schubert * measurement requests 791780fb4a2SCy Schubert */ 792780fb4a2SCy Schubert enum measure_type { 793780fb4a2SCy Schubert MEASURE_TYPE_BASIC = 0, 794780fb4a2SCy Schubert MEASURE_TYPE_CCA = 1, 795780fb4a2SCy Schubert MEASURE_TYPE_RPI_HIST = 2, 796780fb4a2SCy Schubert MEASURE_TYPE_CHANNEL_LOAD = 3, 797780fb4a2SCy Schubert MEASURE_TYPE_NOISE_HIST = 4, 798780fb4a2SCy Schubert MEASURE_TYPE_BEACON = 5, 799780fb4a2SCy Schubert MEASURE_TYPE_FRAME = 6, 800780fb4a2SCy Schubert MEASURE_TYPE_STA_STATISTICS = 7, 801780fb4a2SCy Schubert MEASURE_TYPE_LCI = 8, 802780fb4a2SCy Schubert MEASURE_TYPE_TRANSMIT_STREAM = 9, 803780fb4a2SCy Schubert MEASURE_TYPE_MULTICAST_DIAG = 10, 804780fb4a2SCy Schubert MEASURE_TYPE_LOCATION_CIVIC = 11, 805780fb4a2SCy Schubert MEASURE_TYPE_LOCATION_ID = 12, 806780fb4a2SCy Schubert MEASURE_TYPE_DIRECTIONAL_CHAN_QUALITY = 13, 807780fb4a2SCy Schubert MEASURE_TYPE_DIRECTIONAL_MEASURE = 14, 808780fb4a2SCy Schubert MEASURE_TYPE_DIRECTIONAL_STATS = 15, 809780fb4a2SCy Schubert MEASURE_TYPE_FTM_RANGE = 16, 810780fb4a2SCy Schubert MEASURE_TYPE_MEASURE_PAUSE = 255, 811780fb4a2SCy Schubert }; 812780fb4a2SCy Schubert 813780fb4a2SCy Schubert /* IEEE Std 802.11-2012 Table 8-71 - Location subject definition */ 814780fb4a2SCy Schubert enum location_subject { 815780fb4a2SCy Schubert LOCATION_SUBJECT_LOCAL = 0, 816780fb4a2SCy Schubert LOCATION_SUBJECT_REMOTE = 1, 817780fb4a2SCy Schubert LOCATION_SUBJECT_3RD_PARTY = 2, 818780fb4a2SCy Schubert }; 819780fb4a2SCy Schubert 820780fb4a2SCy Schubert /* 821780fb4a2SCy Schubert * IEEE P802.11-REVmc/D5.0 Table 9-94 - Optional subelement IDs for LCI request 822780fb4a2SCy Schubert */ 823780fb4a2SCy Schubert enum lci_req_subelem { 824780fb4a2SCy Schubert LCI_REQ_SUBELEM_AZIMUTH_REQ = 1, 825780fb4a2SCy Schubert LCI_REQ_SUBELEM_ORIGINATOR_MAC_ADDR = 2, 826780fb4a2SCy Schubert LCI_REQ_SUBELEM_TARGET_MAC_ADDR = 3, 827780fb4a2SCy Schubert LCI_REQ_SUBELEM_MAX_AGE = 4, 828780fb4a2SCy Schubert }; 829780fb4a2SCy Schubert 83085732ac8SCy Schubert #define FILS_NONCE_LEN 16 83185732ac8SCy Schubert #define FILS_SESSION_LEN 8 83285732ac8SCy Schubert #define FILS_CACHE_ID_LEN 2 83385732ac8SCy Schubert #define FILS_MAX_KEY_AUTH_LEN 48 83485732ac8SCy Schubert 83539beb93cSSam Leffler #ifdef _MSC_VER 83639beb93cSSam Leffler #pragma pack(push, 1) 83739beb93cSSam Leffler #endif /* _MSC_VER */ 83839beb93cSSam Leffler 839e28a4053SRui Paulo struct ieee80211_hdr { 840e28a4053SRui Paulo le16 frame_control; 841e28a4053SRui Paulo le16 duration_id; 842e28a4053SRui Paulo u8 addr1[6]; 843e28a4053SRui Paulo u8 addr2[6]; 844e28a4053SRui Paulo u8 addr3[6]; 845e28a4053SRui Paulo le16 seq_ctrl; 846e28a4053SRui Paulo /* followed by 'u8 addr4[6];' if ToDS and FromDS is set in data frame 847e28a4053SRui Paulo */ 848e28a4053SRui Paulo } STRUCT_PACKED; 849e28a4053SRui Paulo 850e28a4053SRui Paulo #define IEEE80211_DA_FROMDS addr1 851e28a4053SRui Paulo #define IEEE80211_BSSID_FROMDS addr2 852e28a4053SRui Paulo #define IEEE80211_SA_FROMDS addr3 853e28a4053SRui Paulo 854e28a4053SRui Paulo #define IEEE80211_HDRLEN (sizeof(struct ieee80211_hdr)) 855e28a4053SRui Paulo 856e28a4053SRui Paulo #define IEEE80211_FC(type, stype) host_to_le16((type << 2) | (stype << 4)) 857e28a4053SRui Paulo 85839beb93cSSam Leffler struct ieee80211_mgmt { 85939beb93cSSam Leffler le16 frame_control; 86039beb93cSSam Leffler le16 duration; 86139beb93cSSam Leffler u8 da[6]; 86239beb93cSSam Leffler u8 sa[6]; 86339beb93cSSam Leffler u8 bssid[6]; 86439beb93cSSam Leffler le16 seq_ctrl; 86539beb93cSSam Leffler union { 86639beb93cSSam Leffler struct { 86739beb93cSSam Leffler le16 auth_alg; 86839beb93cSSam Leffler le16 auth_transaction; 86939beb93cSSam Leffler le16 status_code; 87039beb93cSSam Leffler /* possibly followed by Challenge text */ 871325151a3SRui Paulo u8 variable[]; 87239beb93cSSam Leffler } STRUCT_PACKED auth; 87339beb93cSSam Leffler struct { 87439beb93cSSam Leffler le16 reason_code; 875325151a3SRui Paulo u8 variable[]; 87639beb93cSSam Leffler } STRUCT_PACKED deauth; 87739beb93cSSam Leffler struct { 87839beb93cSSam Leffler le16 capab_info; 87939beb93cSSam Leffler le16 listen_interval; 88039beb93cSSam Leffler /* followed by SSID and Supported rates */ 881325151a3SRui Paulo u8 variable[]; 88239beb93cSSam Leffler } STRUCT_PACKED assoc_req; 88339beb93cSSam Leffler struct { 88439beb93cSSam Leffler le16 capab_info; 88539beb93cSSam Leffler le16 status_code; 88639beb93cSSam Leffler le16 aid; 88739beb93cSSam Leffler /* followed by Supported rates */ 888325151a3SRui Paulo u8 variable[]; 88939beb93cSSam Leffler } STRUCT_PACKED assoc_resp, reassoc_resp; 89039beb93cSSam Leffler struct { 89139beb93cSSam Leffler le16 capab_info; 89239beb93cSSam Leffler le16 listen_interval; 89339beb93cSSam Leffler u8 current_ap[6]; 89439beb93cSSam Leffler /* followed by SSID and Supported rates */ 895325151a3SRui Paulo u8 variable[]; 89639beb93cSSam Leffler } STRUCT_PACKED reassoc_req; 89739beb93cSSam Leffler struct { 89839beb93cSSam Leffler le16 reason_code; 899325151a3SRui Paulo u8 variable[]; 90039beb93cSSam Leffler } STRUCT_PACKED disassoc; 90139beb93cSSam Leffler struct { 90239beb93cSSam Leffler u8 timestamp[8]; 90339beb93cSSam Leffler le16 beacon_int; 90439beb93cSSam Leffler le16 capab_info; 90539beb93cSSam Leffler /* followed by some of SSID, Supported rates, 90639beb93cSSam Leffler * FH Params, DS Params, CF Params, IBSS Params, TIM */ 907325151a3SRui Paulo u8 variable[]; 90839beb93cSSam Leffler } STRUCT_PACKED beacon; 909780fb4a2SCy Schubert /* probe_req: only variable items: SSID, Supported rates */ 91039beb93cSSam Leffler struct { 91139beb93cSSam Leffler u8 timestamp[8]; 91239beb93cSSam Leffler le16 beacon_int; 91339beb93cSSam Leffler le16 capab_info; 91439beb93cSSam Leffler /* followed by some of SSID, Supported rates, 91539beb93cSSam Leffler * FH Params, DS Params, CF Params, IBSS Params */ 916325151a3SRui Paulo u8 variable[]; 91739beb93cSSam Leffler } STRUCT_PACKED probe_resp; 91839beb93cSSam Leffler struct { 91939beb93cSSam Leffler u8 category; 92039beb93cSSam Leffler union { 92139beb93cSSam Leffler struct { 92239beb93cSSam Leffler u8 action_code; 92339beb93cSSam Leffler u8 dialog_token; 92439beb93cSSam Leffler u8 status_code; 925325151a3SRui Paulo u8 variable[]; 9263157ba21SRui Paulo } STRUCT_PACKED wmm_action; 92739beb93cSSam Leffler struct{ 92839beb93cSSam Leffler u8 action_code; 92939beb93cSSam Leffler u8 element_id; 93039beb93cSSam Leffler u8 length; 93139beb93cSSam Leffler u8 switch_mode; 93239beb93cSSam Leffler u8 new_chan; 93339beb93cSSam Leffler u8 switch_count; 93439beb93cSSam Leffler } STRUCT_PACKED chan_switch; 93539beb93cSSam Leffler struct { 93639beb93cSSam Leffler u8 action; 93739beb93cSSam Leffler u8 sta_addr[ETH_ALEN]; 93839beb93cSSam Leffler u8 target_ap_addr[ETH_ALEN]; 939325151a3SRui Paulo u8 variable[]; /* FT Request */ 94039beb93cSSam Leffler } STRUCT_PACKED ft_action_req; 94139beb93cSSam Leffler struct { 94239beb93cSSam Leffler u8 action; 94339beb93cSSam Leffler u8 sta_addr[ETH_ALEN]; 94439beb93cSSam Leffler u8 target_ap_addr[ETH_ALEN]; 94539beb93cSSam Leffler le16 status_code; 946325151a3SRui Paulo u8 variable[]; /* FT Request */ 94739beb93cSSam Leffler } STRUCT_PACKED ft_action_resp; 94839beb93cSSam Leffler struct { 94939beb93cSSam Leffler u8 action; 95039beb93cSSam Leffler u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN]; 9514bc52338SCy Schubert u8 variable[]; /* OCI element */ 95239beb93cSSam Leffler } STRUCT_PACKED sa_query_req; 95339beb93cSSam Leffler struct { 95439beb93cSSam Leffler u8 action; /* */ 95539beb93cSSam Leffler u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN]; 9564bc52338SCy Schubert u8 variable[]; /* OCI element */ 95739beb93cSSam Leffler } STRUCT_PACKED sa_query_resp; 958f05cddf9SRui Paulo struct { 959f05cddf9SRui Paulo u8 action; 960f05cddf9SRui Paulo u8 dialogtoken; 961325151a3SRui Paulo u8 variable[]; 962f05cddf9SRui Paulo } STRUCT_PACKED wnm_sleep_req; 963f05cddf9SRui Paulo struct { 964f05cddf9SRui Paulo u8 action; 965f05cddf9SRui Paulo u8 dialogtoken; 966f05cddf9SRui Paulo le16 keydata_len; 967325151a3SRui Paulo u8 variable[]; 968f05cddf9SRui Paulo } STRUCT_PACKED wnm_sleep_resp; 969f05cddf9SRui Paulo struct { 970f05cddf9SRui Paulo u8 action; 971325151a3SRui Paulo u8 variable[]; 972f05cddf9SRui Paulo } STRUCT_PACKED public_action; 973f05cddf9SRui Paulo struct { 974f05cddf9SRui Paulo u8 action; /* 9 */ 975f05cddf9SRui Paulo u8 oui[3]; 976f05cddf9SRui Paulo /* Vendor-specific content */ 977325151a3SRui Paulo u8 variable[]; 978f05cddf9SRui Paulo } STRUCT_PACKED vs_public_action; 979f05cddf9SRui Paulo struct { 980f05cddf9SRui Paulo u8 action; /* 7 */ 981f05cddf9SRui Paulo u8 dialog_token; 982f05cddf9SRui Paulo u8 req_mode; 983f05cddf9SRui Paulo le16 disassoc_timer; 984f05cddf9SRui Paulo u8 validity_interval; 985f05cddf9SRui Paulo /* BSS Termination Duration (optional), 986f05cddf9SRui Paulo * Session Information URL (optional), 987f05cddf9SRui Paulo * BSS Transition Candidate List 988f05cddf9SRui Paulo * Entries */ 989325151a3SRui Paulo u8 variable[]; 990f05cddf9SRui Paulo } STRUCT_PACKED bss_tm_req; 991f05cddf9SRui Paulo struct { 992f05cddf9SRui Paulo u8 action; /* 8 */ 993f05cddf9SRui Paulo u8 dialog_token; 994f05cddf9SRui Paulo u8 status_code; 995f05cddf9SRui Paulo u8 bss_termination_delay; 996f05cddf9SRui Paulo /* Target BSSID (optional), 997f05cddf9SRui Paulo * BSS Transition Candidate List 998f05cddf9SRui Paulo * Entries (optional) */ 999325151a3SRui Paulo u8 variable[]; 1000f05cddf9SRui Paulo } STRUCT_PACKED bss_tm_resp; 10015b9c547cSRui Paulo struct { 10025b9c547cSRui Paulo u8 action; /* 6 */ 10035b9c547cSRui Paulo u8 dialog_token; 10045b9c547cSRui Paulo u8 query_reason; 10055b9c547cSRui Paulo /* BSS Transition Candidate List 10065b9c547cSRui Paulo * Entries (optional) */ 1007325151a3SRui Paulo u8 variable[]; 10085b9c547cSRui Paulo } STRUCT_PACKED bss_tm_query; 10095b9c547cSRui Paulo struct { 101085732ac8SCy Schubert u8 action; /* 11 */ 101185732ac8SCy Schubert u8 dialog_token; 101285732ac8SCy Schubert u8 req_info; 101385732ac8SCy Schubert } STRUCT_PACKED coloc_intf_req; 101485732ac8SCy Schubert struct { 101585732ac8SCy Schubert u8 action; /* 12 */ 101685732ac8SCy Schubert u8 dialog_token; 101785732ac8SCy Schubert u8 variable[]; 101885732ac8SCy Schubert } STRUCT_PACKED coloc_intf_report; 101985732ac8SCy Schubert struct { 10205b9c547cSRui Paulo u8 action; /* 15 */ 1021325151a3SRui Paulo u8 variable[]; 10225b9c547cSRui Paulo } STRUCT_PACKED slf_prot_action; 1023325151a3SRui Paulo struct { 1024325151a3SRui Paulo u8 action; 1025325151a3SRui Paulo u8 variable[]; 1026325151a3SRui Paulo } STRUCT_PACKED fst_action; 1027780fb4a2SCy Schubert struct { 1028780fb4a2SCy Schubert u8 action; 1029780fb4a2SCy Schubert u8 dialog_token; 1030780fb4a2SCy Schubert u8 variable[]; 1031780fb4a2SCy Schubert } STRUCT_PACKED rrm; 103239beb93cSSam Leffler } u; 103339beb93cSSam Leffler } STRUCT_PACKED action; 103439beb93cSSam Leffler } u; 103539beb93cSSam Leffler } STRUCT_PACKED; 103639beb93cSSam Leffler 103739beb93cSSam Leffler 1038780fb4a2SCy Schubert #define IEEE80211_MAX_MMPDU_SIZE 2304 1039780fb4a2SCy Schubert 1040f05cddf9SRui Paulo /* Rx MCS bitmask is in the first 77 bits of supported_mcs_set */ 1041f05cddf9SRui Paulo #define IEEE80211_HT_MCS_MASK_LEN 10 1042f05cddf9SRui Paulo 10435b9c547cSRui Paulo /* HT Capabilities element */ 1044e28a4053SRui Paulo struct ieee80211_ht_capabilities { 1045e28a4053SRui Paulo le16 ht_capabilities_info; 10465b9c547cSRui Paulo u8 a_mpdu_params; /* Maximum A-MPDU Length Exponent B0..B1 10475b9c547cSRui Paulo * Minimum MPDU Start Spacing B2..B4 10485b9c547cSRui Paulo * Reserved B5..B7 */ 104939beb93cSSam Leffler u8 supported_mcs_set[16]; 1050e28a4053SRui Paulo le16 ht_extended_capabilities; 1051e28a4053SRui Paulo le32 tx_bf_capability_info; 1052e28a4053SRui Paulo u8 asel_capabilities; 105339beb93cSSam Leffler } STRUCT_PACKED; 105439beb93cSSam Leffler 105539beb93cSSam Leffler 10565b9c547cSRui Paulo /* HT Operation element */ 105739beb93cSSam Leffler struct ieee80211_ht_operation { 10585b9c547cSRui Paulo u8 primary_chan; 10595b9c547cSRui Paulo /* Five octets of HT Operation Information */ 10605b9c547cSRui Paulo u8 ht_param; /* B0..B7 */ 10615b9c547cSRui Paulo le16 operation_mode; /* B8..B23 */ 10625b9c547cSRui Paulo le16 param; /* B24..B39 */ 10635b9c547cSRui Paulo u8 basic_mcs_set[16]; 10645b9c547cSRui Paulo } STRUCT_PACKED; 10655b9c547cSRui Paulo 10665b9c547cSRui Paulo 10675b9c547cSRui Paulo struct ieee80211_obss_scan_parameters { 10685b9c547cSRui Paulo le16 scan_passive_dwell; 10695b9c547cSRui Paulo le16 scan_active_dwell; 10705b9c547cSRui Paulo le16 width_trigger_scan_interval; 10715b9c547cSRui Paulo le16 scan_passive_total_per_channel; 10725b9c547cSRui Paulo le16 scan_active_total_per_channel; 10735b9c547cSRui Paulo le16 channel_transition_delay_factor; 10745b9c547cSRui Paulo le16 scan_activity_threshold; 107539beb93cSSam Leffler } STRUCT_PACKED; 107639beb93cSSam Leffler 1077f05cddf9SRui Paulo 1078f05cddf9SRui Paulo struct ieee80211_vht_capabilities { 1079f05cddf9SRui Paulo le32 vht_capabilities_info; 10805b9c547cSRui Paulo struct { 10815b9c547cSRui Paulo le16 rx_map; 10825b9c547cSRui Paulo le16 rx_highest; 10835b9c547cSRui Paulo le16 tx_map; 10845b9c547cSRui Paulo le16 tx_highest; 10855b9c547cSRui Paulo } vht_supported_mcs_set; 1086f05cddf9SRui Paulo } STRUCT_PACKED; 1087f05cddf9SRui Paulo 1088f05cddf9SRui Paulo struct ieee80211_vht_operation { 1089f05cddf9SRui Paulo u8 vht_op_info_chwidth; 1090f05cddf9SRui Paulo u8 vht_op_info_chan_center_freq_seg0_idx; 1091f05cddf9SRui Paulo u8 vht_op_info_chan_center_freq_seg1_idx; 1092f05cddf9SRui Paulo le16 vht_basic_mcs_set; 1093f05cddf9SRui Paulo } STRUCT_PACKED; 1094f05cddf9SRui Paulo 10955b9c547cSRui Paulo struct ieee80211_ampe_ie { 10965b9c547cSRui Paulo u8 selected_pairwise_suite[4]; 10975b9c547cSRui Paulo u8 local_nonce[32]; 10985b9c547cSRui Paulo u8 peer_nonce[32]; 1099780fb4a2SCy Schubert /* Followed by 1100780fb4a2SCy Schubert * Key Replay Counter[8] (optional) 1101780fb4a2SCy Schubert * (only in Mesh Group Key Inform/Acknowledge frames) 1102780fb4a2SCy Schubert * GTKdata[variable] (optional) 1103780fb4a2SCy Schubert * (MGTK[variable] || Key RSC[8] || GTKExpirationTime[4]) 1104780fb4a2SCy Schubert * IGTKdata[variable] (optional) 1105780fb4a2SCy Schubert * (Key ID[2], IPN[6], IGTK[variable] in IGTK KDE format) 1106780fb4a2SCy Schubert */ 11075b9c547cSRui Paulo } STRUCT_PACKED; 11085b9c547cSRui Paulo 1109e28a4053SRui Paulo #ifdef _MSC_VER 1110e28a4053SRui Paulo #pragma pack(pop) 1111e28a4053SRui Paulo #endif /* _MSC_VER */ 111239beb93cSSam Leffler 1113e28a4053SRui Paulo #define ERP_INFO_NON_ERP_PRESENT BIT(0) 1114e28a4053SRui Paulo #define ERP_INFO_USE_PROTECTION BIT(1) 1115e28a4053SRui Paulo #define ERP_INFO_BARKER_PREAMBLE_MODE BIT(2) 111639beb93cSSam Leffler 11175b9c547cSRui Paulo #define OVERLAPPING_BSS_TRANS_DELAY_FACTOR 5 111839beb93cSSam Leffler 11195b9c547cSRui Paulo /* HT Capabilities Info field within HT Capabilities element */ 112039beb93cSSam Leffler #define HT_CAP_INFO_LDPC_CODING_CAP ((u16) BIT(0)) 112139beb93cSSam Leffler #define HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET ((u16) BIT(1)) 112239beb93cSSam Leffler #define HT_CAP_INFO_SMPS_MASK ((u16) (BIT(2) | BIT(3))) 112339beb93cSSam Leffler #define HT_CAP_INFO_SMPS_STATIC ((u16) 0) 112439beb93cSSam Leffler #define HT_CAP_INFO_SMPS_DYNAMIC ((u16) BIT(2)) 112539beb93cSSam Leffler #define HT_CAP_INFO_SMPS_DISABLED ((u16) (BIT(2) | BIT(3))) 112639beb93cSSam Leffler #define HT_CAP_INFO_GREEN_FIELD ((u16) BIT(4)) 112739beb93cSSam Leffler #define HT_CAP_INFO_SHORT_GI20MHZ ((u16) BIT(5)) 112839beb93cSSam Leffler #define HT_CAP_INFO_SHORT_GI40MHZ ((u16) BIT(6)) 112939beb93cSSam Leffler #define HT_CAP_INFO_TX_STBC ((u16) BIT(7)) 113039beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_MASK ((u16) (BIT(8) | BIT(9))) 113139beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_1 ((u16) BIT(8)) 113239beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_12 ((u16) BIT(9)) 113339beb93cSSam Leffler #define HT_CAP_INFO_RX_STBC_123 ((u16) (BIT(8) | BIT(9))) 113439beb93cSSam Leffler #define HT_CAP_INFO_DELAYED_BA ((u16) BIT(10)) 113539beb93cSSam Leffler #define HT_CAP_INFO_MAX_AMSDU_SIZE ((u16) BIT(11)) 113639beb93cSSam Leffler #define HT_CAP_INFO_DSSS_CCK40MHZ ((u16) BIT(12)) 11375b9c547cSRui Paulo /* B13 - Reserved (was PSMP support during P802.11n development) */ 113839beb93cSSam Leffler #define HT_CAP_INFO_40MHZ_INTOLERANT ((u16) BIT(14)) 113939beb93cSSam Leffler #define HT_CAP_INFO_LSIG_TXOP_PROTECT_SUPPORT ((u16) BIT(15)) 114039beb93cSSam Leffler 11415b9c547cSRui Paulo /* HT Extended Capabilities field within HT Capabilities element */ 114239beb93cSSam Leffler #define EXT_HT_CAP_INFO_PCO ((u16) BIT(0)) 11435b9c547cSRui Paulo #define EXT_HT_CAP_INFO_PCO_TRANS_TIME_MASK ((u16) (BIT(1) | BIT(2))) 114439beb93cSSam Leffler #define EXT_HT_CAP_INFO_TRANS_TIME_OFFSET 1 11455b9c547cSRui Paulo /* B3..B7 - Reserved */ 11465b9c547cSRui Paulo #define EXT_HT_CAP_INFO_MCS_FEEDBACK_MASK ((u16) (BIT(8) | BIT(9))) 114739beb93cSSam Leffler #define EXT_HT_CAP_INFO_MCS_FEEDBACK_OFFSET 8 11485b9c547cSRui Paulo #define EXT_HT_CAP_INFO_HTC_SUPPORT ((u16) BIT(10)) 114939beb93cSSam Leffler #define EXT_HT_CAP_INFO_RD_RESPONDER ((u16) BIT(11)) 11505b9c547cSRui Paulo /* B12..B15 - Reserved */ 115139beb93cSSam Leffler 11525b9c547cSRui Paulo /* Transmit Beanforming Capabilities within HT Capabilities element */ 11535b9c547cSRui Paulo #define TX_BF_CAP_IMPLICIT_TXBF_RX_CAP ((u32) BIT(0)) 11545b9c547cSRui Paulo #define TX_BF_CAP_RX_STAGGERED_SOUNDING_CAP ((u32) BIT(1)) 11555b9c547cSRui Paulo #define TX_BF_CAP_TX_STAGGERED_SOUNDING_CAP ((u32) BIT(2)) 11565b9c547cSRui Paulo #define TX_BF_CAP_RX_NDP_CAP ((u32) BIT(3)) 11575b9c547cSRui Paulo #define TX_BF_CAP_TX_NDP_CAP ((u32) BIT(4)) 11585b9c547cSRui Paulo #define TX_BF_CAP_IMPLICIT_TX_BF_CAP ((u32) BIT(5)) 11595b9c547cSRui Paulo #define TX_BF_CAP_CALIBRATION_MASK ((u32) (BIT(6) | BIT(7)) 11605b9c547cSRui Paulo #define TX_BF_CAP_CALIB_OFFSET 6 11615b9c547cSRui Paulo #define TX_BF_CAP_EXPLICIT_CSI_TXBF_CAP ((u32) BIT(8)) 11625b9c547cSRui Paulo #define TX_BF_CAP_EXPLICIT_NONCOMPR_STEERING_CAP ((u32) BIT(9)) 11635b9c547cSRui Paulo #define TX_BF_CAP_EXPLICIT_COMPR_STEERING_CAP ((u32) BIT(10)) 11645b9c547cSRui Paulo #define TX_BF_CAP_EXPLICIT_TX_BF_CSI_FEEDBACK_MASK ((u32) (BIT(10) | BIT(11))) 11655b9c547cSRui Paulo #define TX_BF_CAP_EXPLICIT_BF_CSI_FEEDBACK_OFFSET 11 11665b9c547cSRui Paulo #define TX_BF_CAP_EXPLICIT_UNCOMPR_STEERING_MATRIX_FEEDBACK_OFFSET 13 11675b9c547cSRui Paulo #define TX_BF_CAP_EXPLICIT_COMPRESSED_STEERING_MATRIX_FEEDBACK_OFFSET 15 11685b9c547cSRui Paulo #define TX_BF_CAP_MINIMAL_GROUPING_OFFSET 17 11695b9c547cSRui Paulo #define TX_BF_CAP_CSI_NUM_BEAMFORMER_ANT_OFFSET 19 11705b9c547cSRui Paulo #define TX_BF_CAP_UNCOMPRESSED_STEERING_MATRIX_BEAMFORMER_ANT_OFFSET 21 11715b9c547cSRui Paulo #define TX_BF_CAP_COMPRESSED_STEERING_MATRIX_BEAMFORMER_ANT_OFFSET 23 11725b9c547cSRui Paulo #define TX_BF_CAP_SCI_MAX_OF_ROWS_BEANFORMER_SUPPORTED_OFFSET 25 11735b9c547cSRui Paulo #define TX_BF_CAP_CHANNEL_ESTIMATION_CAP_MASK ((u32) (BIT(27) | BIT(28))) 11745b9c547cSRui Paulo #define TX_BF_CAP_CHANNEL_ESTIMATION_CAP_OFFSET 27 11755b9c547cSRui Paulo /* B29..B31 - Reserved */ 117639beb93cSSam Leffler 11775b9c547cSRui Paulo /* ASEL Capability field within HT Capabilities element */ 11785b9c547cSRui Paulo #define ASEL_CAP_ASEL_CAPABLE ((u8) BIT(0)) 11795b9c547cSRui Paulo #define ASEL_CAP_EXPLICIT_CSI_FEEDBACK_BASED_TX_AS_CAP ((u8) BIT(1)) 11805b9c547cSRui Paulo #define ASEL_CAP_ANT_INDICES_FEEDBACK_BASED_TX_AS_CAP ((u8) BIT(2)) 11815b9c547cSRui Paulo #define ASEL_CAP_EXPLICIT_CSI_FEEDBACK_CAP ((u8) BIT(3)) 11825b9c547cSRui Paulo #define ASEL_CAP_ANT_INDICES_FEEDBACK_CAP ((u8) BIT(4)) 11835b9c547cSRui Paulo #define ASEL_CAP_RX_AS_CAP ((u8) BIT(5)) 11845b9c547cSRui Paulo #define ASEL_CAP_TX_SOUNDING_PPDUS_CAP ((u8) BIT(6)) 11855b9c547cSRui Paulo /* B7 - Reserved */ 118639beb93cSSam Leffler 11875b9c547cSRui Paulo /* First octet of HT Operation Information within HT Operation element */ 118839beb93cSSam Leffler #define HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK ((u8) BIT(0) | BIT(1)) 118939beb93cSSam Leffler #define HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE ((u8) BIT(0)) 119039beb93cSSam Leffler #define HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW ((u8) BIT(0) | BIT(1)) 11915b9c547cSRui Paulo #define HT_INFO_HT_PARAM_STA_CHNL_WIDTH ((u8) BIT(2)) 119239beb93cSSam Leffler #define HT_INFO_HT_PARAM_RIFS_MODE ((u8) BIT(3)) 11935b9c547cSRui Paulo /* B4..B7 - Reserved */ 119439beb93cSSam Leffler 11955b9c547cSRui Paulo /* HT Protection (B8..B9 of HT Operation Information) */ 11965b9c547cSRui Paulo #define HT_PROT_NO_PROTECTION 0 11975b9c547cSRui Paulo #define HT_PROT_NONMEMBER_PROTECTION 1 11985b9c547cSRui Paulo #define HT_PROT_20MHZ_PROTECTION 2 11995b9c547cSRui Paulo #define HT_PROT_NON_HT_MIXED 3 12005b9c547cSRui Paulo /* Bits within ieee80211_ht_operation::operation_mode (BIT(0) maps to B8 in 12015b9c547cSRui Paulo * HT Operation Information) */ 12025b9c547cSRui Paulo #define HT_OPER_OP_MODE_HT_PROT_MASK ((u16) (BIT(0) | BIT(1))) /* B8..B9 */ 12035b9c547cSRui Paulo #define HT_OPER_OP_MODE_NON_GF_HT_STAS_PRESENT ((u16) BIT(2)) /* B10 */ 12045b9c547cSRui Paulo /* BIT(3), i.e., B11 in HT Operation Information field - Reserved */ 12055b9c547cSRui Paulo #define HT_OPER_OP_MODE_OBSS_NON_HT_STAS_PRESENT ((u16) BIT(4)) /* B12 */ 12065b9c547cSRui Paulo /* BIT(5)..BIT(15), i.e., B13..B23 - Reserved */ 1207e28a4053SRui Paulo 12085b9c547cSRui Paulo /* Last two octets of HT Operation Information (BIT(0) = B24) */ 12095b9c547cSRui Paulo /* B24..B29 - Reserved */ 12105b9c547cSRui Paulo #define HT_OPER_PARAM_DUAL_BEACON ((u16) BIT(6)) 12115b9c547cSRui Paulo #define HT_OPER_PARAM_DUAL_CTS_PROTECTION ((u16) BIT(7)) 12125b9c547cSRui Paulo #define HT_OPER_PARAM_STBC_BEACON ((u16) BIT(8)) 12135b9c547cSRui Paulo #define HT_OPER_PARAM_LSIG_TXOP_PROT_FULL_SUPP ((u16) BIT(9)) 12145b9c547cSRui Paulo #define HT_OPER_PARAM_PCO_ACTIVE ((u16) BIT(10)) 12155b9c547cSRui Paulo #define HT_OPER_PARAM_PCO_PHASE ((u16) BIT(11)) 12165b9c547cSRui Paulo /* B36..B39 - Reserved */ 121739beb93cSSam Leffler 1218f05cddf9SRui Paulo #define BSS_MEMBERSHIP_SELECTOR_VHT_PHY 126 1219f05cddf9SRui Paulo #define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127 1220f05cddf9SRui Paulo 1221f05cddf9SRui Paulo /* VHT Defines */ 1222f05cddf9SRui Paulo #define VHT_CAP_MAX_MPDU_LENGTH_7991 ((u32) BIT(0)) 1223f05cddf9SRui Paulo #define VHT_CAP_MAX_MPDU_LENGTH_11454 ((u32) BIT(1)) 12245b9c547cSRui Paulo #define VHT_CAP_MAX_MPDU_LENGTH_MASK ((u32) BIT(0) | BIT(1)) 12255b9c547cSRui Paulo #define VHT_CAP_MAX_MPDU_LENGTH_MASK_SHIFT 0 1226f05cddf9SRui Paulo #define VHT_CAP_SUPP_CHAN_WIDTH_160MHZ ((u32) BIT(2)) 1227f05cddf9SRui Paulo #define VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ ((u32) BIT(3)) 12285b9c547cSRui Paulo #define VHT_CAP_SUPP_CHAN_WIDTH_MASK ((u32) BIT(2) | BIT(3)) 122985732ac8SCy Schubert #define VHT_CAP_SUPP_CHAN_WIDTH_MASK_SHIFT 2 1230f05cddf9SRui Paulo #define VHT_CAP_RXLDPC ((u32) BIT(4)) 1231f05cddf9SRui Paulo #define VHT_CAP_SHORT_GI_80 ((u32) BIT(5)) 1232f05cddf9SRui Paulo #define VHT_CAP_SHORT_GI_160 ((u32) BIT(6)) 1233f05cddf9SRui Paulo #define VHT_CAP_TXSTBC ((u32) BIT(7)) 1234f05cddf9SRui Paulo #define VHT_CAP_RXSTBC_1 ((u32) BIT(8)) 1235f05cddf9SRui Paulo #define VHT_CAP_RXSTBC_2 ((u32) BIT(9)) 1236f05cddf9SRui Paulo #define VHT_CAP_RXSTBC_3 ((u32) BIT(8) | BIT(9)) 1237f05cddf9SRui Paulo #define VHT_CAP_RXSTBC_4 ((u32) BIT(10)) 12385b9c547cSRui Paulo #define VHT_CAP_RXSTBC_MASK ((u32) BIT(8) | BIT(9) | \ 12395b9c547cSRui Paulo BIT(10)) 12405b9c547cSRui Paulo #define VHT_CAP_RXSTBC_MASK_SHIFT 8 1241f05cddf9SRui Paulo #define VHT_CAP_SU_BEAMFORMER_CAPABLE ((u32) BIT(11)) 1242f05cddf9SRui Paulo #define VHT_CAP_SU_BEAMFORMEE_CAPABLE ((u32) BIT(12)) 12435b9c547cSRui Paulo #define VHT_CAP_BEAMFORMEE_STS_MAX ((u32) BIT(13) | \ 12445b9c547cSRui Paulo BIT(14) | BIT(15)) 12455b9c547cSRui Paulo #define VHT_CAP_BEAMFORMEE_STS_MAX_SHIFT 13 12465b9c547cSRui Paulo #define VHT_CAP_BEAMFORMEE_STS_OFFSET 13 12475b9c547cSRui Paulo #define VHT_CAP_SOUNDING_DIMENSION_MAX ((u32) BIT(16) | \ 12485b9c547cSRui Paulo BIT(17) | BIT(18)) 12495b9c547cSRui Paulo #define VHT_CAP_SOUNDING_DIMENSION_MAX_SHIFT 16 12505b9c547cSRui Paulo #define VHT_CAP_SOUNDING_DIMENSION_OFFSET 16 1251f05cddf9SRui Paulo #define VHT_CAP_MU_BEAMFORMER_CAPABLE ((u32) BIT(19)) 1252f05cddf9SRui Paulo #define VHT_CAP_MU_BEAMFORMEE_CAPABLE ((u32) BIT(20)) 1253f05cddf9SRui Paulo #define VHT_CAP_VHT_TXOP_PS ((u32) BIT(21)) 1254f05cddf9SRui Paulo #define VHT_CAP_HTC_VHT ((u32) BIT(22)) 12555b9c547cSRui Paulo 12565b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_1 ((u32) BIT(23)) 12575b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_2 ((u32) BIT(24)) 12585b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_3 ((u32) BIT(23) | BIT(24)) 12595b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_4 ((u32) BIT(25)) 12605b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_5 ((u32) BIT(23) | BIT(25)) 12615b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_6 ((u32) BIT(24) | BIT(25)) 12625b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MAX ((u32) BIT(23) | \ 12635b9c547cSRui Paulo BIT(24) | BIT(25)) 12645b9c547cSRui Paulo #define VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MAX_SHIFT 23 1265f05cddf9SRui Paulo #define VHT_CAP_VHT_LINK_ADAPTATION_VHT_UNSOL_MFB ((u32) BIT(27)) 1266f05cddf9SRui Paulo #define VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB ((u32) BIT(26) | BIT(27)) 1267f05cddf9SRui Paulo #define VHT_CAP_RX_ANTENNA_PATTERN ((u32) BIT(28)) 1268f05cddf9SRui Paulo #define VHT_CAP_TX_ANTENNA_PATTERN ((u32) BIT(29)) 126939beb93cSSam Leffler 12705b9c547cSRui Paulo #define VHT_OPMODE_CHANNEL_WIDTH_MASK ((u8) BIT(0) | BIT(1)) 12715b9c547cSRui Paulo #define VHT_OPMODE_CHANNEL_RxNSS_MASK ((u8) BIT(4) | BIT(5) | \ 12725b9c547cSRui Paulo BIT(6)) 12735b9c547cSRui Paulo #define VHT_OPMODE_NOTIF_RX_NSS_SHIFT 4 12745b9c547cSRui Paulo 12755b9c547cSRui Paulo #define VHT_RX_NSS_MAX_STREAMS 8 12765b9c547cSRui Paulo 12775b9c547cSRui Paulo /* VHT channel widths */ 1278*206b73d0SCy Schubert #define CHANWIDTH_USE_HT 0 1279*206b73d0SCy Schubert #define CHANWIDTH_80MHZ 1 1280*206b73d0SCy Schubert #define CHANWIDTH_160MHZ 2 1281*206b73d0SCy Schubert #define CHANWIDTH_80P80MHZ 3 1282*206b73d0SCy Schubert 1283*206b73d0SCy Schubert #define HE_NSS_MAX_STREAMS 8 12845b9c547cSRui Paulo 128539beb93cSSam Leffler #define OUI_MICROSOFT 0x0050f2 /* Microsoft (also used in Wi-Fi specs) 128639beb93cSSam Leffler * 00:50:F2 */ 1287e28a4053SRui Paulo #define WPA_IE_VENDOR_TYPE 0x0050f201 12885b9c547cSRui Paulo #define WMM_IE_VENDOR_TYPE 0x0050f202 1289e28a4053SRui Paulo #define WPS_IE_VENDOR_TYPE 0x0050f204 1290f05cddf9SRui Paulo #define OUI_WFA 0x506f9a 1291f05cddf9SRui Paulo #define P2P_IE_VENDOR_TYPE 0x506f9a09 1292f05cddf9SRui Paulo #define WFD_IE_VENDOR_TYPE 0x506f9a0a 1293f05cddf9SRui Paulo #define WFD_OUI_TYPE 10 1294f05cddf9SRui Paulo #define HS20_IE_VENDOR_TYPE 0x506f9a10 12955b9c547cSRui Paulo #define OSEN_IE_VENDOR_TYPE 0x506f9a12 1296780fb4a2SCy Schubert #define MBO_IE_VENDOR_TYPE 0x506f9a16 1297780fb4a2SCy Schubert #define MBO_OUI_TYPE 22 129885732ac8SCy Schubert #define OWE_IE_VENDOR_TYPE 0x506f9a1c 129985732ac8SCy Schubert #define OWE_OUI_TYPE 28 13004bc52338SCy Schubert #define MULTI_AP_OUI_TYPE 0x1B 13014bc52338SCy Schubert 13024bc52338SCy Schubert #define MULTI_AP_SUB_ELEM_TYPE 0x06 13034bc52338SCy Schubert #define MULTI_AP_TEAR_DOWN BIT(4) 13044bc52338SCy Schubert #define MULTI_AP_FRONTHAUL_BSS BIT(5) 13054bc52338SCy Schubert #define MULTI_AP_BACKHAUL_BSS BIT(6) 13064bc52338SCy Schubert #define MULTI_AP_BACKHAUL_STA BIT(7) 130739beb93cSSam Leffler 13083157ba21SRui Paulo #define WMM_OUI_TYPE 2 13093157ba21SRui Paulo #define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0 13103157ba21SRui Paulo #define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1 13113157ba21SRui Paulo #define WMM_OUI_SUBTYPE_TSPEC_ELEMENT 2 13123157ba21SRui Paulo #define WMM_VERSION 1 131339beb93cSSam Leffler 13143157ba21SRui Paulo #define WMM_ACTION_CODE_ADDTS_REQ 0 13153157ba21SRui Paulo #define WMM_ACTION_CODE_ADDTS_RESP 1 13163157ba21SRui Paulo #define WMM_ACTION_CODE_DELTS 2 131739beb93cSSam Leffler 13183157ba21SRui Paulo #define WMM_ADDTS_STATUS_ADMISSION_ACCEPTED 0 13193157ba21SRui Paulo #define WMM_ADDTS_STATUS_INVALID_PARAMETERS 1 13203157ba21SRui Paulo /* 2 - Reserved */ 13213157ba21SRui Paulo #define WMM_ADDTS_STATUS_REFUSED 3 13223157ba21SRui Paulo /* 4-255 - Reserved */ 132339beb93cSSam Leffler 13243157ba21SRui Paulo /* WMM TSPEC Direction Field Values */ 13253157ba21SRui Paulo #define WMM_TSPEC_DIRECTION_UPLINK 0 13263157ba21SRui Paulo #define WMM_TSPEC_DIRECTION_DOWNLINK 1 13273157ba21SRui Paulo /* 2 - Reserved */ 13283157ba21SRui Paulo #define WMM_TSPEC_DIRECTION_BI_DIRECTIONAL 3 132939beb93cSSam Leffler 1330e28a4053SRui Paulo /* 1331e28a4053SRui Paulo * WMM Information Element (used in (Re)Association Request frames; may also be 1332e28a4053SRui Paulo * used in Beacon frames) 1333e28a4053SRui Paulo */ 1334e28a4053SRui Paulo struct wmm_information_element { 1335e28a4053SRui Paulo /* Element ID: 221 (0xdd); Length: 7 */ 1336e28a4053SRui Paulo /* required fields for WMM version 1 */ 1337e28a4053SRui Paulo u8 oui[3]; /* 00:50:f2 */ 1338e28a4053SRui Paulo u8 oui_type; /* 2 */ 1339e28a4053SRui Paulo u8 oui_subtype; /* 0 */ 1340e28a4053SRui Paulo u8 version; /* 1 for WMM version 1.0 */ 1341e28a4053SRui Paulo u8 qos_info; /* AP/STA specific QoS info */ 1342e28a4053SRui Paulo 1343e28a4053SRui Paulo } STRUCT_PACKED; 1344e28a4053SRui Paulo 13455b9c547cSRui Paulo #define WMM_QOSINFO_AP_UAPSD 0x80 13465b9c547cSRui Paulo 1347f05cddf9SRui Paulo #define WMM_QOSINFO_STA_AC_MASK 0x0f 1348f05cddf9SRui Paulo #define WMM_QOSINFO_STA_SP_MASK 0x03 1349f05cddf9SRui Paulo #define WMM_QOSINFO_STA_SP_SHIFT 5 1350f05cddf9SRui Paulo 1351e28a4053SRui Paulo #define WMM_AC_AIFSN_MASK 0x0f 1352e28a4053SRui Paulo #define WMM_AC_AIFNS_SHIFT 0 1353e28a4053SRui Paulo #define WMM_AC_ACM 0x10 1354e28a4053SRui Paulo #define WMM_AC_ACI_MASK 0x60 1355e28a4053SRui Paulo #define WMM_AC_ACI_SHIFT 5 1356e28a4053SRui Paulo 1357e28a4053SRui Paulo #define WMM_AC_ECWMIN_MASK 0x0f 1358e28a4053SRui Paulo #define WMM_AC_ECWMIN_SHIFT 0 1359e28a4053SRui Paulo #define WMM_AC_ECWMAX_MASK 0xf0 1360e28a4053SRui Paulo #define WMM_AC_ECWMAX_SHIFT 4 1361e28a4053SRui Paulo 1362e28a4053SRui Paulo struct wmm_ac_parameter { 1363e28a4053SRui Paulo u8 aci_aifsn; /* AIFSN, ACM, ACI */ 1364e28a4053SRui Paulo u8 cw; /* ECWmin, ECWmax (CW = 2^ECW - 1) */ 1365e28a4053SRui Paulo le16 txop_limit; 1366e28a4053SRui Paulo } STRUCT_PACKED; 1367e28a4053SRui Paulo 1368e28a4053SRui Paulo /* 1369e28a4053SRui Paulo * WMM Parameter Element (used in Beacon, Probe Response, and (Re)Association 1370e28a4053SRui Paulo * Response frmaes) 1371e28a4053SRui Paulo */ 1372e28a4053SRui Paulo struct wmm_parameter_element { 1373e28a4053SRui Paulo /* Element ID: 221 (0xdd); Length: 24 */ 1374e28a4053SRui Paulo /* required fields for WMM version 1 */ 1375e28a4053SRui Paulo u8 oui[3]; /* 00:50:f2 */ 1376e28a4053SRui Paulo u8 oui_type; /* 2 */ 1377e28a4053SRui Paulo u8 oui_subtype; /* 1 */ 1378e28a4053SRui Paulo u8 version; /* 1 for WMM version 1.0 */ 1379f05cddf9SRui Paulo u8 qos_info; /* AP/STA specific QoS info */ 1380e28a4053SRui Paulo u8 reserved; /* 0 */ 1381e28a4053SRui Paulo struct wmm_ac_parameter ac[4]; /* AC_BE, AC_BK, AC_VI, AC_VO */ 1382e28a4053SRui Paulo 1383e28a4053SRui Paulo } STRUCT_PACKED; 1384e28a4053SRui Paulo 1385e28a4053SRui Paulo /* WMM TSPEC Element */ 1386e28a4053SRui Paulo struct wmm_tspec_element { 1387e28a4053SRui Paulo u8 eid; /* 221 = 0xdd */ 1388e28a4053SRui Paulo u8 length; /* 6 + 55 = 61 */ 1389e28a4053SRui Paulo u8 oui[3]; /* 00:50:f2 */ 1390e28a4053SRui Paulo u8 oui_type; /* 2 */ 1391e28a4053SRui Paulo u8 oui_subtype; /* 2 */ 1392e28a4053SRui Paulo u8 version; /* 1 */ 1393e28a4053SRui Paulo /* WMM TSPEC body (55 octets): */ 1394e28a4053SRui Paulo u8 ts_info[3]; 1395e28a4053SRui Paulo le16 nominal_msdu_size; 1396e28a4053SRui Paulo le16 maximum_msdu_size; 1397e28a4053SRui Paulo le32 minimum_service_interval; 1398e28a4053SRui Paulo le32 maximum_service_interval; 1399e28a4053SRui Paulo le32 inactivity_interval; 1400e28a4053SRui Paulo le32 suspension_interval; 1401e28a4053SRui Paulo le32 service_start_time; 1402e28a4053SRui Paulo le32 minimum_data_rate; 1403e28a4053SRui Paulo le32 mean_data_rate; 1404e28a4053SRui Paulo le32 peak_data_rate; 1405e28a4053SRui Paulo le32 maximum_burst_size; 1406e28a4053SRui Paulo le32 delay_bound; 1407e28a4053SRui Paulo le32 minimum_phy_rate; 1408e28a4053SRui Paulo le16 surplus_bandwidth_allowance; 1409e28a4053SRui Paulo le16 medium_time; 1410e28a4053SRui Paulo } STRUCT_PACKED; 1411e28a4053SRui Paulo 1412e28a4053SRui Paulo 1413e28a4053SRui Paulo /* Access Categories / ACI to AC coding */ 14145b9c547cSRui Paulo enum wmm_ac { 1415e28a4053SRui Paulo WMM_AC_BE = 0 /* Best Effort */, 1416e28a4053SRui Paulo WMM_AC_BK = 1 /* Background */, 1417e28a4053SRui Paulo WMM_AC_VI = 2 /* Video */, 14185b9c547cSRui Paulo WMM_AC_VO = 3 /* Voice */, 14195b9c547cSRui Paulo WMM_AC_NUM = 4 1420e28a4053SRui Paulo }; 1421e28a4053SRui Paulo 142239beb93cSSam Leffler 1423f05cddf9SRui Paulo #define HS20_INDICATION_OUI_TYPE 16 1424f05cddf9SRui Paulo #define HS20_ANQP_OUI_TYPE 17 14255b9c547cSRui Paulo #define HS20_OSEN_OUI_TYPE 18 142685732ac8SCy Schubert #define HS20_ROAMING_CONS_SEL_OUI_TYPE 29 1427f05cddf9SRui Paulo #define HS20_STYPE_QUERY_LIST 1 1428f05cddf9SRui Paulo #define HS20_STYPE_CAPABILITY_LIST 2 1429f05cddf9SRui Paulo #define HS20_STYPE_OPERATOR_FRIENDLY_NAME 3 1430f05cddf9SRui Paulo #define HS20_STYPE_WAN_METRICS 4 1431f05cddf9SRui Paulo #define HS20_STYPE_CONNECTION_CAPABILITY 5 1432f05cddf9SRui Paulo #define HS20_STYPE_NAI_HOME_REALM_QUERY 6 1433f05cddf9SRui Paulo #define HS20_STYPE_OPERATING_CLASS 7 14345b9c547cSRui Paulo #define HS20_STYPE_OSU_PROVIDERS_LIST 8 14355b9c547cSRui Paulo #define HS20_STYPE_ICON_REQUEST 10 14365b9c547cSRui Paulo #define HS20_STYPE_ICON_BINARY_FILE 11 143785732ac8SCy Schubert #define HS20_STYPE_OPERATOR_ICON_METADATA 12 143885732ac8SCy Schubert #define HS20_STYPE_OSU_PROVIDERS_NAI_LIST 13 14395b9c547cSRui Paulo 14405b9c547cSRui Paulo #define HS20_DGAF_DISABLED 0x01 14415b9c547cSRui Paulo #define HS20_PPS_MO_ID_PRESENT 0x02 14425b9c547cSRui Paulo #define HS20_ANQP_DOMAIN_ID_PRESENT 0x04 144385732ac8SCy Schubert #ifndef HS20_VERSION 14444bc52338SCy Schubert #define HS20_VERSION 0x20 /* Release 3 */ 144585732ac8SCy Schubert #endif /* HS20_VERSION */ 14465b9c547cSRui Paulo 14475b9c547cSRui Paulo /* WNM-Notification WFA vendors specific subtypes */ 14485b9c547cSRui Paulo #define HS20_WNM_SUB_REM_NEEDED 0 14495b9c547cSRui Paulo #define HS20_WNM_DEAUTH_IMMINENT_NOTICE 1 14504bc52338SCy Schubert #define WFA_WNM_NOTIF_SUBELEM_NON_PREF_CHAN_REPORT 2 14514bc52338SCy Schubert #define WFA_WNM_NOTIF_SUBELEM_CELL_DATA_CAPA 3 14524bc52338SCy Schubert #define HS20_WNM_T_C_ACCEPTANCE 4 14535b9c547cSRui Paulo 14545b9c547cSRui Paulo #define HS20_DEAUTH_REASON_CODE_BSS 0 14555b9c547cSRui Paulo #define HS20_DEAUTH_REASON_CODE_ESS 1 1456f05cddf9SRui Paulo 1457780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2: MBO Attributes */ 1458780fb4a2SCy Schubert /* Table 4-5: MBO Attributes */ 145985732ac8SCy Schubert /* OCE v0.0.10, Table 4-3: OCE Attributes */ 1460780fb4a2SCy Schubert enum mbo_attr_id { 1461780fb4a2SCy Schubert MBO_ATTR_ID_AP_CAPA_IND = 1, 1462780fb4a2SCy Schubert MBO_ATTR_ID_NON_PREF_CHAN_REPORT = 2, 1463780fb4a2SCy Schubert MBO_ATTR_ID_CELL_DATA_CAPA = 3, 1464780fb4a2SCy Schubert MBO_ATTR_ID_ASSOC_DISALLOW = 4, 1465780fb4a2SCy Schubert MBO_ATTR_ID_CELL_DATA_PREF = 5, 1466780fb4a2SCy Schubert MBO_ATTR_ID_TRANSITION_REASON = 6, 1467780fb4a2SCy Schubert MBO_ATTR_ID_TRANSITION_REJECT_REASON = 7, 1468780fb4a2SCy Schubert MBO_ATTR_ID_ASSOC_RETRY_DELAY = 8, 146985732ac8SCy Schubert OCE_ATTR_ID_CAPA_IND = 101, 147085732ac8SCy Schubert OCE_ATTR_ID_RSSI_BASED_ASSOC_REJECT = 102, 147185732ac8SCy Schubert OCE_ATTR_ID_REDUCED_WAN_METRICS = 103, 147285732ac8SCy Schubert OCE_ATTR_ID_RNR_COMPLETENESS = 104, 1473780fb4a2SCy Schubert }; 1474780fb4a2SCy Schubert 1475780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2.1: MBO AP Capability Indication Attribute */ 1476780fb4a2SCy Schubert /* Table 4-7: MBO AP Capability Indication Field Values */ 1477780fb4a2SCy Schubert #define MBO_AP_CAPA_CELL_AWARE BIT(6) 1478780fb4a2SCy Schubert 1479780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2.2: Non-preferred Channel Report Attribute */ 1480780fb4a2SCy Schubert /* Table 4-10: Reason Code Field Values */ 1481780fb4a2SCy Schubert enum mbo_non_pref_chan_reason { 1482780fb4a2SCy Schubert MBO_NON_PREF_CHAN_REASON_UNSPECIFIED = 0, 1483780fb4a2SCy Schubert MBO_NON_PREF_CHAN_REASON_RSSI = 1, 1484780fb4a2SCy Schubert MBO_NON_PREF_CHAN_REASON_EXT_INTERFERENCE = 2, 1485780fb4a2SCy Schubert MBO_NON_PREF_CHAN_REASON_INT_INTERFERENCE = 3, 1486780fb4a2SCy Schubert }; 1487780fb4a2SCy Schubert 1488780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2.3: Cellular Data Capabilities Attribute */ 1489780fb4a2SCy Schubert /* Table 4-13: Cellular Data Connectivity Field */ 1490780fb4a2SCy Schubert enum mbo_cellular_capa { 1491780fb4a2SCy Schubert MBO_CELL_CAPA_AVAILABLE = 1, 1492780fb4a2SCy Schubert MBO_CELL_CAPA_NOT_AVAILABLE = 2, 1493780fb4a2SCy Schubert MBO_CELL_CAPA_NOT_SUPPORTED = 3, 1494780fb4a2SCy Schubert }; 1495780fb4a2SCy Schubert 1496780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2.4: Association Disallowed Attribute */ 1497780fb4a2SCy Schubert /* Table 4-15: Reason Code Field Values */ 1498780fb4a2SCy Schubert enum mbo_assoc_disallow_reason { 1499780fb4a2SCy Schubert MBO_ASSOC_DISALLOW_REASON_UNSPECIFIED = 1, 1500780fb4a2SCy Schubert MBO_ASSOC_DISALLOW_REASON_MAX_STA = 2, 1501780fb4a2SCy Schubert MBO_ASSOC_DISALLOW_REASON_AIR_INTERFERENCE = 3, 1502780fb4a2SCy Schubert MBO_ASSOC_DISALLOW_REASON_AUTH_SERVER_OVERLOAD = 4, 1503780fb4a2SCy Schubert MBO_ASSOC_DISALLOW_REASON_LOW_RSSI = 5, 1504780fb4a2SCy Schubert }; 1505780fb4a2SCy Schubert 1506780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2.5: Cellular Data Connection Preference Attribute */ 1507780fb4a2SCy Schubert /* Table 4-17: Cellular Preference Field Values */ 1508780fb4a2SCy Schubert enum mbo_cell_pref { 1509780fb4a2SCy Schubert MBO_CELL_PREF_EXCLUDED = 0, 1510780fb4a2SCy Schubert MBO_CELL_PREF_NO_USE = 1, 1511780fb4a2SCy Schubert MBO_CELL_PREF_USE = 255 1512780fb4a2SCy Schubert }; 1513780fb4a2SCy Schubert 1514780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2.6: Transition Reason Code Attribute */ 1515780fb4a2SCy Schubert /* Table 4-19: Transition Reason Code Field Values */ 1516780fb4a2SCy Schubert enum mbo_transition_reason { 1517780fb4a2SCy Schubert MBO_TRANSITION_REASON_UNSPECIFIED = 0, 1518780fb4a2SCy Schubert MBO_TRANSITION_REASON_FRAME_LOSS = 1, 1519780fb4a2SCy Schubert MBO_TRANSITION_REASON_DELAY = 2, 1520780fb4a2SCy Schubert MBO_TRANSITION_REASON_BANDWIDTH = 3, 1521780fb4a2SCy Schubert MBO_TRANSITION_REASON_LOAD_BALANCE = 4, 1522780fb4a2SCy Schubert MBO_TRANSITION_REASON_RSSI = 5, 1523780fb4a2SCy Schubert MBO_TRANSITION_REASON_RETRANSMISSIONS = 6, 1524780fb4a2SCy Schubert MBO_TRANSITION_REASON_INTERFERENCE = 7, 1525780fb4a2SCy Schubert MBO_TRANSITION_REASON_GRAY_ZONE = 8, 1526780fb4a2SCy Schubert MBO_TRANSITION_REASON_PREMIUM_AP = 9, 1527780fb4a2SCy Schubert }; 1528780fb4a2SCy Schubert 1529780fb4a2SCy Schubert /* MBO v0.0_r19, 4.2.7: Transition Rejection Reason Code Attribute */ 1530780fb4a2SCy Schubert /* Table 4-21: Transition Rejection Reason Code Field Values */ 1531780fb4a2SCy Schubert enum mbo_transition_reject_reason { 1532780fb4a2SCy Schubert MBO_TRANSITION_REJECT_REASON_UNSPECIFIED = 0, 1533780fb4a2SCy Schubert MBO_TRANSITION_REJECT_REASON_FRAME_LOSS = 1, 1534780fb4a2SCy Schubert MBO_TRANSITION_REJECT_REASON_DELAY = 2, 1535780fb4a2SCy Schubert MBO_TRANSITION_REJECT_REASON_QOS_CAPACITY = 3, 1536780fb4a2SCy Schubert MBO_TRANSITION_REJECT_REASON_RSSI = 4, 1537780fb4a2SCy Schubert MBO_TRANSITION_REJECT_REASON_INTERFERENCE = 5, 1538780fb4a2SCy Schubert MBO_TRANSITION_REJECT_REASON_SERVICES = 6, 1539780fb4a2SCy Schubert }; 1540780fb4a2SCy Schubert 154185732ac8SCy Schubert /* MBO v0.0_r27, 4.3: MBO ANQP-elements */ 1542780fb4a2SCy Schubert #define MBO_ANQP_OUI_TYPE 0x12 154385732ac8SCy Schubert #define MBO_ANQP_SUBTYPE_QUERY_LIST 1 154485732ac8SCy Schubert #define MBO_ANQP_SUBTYPE_CELL_CONN_PREF 2 154585732ac8SCy Schubert #define MAX_MBO_ANQP_SUBTYPE MBO_ANQP_SUBTYPE_CELL_CONN_PREF 154685732ac8SCy Schubert 154785732ac8SCy Schubert /* OCE v0.0.10, 4.2.1: OCE Capability Indication Attribute */ 154885732ac8SCy Schubert #define OCE_RELEASE 1 154985732ac8SCy Schubert #define OCE_RELEASE_MASK (BIT(0) | BIT(1) | BIT(2)) 155085732ac8SCy Schubert #define OCE_IS_STA_CFON BIT(3) 155185732ac8SCy Schubert #define OCE_IS_NON_OCE_AP_PRESENT BIT(4) 1552780fb4a2SCy Schubert 1553f05cddf9SRui Paulo /* Wi-Fi Direct (P2P) */ 1554f05cddf9SRui Paulo 1555f05cddf9SRui Paulo #define P2P_OUI_TYPE 9 1556f05cddf9SRui Paulo 1557f05cddf9SRui Paulo enum p2p_attr_id { 1558f05cddf9SRui Paulo P2P_ATTR_STATUS = 0, 1559f05cddf9SRui Paulo P2P_ATTR_MINOR_REASON_CODE = 1, 1560f05cddf9SRui Paulo P2P_ATTR_CAPABILITY = 2, 1561f05cddf9SRui Paulo P2P_ATTR_DEVICE_ID = 3, 1562f05cddf9SRui Paulo P2P_ATTR_GROUP_OWNER_INTENT = 4, 1563f05cddf9SRui Paulo P2P_ATTR_CONFIGURATION_TIMEOUT = 5, 1564f05cddf9SRui Paulo P2P_ATTR_LISTEN_CHANNEL = 6, 1565f05cddf9SRui Paulo P2P_ATTR_GROUP_BSSID = 7, 1566f05cddf9SRui Paulo P2P_ATTR_EXT_LISTEN_TIMING = 8, 1567f05cddf9SRui Paulo P2P_ATTR_INTENDED_INTERFACE_ADDR = 9, 1568f05cddf9SRui Paulo P2P_ATTR_MANAGEABILITY = 10, 1569f05cddf9SRui Paulo P2P_ATTR_CHANNEL_LIST = 11, 1570f05cddf9SRui Paulo P2P_ATTR_NOTICE_OF_ABSENCE = 12, 1571f05cddf9SRui Paulo P2P_ATTR_DEVICE_INFO = 13, 1572f05cddf9SRui Paulo P2P_ATTR_GROUP_INFO = 14, 1573f05cddf9SRui Paulo P2P_ATTR_GROUP_ID = 15, 1574f05cddf9SRui Paulo P2P_ATTR_INTERFACE = 16, 1575f05cddf9SRui Paulo P2P_ATTR_OPERATING_CHANNEL = 17, 1576f05cddf9SRui Paulo P2P_ATTR_INVITATION_FLAGS = 18, 15775b9c547cSRui Paulo P2P_ATTR_OOB_GO_NEG_CHANNEL = 19, 15785b9c547cSRui Paulo P2P_ATTR_SERVICE_HASH = 21, 15795b9c547cSRui Paulo P2P_ATTR_SESSION_INFORMATION_DATA = 22, 15805b9c547cSRui Paulo P2P_ATTR_CONNECTION_CAPABILITY = 23, 15815b9c547cSRui Paulo P2P_ATTR_ADVERTISEMENT_ID = 24, 15825b9c547cSRui Paulo P2P_ATTR_ADVERTISED_SERVICE = 25, 15835b9c547cSRui Paulo P2P_ATTR_SESSION_ID = 26, 15845b9c547cSRui Paulo P2P_ATTR_FEATURE_CAPABILITY = 27, 15855b9c547cSRui Paulo P2P_ATTR_PERSISTENT_GROUP = 28, 1586f05cddf9SRui Paulo P2P_ATTR_VENDOR_SPECIFIC = 221 1587f05cddf9SRui Paulo }; 1588f05cddf9SRui Paulo 1589f05cddf9SRui Paulo #define P2P_MAX_GO_INTENT 15 1590f05cddf9SRui Paulo 1591f05cddf9SRui Paulo /* P2P Capability - Device Capability bitmap */ 1592f05cddf9SRui Paulo #define P2P_DEV_CAPAB_SERVICE_DISCOVERY BIT(0) 1593f05cddf9SRui Paulo #define P2P_DEV_CAPAB_CLIENT_DISCOVERABILITY BIT(1) 1594f05cddf9SRui Paulo #define P2P_DEV_CAPAB_CONCURRENT_OPER BIT(2) 1595f05cddf9SRui Paulo #define P2P_DEV_CAPAB_INFRA_MANAGED BIT(3) 1596f05cddf9SRui Paulo #define P2P_DEV_CAPAB_DEVICE_LIMIT BIT(4) 1597f05cddf9SRui Paulo #define P2P_DEV_CAPAB_INVITATION_PROCEDURE BIT(5) 1598f05cddf9SRui Paulo 1599f05cddf9SRui Paulo /* P2P Capability - Group Capability bitmap */ 1600f05cddf9SRui Paulo #define P2P_GROUP_CAPAB_GROUP_OWNER BIT(0) 1601f05cddf9SRui Paulo #define P2P_GROUP_CAPAB_PERSISTENT_GROUP BIT(1) 1602f05cddf9SRui Paulo #define P2P_GROUP_CAPAB_GROUP_LIMIT BIT(2) 1603f05cddf9SRui Paulo #define P2P_GROUP_CAPAB_INTRA_BSS_DIST BIT(3) 1604f05cddf9SRui Paulo #define P2P_GROUP_CAPAB_CROSS_CONN BIT(4) 1605f05cddf9SRui Paulo #define P2P_GROUP_CAPAB_PERSISTENT_RECONN BIT(5) 1606f05cddf9SRui Paulo #define P2P_GROUP_CAPAB_GROUP_FORMATION BIT(6) 16075b9c547cSRui Paulo #define P2P_GROUP_CAPAB_IP_ADDR_ALLOCATION BIT(7) 1608f05cddf9SRui Paulo 1609325151a3SRui Paulo /* P2PS Coordination Protocol Transport Bitmap */ 1610325151a3SRui Paulo #define P2PS_FEATURE_CAPAB_UDP_TRANSPORT BIT(0) 1611325151a3SRui Paulo #define P2PS_FEATURE_CAPAB_MAC_TRANSPORT BIT(1) 1612325151a3SRui Paulo 1613325151a3SRui Paulo struct p2ps_feature_capab { 1614325151a3SRui Paulo u8 cpt; 1615325151a3SRui Paulo u8 reserved; 1616325151a3SRui Paulo } STRUCT_PACKED; 1617325151a3SRui Paulo 1618f05cddf9SRui Paulo /* Invitation Flags */ 1619f05cddf9SRui Paulo #define P2P_INVITATION_FLAGS_TYPE BIT(0) 1620f05cddf9SRui Paulo 1621f05cddf9SRui Paulo /* P2P Manageability */ 1622f05cddf9SRui Paulo #define P2P_MAN_DEVICE_MANAGEMENT BIT(0) 1623f05cddf9SRui Paulo #define P2P_MAN_CROSS_CONNECTION_PERMITTED BIT(1) 1624f05cddf9SRui Paulo #define P2P_MAN_COEXISTENCE_OPTIONAL BIT(2) 1625f05cddf9SRui Paulo 1626f05cddf9SRui Paulo enum p2p_status_code { 1627f05cddf9SRui Paulo P2P_SC_SUCCESS = 0, 1628f05cddf9SRui Paulo P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE = 1, 1629f05cddf9SRui Paulo P2P_SC_FAIL_INCOMPATIBLE_PARAMS = 2, 1630f05cddf9SRui Paulo P2P_SC_FAIL_LIMIT_REACHED = 3, 1631f05cddf9SRui Paulo P2P_SC_FAIL_INVALID_PARAMS = 4, 1632f05cddf9SRui Paulo P2P_SC_FAIL_UNABLE_TO_ACCOMMODATE = 5, 1633f05cddf9SRui Paulo P2P_SC_FAIL_PREV_PROTOCOL_ERROR = 6, 1634f05cddf9SRui Paulo P2P_SC_FAIL_NO_COMMON_CHANNELS = 7, 1635f05cddf9SRui Paulo P2P_SC_FAIL_UNKNOWN_GROUP = 8, 1636f05cddf9SRui Paulo P2P_SC_FAIL_BOTH_GO_INTENT_15 = 9, 1637f05cddf9SRui Paulo P2P_SC_FAIL_INCOMPATIBLE_PROV_METHOD = 10, 1638f05cddf9SRui Paulo P2P_SC_FAIL_REJECTED_BY_USER = 11, 16395b9c547cSRui Paulo P2P_SC_SUCCESS_DEFERRED = 12, 16405b9c547cSRui Paulo }; 16415b9c547cSRui Paulo 16425b9c547cSRui Paulo enum p2p_role_indication { 16435b9c547cSRui Paulo P2P_DEVICE_NOT_IN_GROUP = 0x00, 16445b9c547cSRui Paulo P2P_CLIENT_IN_A_GROUP = 0x01, 16455b9c547cSRui Paulo P2P_GO_IN_A_GROUP = 0x02, 1646f05cddf9SRui Paulo }; 1647f05cddf9SRui Paulo 1648f05cddf9SRui Paulo #define P2P_WILDCARD_SSID "DIRECT-" 1649f05cddf9SRui Paulo #define P2P_WILDCARD_SSID_LEN 7 1650f05cddf9SRui Paulo 1651f05cddf9SRui Paulo /* P2P action frames */ 1652f05cddf9SRui Paulo enum p2p_act_frame_type { 1653f05cddf9SRui Paulo P2P_NOA = 0, 1654f05cddf9SRui Paulo P2P_PRESENCE_REQ = 1, 1655f05cddf9SRui Paulo P2P_PRESENCE_RESP = 2, 1656f05cddf9SRui Paulo P2P_GO_DISC_REQ = 3 1657f05cddf9SRui Paulo }; 1658f05cddf9SRui Paulo 1659f05cddf9SRui Paulo /* P2P public action frames */ 1660f05cddf9SRui Paulo enum p2p_action_frame_type { 1661f05cddf9SRui Paulo P2P_GO_NEG_REQ = 0, 1662f05cddf9SRui Paulo P2P_GO_NEG_RESP = 1, 1663f05cddf9SRui Paulo P2P_GO_NEG_CONF = 2, 1664f05cddf9SRui Paulo P2P_INVITATION_REQ = 3, 1665f05cddf9SRui Paulo P2P_INVITATION_RESP = 4, 1666f05cddf9SRui Paulo P2P_DEV_DISC_REQ = 5, 1667f05cddf9SRui Paulo P2P_DEV_DISC_RESP = 6, 1668f05cddf9SRui Paulo P2P_PROV_DISC_REQ = 7, 1669f05cddf9SRui Paulo P2P_PROV_DISC_RESP = 8 1670f05cddf9SRui Paulo }; 1671f05cddf9SRui Paulo 1672f05cddf9SRui Paulo enum p2p_service_protocol_type { 1673f05cddf9SRui Paulo P2P_SERV_ALL_SERVICES = 0, 1674f05cddf9SRui Paulo P2P_SERV_BONJOUR = 1, 1675f05cddf9SRui Paulo P2P_SERV_UPNP = 2, 1676f05cddf9SRui Paulo P2P_SERV_WS_DISCOVERY = 3, 1677f05cddf9SRui Paulo P2P_SERV_WIFI_DISPLAY = 4, 16785b9c547cSRui Paulo P2P_SERV_P2PS = 11, 1679f05cddf9SRui Paulo P2P_SERV_VENDOR_SPECIFIC = 255 1680f05cddf9SRui Paulo }; 1681f05cddf9SRui Paulo 1682f05cddf9SRui Paulo enum p2p_sd_status { 1683f05cddf9SRui Paulo P2P_SD_SUCCESS = 0, 1684f05cddf9SRui Paulo P2P_SD_PROTO_NOT_AVAILABLE = 1, 1685f05cddf9SRui Paulo P2P_SD_REQUESTED_INFO_NOT_AVAILABLE = 2, 1686f05cddf9SRui Paulo P2P_SD_BAD_REQUEST = 3 1687f05cddf9SRui Paulo }; 1688f05cddf9SRui Paulo 1689f05cddf9SRui Paulo 1690f05cddf9SRui Paulo enum wifi_display_subelem { 1691f05cddf9SRui Paulo WFD_SUBELEM_DEVICE_INFO = 0, 1692f05cddf9SRui Paulo WFD_SUBELEM_ASSOCIATED_BSSID = 1, 1693f05cddf9SRui Paulo WFD_SUBELEM_AUDIO_FORMATS = 2, 1694f05cddf9SRui Paulo WFD_SUBELEM_VIDEO_FORMATS = 3, 1695f05cddf9SRui Paulo WFD_SUBELEM_3D_VIDEO_FORMATS = 4, 1696f05cddf9SRui Paulo WFD_SUBELEM_CONTENT_PROTECTION = 5, 1697f05cddf9SRui Paulo WFD_SUBELEM_COUPLED_SINK = 6, 1698f05cddf9SRui Paulo WFD_SUBELEM_EXT_CAPAB = 7, 1699f05cddf9SRui Paulo WFD_SUBELEM_LOCAL_IP_ADDRESS = 8, 170085732ac8SCy Schubert WFD_SUBELEM_SESSION_INFO = 9, 170185732ac8SCy Schubert WFD_SUBELEM_MAC_INFO = 10, 170285732ac8SCy Schubert WFD_SUBELEM_R2_DEVICE_INFO = 11, 1703f05cddf9SRui Paulo }; 1704f05cddf9SRui Paulo 17055b9c547cSRui Paulo /* 802.11s */ 17065b9c547cSRui Paulo #define MESH_SYNC_METHOD_NEIGHBOR_OFFSET 1 17075b9c547cSRui Paulo #define MESH_SYNC_METHOD_VENDOR 255 17085b9c547cSRui Paulo #define MESH_PATH_PROTOCOL_HWMP 1 17095b9c547cSRui Paulo #define MESH_PATH_PROTOCOL_VENDOR 255 17105b9c547cSRui Paulo #define MESH_PATH_METRIC_AIRTIME 1 17115b9c547cSRui Paulo #define MESH_PATH_METRIC_VENDOR 255 1712780fb4a2SCy Schubert /* IEEE 802.11s - Mesh Capability */ 1713780fb4a2SCy Schubert #define MESH_CAP_ACCEPT_ADDITIONAL_PEER BIT(0) 1714780fb4a2SCy Schubert #define MESH_CAP_MCCA_SUPPORTED BIT(1) 1715780fb4a2SCy Schubert #define MESH_CAP_MCCA_ENABLED BIT(2) 1716780fb4a2SCy Schubert #define MESH_CAP_FORWARDING BIT(3) 1717780fb4a2SCy Schubert #define MESH_CAP_MBCA_ENABLED BIT(4) 1718780fb4a2SCy Schubert #define MESH_CAP_TBTT_ADJUSTING BIT(5) 1719780fb4a2SCy Schubert #define MESH_CAP_MESH_PS_LEVEL BIT(6) 17205b9c547cSRui Paulo 17215b9c547cSRui Paulo enum plink_action_field { 17225b9c547cSRui Paulo PLINK_OPEN = 1, 17235b9c547cSRui Paulo PLINK_CONFIRM, 17245b9c547cSRui Paulo PLINK_CLOSE 17255b9c547cSRui Paulo }; 1726f05cddf9SRui Paulo 172739beb93cSSam Leffler #define OUI_BROADCOM 0x00904c /* Broadcom (Epigram) */ 17285b9c547cSRui Paulo #define VENDOR_VHT_TYPE 0x04 17295b9c547cSRui Paulo #define VENDOR_VHT_SUBTYPE 0x08 17305b9c547cSRui Paulo #define VENDOR_VHT_SUBTYPE2 0x00 173139beb93cSSam Leffler 173239beb93cSSam Leffler #define VENDOR_HT_CAPAB_OUI_TYPE 0x33 /* 00-90-4c:0x33 */ 173339beb93cSSam Leffler 1734f05cddf9SRui Paulo 1735f05cddf9SRui Paulo /* IEEE 802.11v - WNM Action field values */ 1736f05cddf9SRui Paulo enum wnm_action { 1737f05cddf9SRui Paulo WNM_EVENT_REQ = 0, 1738f05cddf9SRui Paulo WNM_EVENT_REPORT = 1, 1739f05cddf9SRui Paulo WNM_DIAGNOSTIC_REQ = 2, 1740f05cddf9SRui Paulo WNM_DIAGNOSTIC_REPORT = 3, 1741f05cddf9SRui Paulo WNM_LOCATION_CFG_REQ = 4, 1742f05cddf9SRui Paulo WNM_LOCATION_CFG_RESP = 5, 1743f05cddf9SRui Paulo WNM_BSS_TRANS_MGMT_QUERY = 6, 1744f05cddf9SRui Paulo WNM_BSS_TRANS_MGMT_REQ = 7, 1745f05cddf9SRui Paulo WNM_BSS_TRANS_MGMT_RESP = 8, 1746f05cddf9SRui Paulo WNM_FMS_REQ = 9, 1747f05cddf9SRui Paulo WNM_FMS_RESP = 10, 1748f05cddf9SRui Paulo WNM_COLLOCATED_INTERFERENCE_REQ = 11, 1749f05cddf9SRui Paulo WNM_COLLOCATED_INTERFERENCE_REPORT = 12, 1750f05cddf9SRui Paulo WNM_TFS_REQ = 13, 1751f05cddf9SRui Paulo WNM_TFS_RESP = 14, 1752f05cddf9SRui Paulo WNM_TFS_NOTIFY = 15, 1753f05cddf9SRui Paulo WNM_SLEEP_MODE_REQ = 16, 1754f05cddf9SRui Paulo WNM_SLEEP_MODE_RESP = 17, 1755f05cddf9SRui Paulo WNM_TIM_BROADCAST_REQ = 18, 1756f05cddf9SRui Paulo WNM_TIM_BROADCAST_RESP = 19, 1757f05cddf9SRui Paulo WNM_QOS_TRAFFIC_CAPAB_UPDATE = 20, 1758f05cddf9SRui Paulo WNM_CHANNEL_USAGE_REQ = 21, 1759f05cddf9SRui Paulo WNM_CHANNEL_USAGE_RESP = 22, 1760f05cddf9SRui Paulo WNM_DMS_REQ = 23, 1761f05cddf9SRui Paulo WNM_DMS_RESP = 24, 1762f05cddf9SRui Paulo WNM_TIMING_MEASUREMENT_REQ = 25, 1763f05cddf9SRui Paulo WNM_NOTIFICATION_REQ = 26, 1764f05cddf9SRui Paulo WNM_NOTIFICATION_RESP = 27 1765f05cddf9SRui Paulo }; 1766f05cddf9SRui Paulo 1767f05cddf9SRui Paulo /* IEEE 802.11v - BSS Transition Management Request - Request Mode */ 1768f05cddf9SRui Paulo #define WNM_BSS_TM_REQ_PREF_CAND_LIST_INCLUDED BIT(0) 1769f05cddf9SRui Paulo #define WNM_BSS_TM_REQ_ABRIDGED BIT(1) 1770f05cddf9SRui Paulo #define WNM_BSS_TM_REQ_DISASSOC_IMMINENT BIT(2) 1771f05cddf9SRui Paulo #define WNM_BSS_TM_REQ_BSS_TERMINATION_INCLUDED BIT(3) 1772f05cddf9SRui Paulo #define WNM_BSS_TM_REQ_ESS_DISASSOC_IMMINENT BIT(4) 1773f05cddf9SRui Paulo 17745b9c547cSRui Paulo /* IEEE Std 802.11-2012 - Table 8-253 */ 17755b9c547cSRui Paulo enum bss_trans_mgmt_status_code { 17765b9c547cSRui Paulo WNM_BSS_TM_ACCEPT = 0, 17775b9c547cSRui Paulo WNM_BSS_TM_REJECT_UNSPECIFIED = 1, 17785b9c547cSRui Paulo WNM_BSS_TM_REJECT_INSUFFICIENT_BEACON = 2, 17795b9c547cSRui Paulo WNM_BSS_TM_REJECT_INSUFFICIENT_CAPABITY = 3, 17805b9c547cSRui Paulo WNM_BSS_TM_REJECT_UNDESIRED = 4, 17815b9c547cSRui Paulo WNM_BSS_TM_REJECT_DELAY_REQUEST = 5, 17825b9c547cSRui Paulo WNM_BSS_TM_REJECT_STA_CANDIDATE_LIST_PROVIDED = 6, 17835b9c547cSRui Paulo WNM_BSS_TM_REJECT_NO_SUITABLE_CANDIDATES = 7, 17845b9c547cSRui Paulo WNM_BSS_TM_REJECT_LEAVING_ESS = 8 17855b9c547cSRui Paulo }; 17865b9c547cSRui Paulo 1787780fb4a2SCy Schubert /* 1788780fb4a2SCy Schubert * IEEE P802.11-REVmc/D5.0 Table 9-150 - Optional subelement IDs for 1789780fb4a2SCy Schubert * neighbor report 1790780fb4a2SCy Schubert */ 17915b9c547cSRui Paulo #define WNM_NEIGHBOR_TSF 1 17925b9c547cSRui Paulo #define WNM_NEIGHBOR_CONDENSED_COUNTRY_STRING 2 17935b9c547cSRui Paulo #define WNM_NEIGHBOR_BSS_TRANSITION_CANDIDATE 3 17945b9c547cSRui Paulo #define WNM_NEIGHBOR_BSS_TERMINATION_DURATION 4 17955b9c547cSRui Paulo #define WNM_NEIGHBOR_BEARING 5 1796780fb4a2SCy Schubert #define WNM_NEIGHBOR_WIDE_BW_CHAN 6 1797780fb4a2SCy Schubert #define WNM_NEIGHBOR_MEASUREMENT_REPORT 39 1798780fb4a2SCy Schubert #define WNM_NEIGHBOR_HT_CAPAB 45 1799780fb4a2SCy Schubert #define WNM_NEIGHBOR_HT_OPER 61 1800780fb4a2SCy Schubert #define WNM_NEIGHBOR_SEC_CHAN_OFFSET 62 18015b9c547cSRui Paulo #define WNM_NEIGHBOR_MEASUREMENT_PILOT 66 18025b9c547cSRui Paulo #define WNM_NEIGHBOR_RRM_ENABLED_CAPABILITIES 70 18035b9c547cSRui Paulo #define WNM_NEIGHBOR_MULTIPLE_BSSID 71 1804780fb4a2SCy Schubert #define WNM_NEIGHBOR_VHT_CAPAB 191 1805780fb4a2SCy Schubert #define WNM_NEIGHBOR_VHT_OPER 192 18065b9c547cSRui Paulo 18075b9c547cSRui Paulo /* QoS action */ 18085b9c547cSRui Paulo enum qos_action { 18095b9c547cSRui Paulo QOS_ADDTS_REQ = 0, 18105b9c547cSRui Paulo QOS_ADDTS_RESP = 1, 18115b9c547cSRui Paulo QOS_DELTS = 2, 18125b9c547cSRui Paulo QOS_SCHEDULE = 3, 18135b9c547cSRui Paulo QOS_QOS_MAP_CONFIG = 4, 18145b9c547cSRui Paulo }; 18155b9c547cSRui Paulo 1816f05cddf9SRui Paulo /* IEEE Std 802.11-2012, 8.4.2.62 20/40 BSS Coexistence element */ 1817f05cddf9SRui Paulo #define WLAN_20_40_BSS_COEX_INFO_REQ BIT(0) 1818f05cddf9SRui Paulo #define WLAN_20_40_BSS_COEX_40MHZ_INTOL BIT(1) 1819f05cddf9SRui Paulo #define WLAN_20_40_BSS_COEX_20MHZ_WIDTH_REQ BIT(2) 1820f05cddf9SRui Paulo #define WLAN_20_40_BSS_COEX_OBSS_EXEMPT_REQ BIT(3) 1821f05cddf9SRui Paulo #define WLAN_20_40_BSS_COEX_OBSS_EXEMPT_GRNT BIT(4) 1822f05cddf9SRui Paulo 1823f05cddf9SRui Paulo struct ieee80211_2040_bss_coex_ie { 1824f05cddf9SRui Paulo u8 element_id; 1825f05cddf9SRui Paulo u8 length; 1826f05cddf9SRui Paulo u8 coex_param; 1827f05cddf9SRui Paulo } STRUCT_PACKED; 1828f05cddf9SRui Paulo 1829f05cddf9SRui Paulo struct ieee80211_2040_intol_chan_report { 1830f05cddf9SRui Paulo u8 element_id; 1831f05cddf9SRui Paulo u8 length; 1832f05cddf9SRui Paulo u8 op_class; 1833f05cddf9SRui Paulo u8 variable[0]; /* Channel List */ 1834f05cddf9SRui Paulo } STRUCT_PACKED; 1835f05cddf9SRui Paulo 1836f05cddf9SRui Paulo /* IEEE 802.11v - WNM-Sleep Mode element */ 1837f05cddf9SRui Paulo struct wnm_sleep_element { 1838f05cddf9SRui Paulo u8 eid; /* WLAN_EID_WNMSLEEP */ 1839f05cddf9SRui Paulo u8 len; 1840f05cddf9SRui Paulo u8 action_type; /* WNM_SLEEP_ENTER/WNM_SLEEP_MODE_EXIT */ 1841f05cddf9SRui Paulo u8 status; 1842f05cddf9SRui Paulo le16 intval; 1843f05cddf9SRui Paulo } STRUCT_PACKED; 1844f05cddf9SRui Paulo 1845f05cddf9SRui Paulo #define WNM_SLEEP_MODE_ENTER 0 1846f05cddf9SRui Paulo #define WNM_SLEEP_MODE_EXIT 1 1847f05cddf9SRui Paulo 1848f05cddf9SRui Paulo enum wnm_sleep_mode_response_status { 1849f05cddf9SRui Paulo WNM_STATUS_SLEEP_ACCEPT = 0, 1850f05cddf9SRui Paulo WNM_STATUS_SLEEP_EXIT_ACCEPT_GTK_UPDATE = 1, 1851f05cddf9SRui Paulo WNM_STATUS_DENIED_ACTION = 2, 1852f05cddf9SRui Paulo WNM_STATUS_DENIED_TMP = 3, 1853f05cddf9SRui Paulo WNM_STATUS_DENIED_KEY = 4, 1854f05cddf9SRui Paulo WNM_STATUS_DENIED_OTHER_WNM_SERVICE = 5 1855f05cddf9SRui Paulo }; 1856f05cddf9SRui Paulo 1857f05cddf9SRui Paulo /* WNM-Sleep Mode subelement IDs */ 1858f05cddf9SRui Paulo enum wnm_sleep_mode_subelement_id { 1859f05cddf9SRui Paulo WNM_SLEEP_SUBELEM_GTK = 0, 1860f05cddf9SRui Paulo WNM_SLEEP_SUBELEM_IGTK = 1 1861f05cddf9SRui Paulo }; 1862e28a4053SRui Paulo 18635b9c547cSRui Paulo /* Channel Switch modes (802.11h) */ 18645b9c547cSRui Paulo #define CHAN_SWITCH_MODE_ALLOW_TX 0 18655b9c547cSRui Paulo #define CHAN_SWITCH_MODE_BLOCK_TX 1 18665b9c547cSRui Paulo 18675b9c547cSRui Paulo struct tpc_report { 18685b9c547cSRui Paulo u8 eid; 18695b9c547cSRui Paulo u8 len; 18705b9c547cSRui Paulo u8 tx_power; 18715b9c547cSRui Paulo u8 link_margin; 18725b9c547cSRui Paulo } STRUCT_PACKED; 18735b9c547cSRui Paulo 1874780fb4a2SCy Schubert #define RRM_CAPABILITIES_IE_LEN 5 1875780fb4a2SCy Schubert 18765b9c547cSRui Paulo /* IEEE Std 802.11-2012, 8.5.7.4 - Link Measurement Request frame format */ 18775b9c547cSRui Paulo struct rrm_link_measurement_request { 18785b9c547cSRui Paulo u8 dialog_token; 18795b9c547cSRui Paulo s8 tx_power; 18805b9c547cSRui Paulo s8 max_tp; 18815b9c547cSRui Paulo u8 variable[0]; 18825b9c547cSRui Paulo } STRUCT_PACKED; 18835b9c547cSRui Paulo 18845b9c547cSRui Paulo /* IEEE Std 802.11-2012, 8.5.7.5 - Link Measurement Report frame format */ 18855b9c547cSRui Paulo struct rrm_link_measurement_report { 18865b9c547cSRui Paulo u8 dialog_token; 18875b9c547cSRui Paulo struct tpc_report tpc; 18885b9c547cSRui Paulo u8 rx_ant_id; 18895b9c547cSRui Paulo u8 tx_ant_id; 18905b9c547cSRui Paulo u8 rcpi; 18915b9c547cSRui Paulo u8 rsni; 18925b9c547cSRui Paulo u8 variable[0]; 18935b9c547cSRui Paulo } STRUCT_PACKED; 18945b9c547cSRui Paulo 189585732ac8SCy Schubert /* IEEE Std 802.11-2016, 9.4.2.21 - Measurement Request element */ 189685732ac8SCy Schubert struct rrm_measurement_request_element { 189785732ac8SCy Schubert u8 eid; /* Element ID */ 189885732ac8SCy Schubert u8 len; /* Length */ 189985732ac8SCy Schubert u8 token; /* Measurement Token */ 190085732ac8SCy Schubert u8 mode; /* Measurement Request Mode */ 190185732ac8SCy Schubert u8 type; /* Measurement Type */ 190285732ac8SCy Schubert u8 variable[0]; /* Measurement Request */ 190385732ac8SCy Schubert } STRUCT_PACKED; 190485732ac8SCy Schubert 190585732ac8SCy Schubert /* IEEE Std 802.11-2016, Figure 9-148 - Measurement Request Mode field */ 190685732ac8SCy Schubert #define MEASUREMENT_REQUEST_MODE_PARALLEL BIT(0) 190785732ac8SCy Schubert #define MEASUREMENT_REQUEST_MODE_ENABLE BIT(1) 190885732ac8SCy Schubert #define MEASUREMENT_REQUEST_MODE_REQUEST BIT(2) 190985732ac8SCy Schubert #define MEASUREMENT_REQUEST_MODE_REPORT BIT(3) 191085732ac8SCy Schubert #define MEASUREMENT_REQUEST_MODE_DURATION_MANDATORY BIT(4) 191185732ac8SCy Schubert 191285732ac8SCy Schubert /* IEEE Std 802.11-2016, 9.4.2.21.7 - Beacon request */ 191385732ac8SCy Schubert struct rrm_measurement_beacon_request { 191485732ac8SCy Schubert u8 oper_class; /* Operating Class */ 191585732ac8SCy Schubert u8 channel; /* Channel Number */ 191685732ac8SCy Schubert le16 rand_interval; /* Randomization Interval (in TUs) */ 191785732ac8SCy Schubert le16 duration; /* Measurement Duration (in TUs) */ 191885732ac8SCy Schubert u8 mode; /* Measurement Mode */ 191985732ac8SCy Schubert u8 bssid[ETH_ALEN]; /* BSSID */ 192085732ac8SCy Schubert u8 variable[0]; /* Optional Subelements */ 192185732ac8SCy Schubert } STRUCT_PACKED; 192285732ac8SCy Schubert 192385732ac8SCy Schubert /* 192485732ac8SCy Schubert * IEEE Std 802.11-2016, Table 9-87 - Measurement Mode definitions for Beacon 192585732ac8SCy Schubert * request 192685732ac8SCy Schubert */ 192785732ac8SCy Schubert enum beacon_report_mode { 192885732ac8SCy Schubert BEACON_REPORT_MODE_PASSIVE = 0, 192985732ac8SCy Schubert BEACON_REPORT_MODE_ACTIVE = 1, 193085732ac8SCy Schubert BEACON_REPORT_MODE_TABLE = 2, 193185732ac8SCy Schubert }; 193285732ac8SCy Schubert 193385732ac8SCy Schubert /* IEEE Std 802.11-2016, Table 9-88 - Beacon Request subelement IDs */ 19344bc52338SCy Schubert /* IEEE P802.11-REVmd/D2.0, Table 9-106 - Optional subelement IDs for 19354bc52338SCy Schubert * Beacon request */ 193685732ac8SCy Schubert #define WLAN_BEACON_REQUEST_SUBELEM_SSID 0 193785732ac8SCy Schubert #define WLAN_BEACON_REQUEST_SUBELEM_INFO 1 /* Beacon Reporting */ 193885732ac8SCy Schubert #define WLAN_BEACON_REQUEST_SUBELEM_DETAIL 2 /* Reporting Detail */ 193985732ac8SCy Schubert #define WLAN_BEACON_REQUEST_SUBELEM_REQUEST 10 194085732ac8SCy Schubert #define WLAN_BEACON_REQUEST_SUBELEM_AP_CHANNEL 51 /* AP Channel Report */ 19414bc52338SCy Schubert #define WLAN_BEACON_REQUEST_SUBELEM_LAST_INDICATION 164 194285732ac8SCy Schubert #define WLAN_BEACON_REQUEST_SUBELEM_VENDOR 221 194385732ac8SCy Schubert 194485732ac8SCy Schubert /* 194585732ac8SCy Schubert * IEEE Std 802.11-2016, Table 9-90 - Reporting Detail values 194685732ac8SCy Schubert */ 194785732ac8SCy Schubert enum beacon_report_detail { 194885732ac8SCy Schubert /* No fixed-length fields or elements */ 194985732ac8SCy Schubert BEACON_REPORT_DETAIL_NONE = 0, 195085732ac8SCy Schubert /* All fixed-length fields and any requested elements in the Request 195185732ac8SCy Schubert * element if present */ 195285732ac8SCy Schubert BEACON_REPORT_DETAIL_REQUESTED_ONLY = 1, 195385732ac8SCy Schubert /* All fixed-length fields and elements (default, used when Reporting 195485732ac8SCy Schubert * Detail subelement is not included in a Beacon request) */ 195585732ac8SCy Schubert BEACON_REPORT_DETAIL_ALL_FIELDS_AND_ELEMENTS = 2, 195685732ac8SCy Schubert }; 195785732ac8SCy Schubert 195885732ac8SCy Schubert /* IEEE Std 802.11-2016, 9.4.2.22 - Measurement Report element */ 195985732ac8SCy Schubert struct rrm_measurement_report_element { 196085732ac8SCy Schubert u8 eid; /* Element ID */ 196185732ac8SCy Schubert u8 len; /* Length */ 196285732ac8SCy Schubert u8 token; /* Measurement Token */ 196385732ac8SCy Schubert u8 mode; /* Measurement Report Mode */ 196485732ac8SCy Schubert u8 type; /* Measurement Type */ 196585732ac8SCy Schubert u8 variable[0]; /* Measurement Report */ 196685732ac8SCy Schubert } STRUCT_PACKED; 196785732ac8SCy Schubert 196885732ac8SCy Schubert /* IEEE Std 802.11-2016, Figure 9-192 - Measurement Report Mode field */ 196985732ac8SCy Schubert #define MEASUREMENT_REPORT_MODE_ACCEPT 0 197085732ac8SCy Schubert #define MEASUREMENT_REPORT_MODE_REJECT_LATE BIT(0) 197185732ac8SCy Schubert #define MEASUREMENT_REPORT_MODE_REJECT_INCAPABLE BIT(1) 197285732ac8SCy Schubert #define MEASUREMENT_REPORT_MODE_REJECT_REFUSED BIT(2) 197385732ac8SCy Schubert 197485732ac8SCy Schubert /* IEEE Std 802.11-2016, 9.4.2.22.7 - Beacon report */ 197585732ac8SCy Schubert struct rrm_measurement_beacon_report { 197685732ac8SCy Schubert u8 op_class; /* Operating Class */ 197785732ac8SCy Schubert u8 channel; /* Channel Number */ 197885732ac8SCy Schubert le64 start_time; /* Actual Measurement Start Time 197985732ac8SCy Schubert * (in TSF of the BSS requesting the measurement) */ 198085732ac8SCy Schubert le16 duration; /* in TUs */ 198185732ac8SCy Schubert u8 report_info; /* Reported Frame Information */ 198285732ac8SCy Schubert u8 rcpi; /* RCPI */ 198385732ac8SCy Schubert u8 rsni; /* RSNI */ 198485732ac8SCy Schubert u8 bssid[ETH_ALEN]; /* BSSID */ 198585732ac8SCy Schubert u8 antenna_id; /* Antenna ID */ 198685732ac8SCy Schubert le32 parent_tsf; /* Parent TSF */ 198785732ac8SCy Schubert u8 variable[0]; /* Optional Subelements */ 198885732ac8SCy Schubert } STRUCT_PACKED; 198985732ac8SCy Schubert 199085732ac8SCy Schubert /* IEEE Std 802.11-2016, Table 9-112 - Beacon report Subelement IDs */ 19914bc52338SCy Schubert /* IEEE P802.11-REVmd/D2.0, Table 9-130 - Optional subelement IDs for 19924bc52338SCy Schubert * Beacon report */ 199385732ac8SCy Schubert #define WLAN_BEACON_REPORT_SUBELEM_FRAME_BODY 1 19944bc52338SCy Schubert #define WLAN_BEACON_REPORT_SUBELEM_FRAME_BODY_FRAGMENT_ID 2 19954bc52338SCy Schubert #define WLAN_BEACON_REPORT_SUBELEM_LAST_INDICATION 164 199685732ac8SCy Schubert #define WLAN_BEACON_REPORT_SUBELEM_VENDOR 221 199785732ac8SCy Schubert 19984bc52338SCy Schubert /* IEEE P802.11-REVmd/D2.0, Table 9-232 - Data field format of the 19994bc52338SCy Schubert * Reported Frame Body Fragment ID subelement */ 20004bc52338SCy Schubert #define REPORTED_FRAME_BODY_SUBELEM_LEN 4 20014bc52338SCy Schubert #define REPORTED_FRAME_BODY_MORE_FRAGMENTS BIT(7) 20024bc52338SCy Schubert 20034bc52338SCy Schubert /* IEEE P802.11-REVmd/D2.0, 9.4.2.21.7 - Beacon report */ 20044bc52338SCy Schubert #define BEACON_REPORT_LAST_INDICATION_SUBELEM_LEN 3 20054bc52338SCy Schubert 2006325151a3SRui Paulo /* IEEE Std 802.11ad-2012 - Multi-band element */ 2007325151a3SRui Paulo struct multi_band_ie { 2008325151a3SRui Paulo u8 eid; /* WLAN_EID_MULTI_BAND */ 2009325151a3SRui Paulo u8 len; 2010325151a3SRui Paulo u8 mb_ctrl; 2011325151a3SRui Paulo u8 band_id; 2012325151a3SRui Paulo u8 op_class; 2013325151a3SRui Paulo u8 chan; 2014325151a3SRui Paulo u8 bssid[ETH_ALEN]; 2015325151a3SRui Paulo le16 beacon_int; 2016325151a3SRui Paulo u8 tsf_offs[8]; 2017325151a3SRui Paulo u8 mb_connection_capability; 2018325151a3SRui Paulo u8 fst_session_tmout; 2019325151a3SRui Paulo /* Optional: 2020325151a3SRui Paulo * STA MAC Address 2021325151a3SRui Paulo * Pairwise Cipher Suite Count 2022325151a3SRui Paulo * Pairwise Cipher Suite List 2023325151a3SRui Paulo */ 2024325151a3SRui Paulo u8 variable[0]; 2025325151a3SRui Paulo } STRUCT_PACKED; 2026325151a3SRui Paulo 2027325151a3SRui Paulo enum mb_ctrl_sta_role { 2028325151a3SRui Paulo MB_STA_ROLE_AP = 0, 2029325151a3SRui Paulo MB_STA_ROLE_TDLS_STA = 1, 2030325151a3SRui Paulo MB_STA_ROLE_IBSS_STA = 2, 2031325151a3SRui Paulo MB_STA_ROLE_PCP = 3, 2032325151a3SRui Paulo MB_STA_ROLE_NON_PCP_NON_AP = 4 2033325151a3SRui Paulo }; 2034325151a3SRui Paulo 2035325151a3SRui Paulo #define MB_CTRL_ROLE_MASK (BIT(0) | BIT(1) | BIT(2)) 2036325151a3SRui Paulo #define MB_CTRL_ROLE(ctrl) ((u8) ((ctrl) & MB_CTRL_ROLE_MASK)) 2037325151a3SRui Paulo #define MB_CTRL_STA_MAC_PRESENT ((u8) (BIT(3))) 2038325151a3SRui Paulo #define MB_CTRL_PAIRWISE_CIPHER_SUITE_PRESENT ((u8) (BIT(4))) 2039325151a3SRui Paulo 2040325151a3SRui Paulo enum mb_band_id { 2041325151a3SRui Paulo MB_BAND_ID_WIFI_2_4GHZ = 2, /* 2.4 GHz */ 2042325151a3SRui Paulo MB_BAND_ID_WIFI_5GHZ = 4, /* 4.9 and 5 GHz */ 2043325151a3SRui Paulo MB_BAND_ID_WIFI_60GHZ = 5, /* 60 GHz */ 2044325151a3SRui Paulo }; 2045325151a3SRui Paulo 2046325151a3SRui Paulo #define MB_CONNECTION_CAPABILITY_AP ((u8) (BIT(0))) 2047325151a3SRui Paulo #define MB_CONNECTION_CAPABILITY_PCP ((u8) (BIT(1))) 2048325151a3SRui Paulo #define MB_CONNECTION_CAPABILITY_DLS ((u8) (BIT(2))) 2049325151a3SRui Paulo #define MB_CONNECTION_CAPABILITY_TDLS ((u8) (BIT(3))) 2050325151a3SRui Paulo #define MB_CONNECTION_CAPABILITY_IBSS ((u8) (BIT(4))) 2051325151a3SRui Paulo 2052325151a3SRui Paulo /* IEEE Std 802.11ad-2014 - FST Action field */ 2053325151a3SRui Paulo enum fst_action { 2054325151a3SRui Paulo FST_ACTION_SETUP_REQUEST = 0, 2055325151a3SRui Paulo FST_ACTION_SETUP_RESPONSE = 1, 2056325151a3SRui Paulo FST_ACTION_TEAR_DOWN = 2, 2057325151a3SRui Paulo FST_ACTION_ACK_REQUEST = 3, 2058325151a3SRui Paulo FST_ACTION_ACK_RESPONSE = 4, 2059325151a3SRui Paulo FST_ACTION_ON_CHANNEL_TUNNEL = 5, 2060325151a3SRui Paulo }; 2061325151a3SRui Paulo 2062780fb4a2SCy Schubert /* IEEE Std 802.11ac-2013, Annex C - dot11PHYType */ 2063780fb4a2SCy Schubert enum phy_type { 2064780fb4a2SCy Schubert PHY_TYPE_UNSPECIFIED = 0, 2065780fb4a2SCy Schubert PHY_TYPE_FHSS = 1, 2066780fb4a2SCy Schubert PHY_TYPE_DSSS = 2, 2067780fb4a2SCy Schubert PHY_TYPE_IRBASEBAND = 3, 2068780fb4a2SCy Schubert PHY_TYPE_OFDM = 4, 2069780fb4a2SCy Schubert PHY_TYPE_HRDSSS = 5, 2070780fb4a2SCy Schubert PHY_TYPE_ERP = 6, 2071780fb4a2SCy Schubert PHY_TYPE_HT = 7, 2072780fb4a2SCy Schubert PHY_TYPE_DMG = 8, 2073780fb4a2SCy Schubert PHY_TYPE_VHT = 9, 2074780fb4a2SCy Schubert }; 2075780fb4a2SCy Schubert 2076780fb4a2SCy Schubert /* IEEE P802.11-REVmc/D5.0, 9.4.2.37 - Neighbor Report element */ 2077780fb4a2SCy Schubert /* BSSID Information Field */ 2078780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_AP_NOT_REACH BIT(0) 2079780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_AP_UNKNOWN_REACH BIT(1) 2080780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_AP_REACHABLE (BIT(0) | BIT(1)) 2081780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_SECURITY BIT(2) 2082780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_KEY_SCOPE BIT(3) 2083780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_SPECTRUM_MGMT BIT(4) 2084780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_QOS BIT(5) 2085780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_APSD BIT(6) 2086780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_RM BIT(7) 2087780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_DELAYED_BA BIT(8) 2088780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_IMM_BA BIT(9) 2089780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_MOBILITY_DOMAIN BIT(10) 2090780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_HT BIT(11) 2091780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_VHT BIT(12) 2092780fb4a2SCy Schubert #define NEI_REP_BSSID_INFO_FTM BIT(13) 2093780fb4a2SCy Schubert 2094780fb4a2SCy Schubert /* 2095780fb4a2SCy Schubert * IEEE P802.11-REVmc/D5.0 Table 9-152 - HT/VHT Operation Information 2096780fb4a2SCy Schubert * subfields. 2097*206b73d0SCy Schubert * Note: These definitions are not the same as other CHANWIDTH_*. 2098780fb4a2SCy Schubert */ 2099780fb4a2SCy Schubert enum nr_chan_width { 2100780fb4a2SCy Schubert NR_CHAN_WIDTH_20 = 0, 2101780fb4a2SCy Schubert NR_CHAN_WIDTH_40 = 1, 2102780fb4a2SCy Schubert NR_CHAN_WIDTH_80 = 2, 2103780fb4a2SCy Schubert NR_CHAN_WIDTH_160 = 3, 2104780fb4a2SCy Schubert NR_CHAN_WIDTH_80P80 = 4, 2105780fb4a2SCy Schubert }; 2106780fb4a2SCy Schubert 210785732ac8SCy Schubert struct ieee80211_he_capabilities { 21084bc52338SCy Schubert u8 he_mac_capab_info[6]; 21094bc52338SCy Schubert u8 he_phy_capab_info[11]; 2110*206b73d0SCy Schubert /* Followed by 4, 8, or 12 octets of Supported HE-MCS And NSS Set field 2111*206b73d0SCy Schubert * and optional variable length PPE Thresholds field. */ 2112*206b73d0SCy Schubert u8 optional[]; 211385732ac8SCy Schubert } STRUCT_PACKED; 211485732ac8SCy Schubert 211585732ac8SCy Schubert struct ieee80211_he_operation { 2116*206b73d0SCy Schubert le32 he_oper_params; /* HE Operation Parameters[3] and 21174bc52338SCy Schubert * BSS Color Information[1] */ 2118*206b73d0SCy Schubert le16 he_mcs_nss_set; 211985732ac8SCy Schubert u8 vht_op_info_chwidth; 212085732ac8SCy Schubert u8 vht_op_info_chan_center_freq_seg0_idx; 212185732ac8SCy Schubert u8 vht_op_info_chan_center_freq_seg1_idx; 212285732ac8SCy Schubert /* Followed by conditional MaxBSSID Indicator subfield (u8) */ 212385732ac8SCy Schubert } STRUCT_PACKED; 212485732ac8SCy Schubert 2125*206b73d0SCy Schubert /* 2126*206b73d0SCy Schubert * IEEE P802.11ax/D4.0, 9.4.2.246 Spatial Reuse Parameter Set element 2127*206b73d0SCy Schubert */ 2128*206b73d0SCy Schubert struct ieee80211_spatial_reuse { 2129*206b73d0SCy Schubert u8 sr_ctrl; /* SR Control */ 2130*206b73d0SCy Schubert /* Up to 19 octets of parameters: 2131*206b73d0SCy Schubert * Non-SRG OBSS PD Max Offset[0 or 1] 2132*206b73d0SCy Schubert * SRG OBSS PD Min Offset[0 or 1] 2133*206b73d0SCy Schubert * SRG OBSS PD Max Offset[0 or 1] 2134*206b73d0SCy Schubert * SRG BSS Color Bitmap[0 or 8] 2135*206b73d0SCy Schubert * SRG Partial BSSID Bitmap[0 or 8] 2136*206b73d0SCy Schubert */ 2137*206b73d0SCy Schubert u8 params[19]; 2138*206b73d0SCy Schubert } STRUCT_PACKED; 2139*206b73d0SCy Schubert 214085732ac8SCy Schubert /* HE Capabilities Information defines */ 2141*206b73d0SCy Schubert 2142*206b73d0SCy Schubert #define HE_PHYCAP_CHANNEL_WIDTH_SET_IDX 0 2143*206b73d0SCy Schubert #define HE_PHYCAP_CHANNEL_WIDTH_MASK ((u8) (BIT(1) | BIT(2) | \ 2144*206b73d0SCy Schubert BIT(3) | BIT(4))) 2145*206b73d0SCy Schubert #define HE_PHYCAP_CHANNEL_WIDTH_SET_40MHZ_IN_2G ((u8) BIT(1)) 2146*206b73d0SCy Schubert #define HE_PHYCAP_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G ((u8) BIT(2)) 2147*206b73d0SCy Schubert #define HE_PHYCAP_CHANNEL_WIDTH_SET_160MHZ_IN_5G ((u8) BIT(3)) 2148*206b73d0SCy Schubert #define HE_PHYCAP_CHANNEL_WIDTH_SET_80PLUS80MHZ_IN_5G ((u8) BIT(4)) 2149*206b73d0SCy Schubert 215085732ac8SCy Schubert #define HE_PHYCAP_SU_BEAMFORMER_CAPAB_IDX 3 215185732ac8SCy Schubert #define HE_PHYCAP_SU_BEAMFORMER_CAPAB ((u8) BIT(7)) 215285732ac8SCy Schubert #define HE_PHYCAP_SU_BEAMFORMEE_CAPAB_IDX 4 215385732ac8SCy Schubert #define HE_PHYCAP_SU_BEAMFORMEE_CAPAB ((u8) BIT(0)) 215485732ac8SCy Schubert #define HE_PHYCAP_MU_BEAMFORMER_CAPAB_IDX 4 215585732ac8SCy Schubert #define HE_PHYCAP_MU_BEAMFORMER_CAPAB ((u8) BIT(1)) 215685732ac8SCy Schubert 2157*206b73d0SCy Schubert #define HE_PHYCAP_PPE_THRESHOLD_PRESENT_IDX 6 2158*206b73d0SCy Schubert #define HE_PHYCAP_PPE_THRESHOLD_PRESENT ((u8) BIT(7)) 2159*206b73d0SCy Schubert 2160*206b73d0SCy Schubert /* HE PPE Threshold define */ 2161*206b73d0SCy Schubert #define HE_PPE_THRES_RU_INDEX_BITMASK_MASK 0xf 2162*206b73d0SCy Schubert #define HE_PPE_THRES_RU_INDEX_BITMASK_SHIFT 3 2163*206b73d0SCy Schubert #define HE_PPE_THRES_NSS_MASK 0x7 2164*206b73d0SCy Schubert 216585732ac8SCy Schubert /* HE Operation defines */ 21664bc52338SCy Schubert /* HE Operation Parameters and BSS Color Information fields */ 2167*206b73d0SCy Schubert #define HE_OPERATION_DFLT_PE_DURATION_MASK ((u32) (BIT(0) | BIT(1) | \ 2168*206b73d0SCy Schubert BIT(2))) 2169*206b73d0SCy Schubert #define HE_OPERATION_DFLT_PE_DURATION_OFFSET 0 2170*206b73d0SCy Schubert #define HE_OPERATION_TWT_REQUIRED ((u32) BIT(3)) 2171*206b73d0SCy Schubert #define HE_OPERATION_RTS_THRESHOLD_MASK ((u32) (BIT(4) | BIT(5) | \ 2172*206b73d0SCy Schubert BIT(6) | BIT(7) | \ 2173*206b73d0SCy Schubert BIT(8) | BIT(9) | \ 2174*206b73d0SCy Schubert BIT(10) | BIT(11) | \ 2175*206b73d0SCy Schubert BIT(12) | BIT(13))) 2176*206b73d0SCy Schubert #define HE_OPERATION_RTS_THRESHOLD_OFFSET 4 2177*206b73d0SCy Schubert #define HE_OPERATION_BSS_COLOR_MASK ((u32) (BIT(24) | BIT(25) | \ 2178*206b73d0SCy Schubert BIT(26) | BIT(27) | \ 2179*206b73d0SCy Schubert BIT(28) | BIT(29))) 2180*206b73d0SCy Schubert #define HE_OPERATION_PARTIAL_BSS_COLOR ((u32) BIT(30)) 2181*206b73d0SCy Schubert #define HE_OPERATION_BSS_COLOR_DISABLED ((u32) BIT(31)) 2182*206b73d0SCy Schubert #define HE_OPERATION_BSS_COLOR_OFFSET 24 2183*206b73d0SCy Schubert 2184*206b73d0SCy Schubert /* Spatial Reuse defines */ 2185*206b73d0SCy Schubert #define SPATIAL_REUSE_SRP_DISALLOWED BIT(0) 2186*206b73d0SCy Schubert #define SPATIAL_REUSE_NON_SRG_OBSS_PD_SR_DISALLOWED BIT(1) 2187*206b73d0SCy Schubert #define SPATIAL_REUSE_NON_SRG_OFFSET_PRESENT BIT(2) 2188*206b73d0SCy Schubert #define SPATIAL_REUSE_SRG_INFORMATION_PRESENT BIT(3) 2189*206b73d0SCy Schubert #define SPATIAL_REUSE_HESIGA_SR_VAL15_ALLOWED BIT(4) 21904bc52338SCy Schubert 21914bc52338SCy Schubert struct ieee80211_he_mu_edca_parameter_set { 21924bc52338SCy Schubert u8 he_qos_info; 21934bc52338SCy Schubert u8 he_mu_ac_be_param[3]; 21944bc52338SCy Schubert u8 he_mu_ac_bk_param[3]; 21954bc52338SCy Schubert u8 he_mu_ac_vi_param[3]; 21964bc52338SCy Schubert u8 he_mu_ac_vo_param[3]; 21974bc52338SCy Schubert } STRUCT_PACKED; 21984bc52338SCy Schubert 21994bc52338SCy Schubert /* HE MU AC parameter record field format */ 22004bc52338SCy Schubert /* ACI/AIFSN */ 22014bc52338SCy Schubert #define HE_MU_AC_PARAM_ACI_IDX 0 22024bc52338SCy Schubert #define HE_MU_AC_PARAM_AIFSN ((u8) (BIT(0) | BIT(1) | BIT(2) | BIT(3))) 22034bc52338SCy Schubert #define HE_MU_AC_PARAM_ACM ((u8) BIT(4)) 22044bc52338SCy Schubert #define HE_MU_AC_PARAM_ACI ((u8) (BIT(5) | BIT(6))) 22054bc52338SCy Schubert /* B7: Reserved */ 22064bc52338SCy Schubert 22074bc52338SCy Schubert /* ECWmin/ECWmax */ 22084bc52338SCy Schubert #define HE_MU_AC_PARAM_ECW_IDX 1 22094bc52338SCy Schubert #define HE_MU_AC_PARAM_ECWMIN ((u8) (BIT(0) | BIT(1) | BIT(2) | BIT(3))) 22104bc52338SCy Schubert #define HE_MU_AC_PARAM_ECWMAX ((u8) (BIT(4) | BIT(5) | BIT(6) | BIT(7))) 22114bc52338SCy Schubert 22124bc52338SCy Schubert /* MU EDCA Timer */ 22134bc52338SCy Schubert #define HE_MU_AC_PARAM_TIMER_IDX 2 22144bc52338SCy Schubert 22154bc52338SCy Schubert /* HE QoS Info field */ 22164bc52338SCy Schubert #define HE_QOS_INFO_EDCA_PARAM_SET_COUNT ((u8) (BIT(0) | BIT(1) | \ 22174bc52338SCy Schubert BIT(2) | BIT(3))) 22184bc52338SCy Schubert #define HE_QOS_INFO_Q_ACK ((u8) (BIT(4))) 22194bc52338SCy Schubert #define HE_QOS_INFO_QUEUE_REQUEST ((u8) (BIT(5))) 22204bc52338SCy Schubert #define HE_QOS_INFO_TXOP_REQUEST ((u8) (BIT(6))) 22214bc52338SCy Schubert /* B7: Reserved if sent by an AP; More Data Ack if sent by a non-AP STA */ 22224bc52338SCy Schubert #define HE_QOS_INFO_MORE_DATA_ACK ((u8) (BIT(7))) 222385732ac8SCy Schubert 222485732ac8SCy Schubert /* DPP Public Action frame identifiers - OUI_WFA */ 222585732ac8SCy Schubert #define DPP_OUI_TYPE 0x1A 222685732ac8SCy Schubert 222739beb93cSSam Leffler #endif /* IEEE802_11_DEFS_H */ 2228