iwinfo: sync with upstream nl80211.h
authorKoral Ilgun <koral.ilgun@smartrg.com>
Sat, 9 Mar 2024 03:30:14 +0000 (19:30 -0800)
committerDaniel Golle <daniel@makrotopia.org>
Tue, 17 Sep 2024 10:12:51 +0000 (11:12 +0100)
Required for IEEE 802.11be support

Taken from the v6.6.15 mac80211 package

Signed-off-by: Koral Ilgun <koral.ilgun@smartrg.com>
Signed-off-by: Chad Monroe <chad@monroe.io>
api/nl80211.h

index c2efea98e060b38929e8e930aba05b505e3eaebb..6e96ad9d7a9825e16b9b35c9394a3ab59a44ad0f 100644 (file)
@@ -11,7 +11,7 @@
  * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
  * Copyright 2008 Colin McCabe <colin@cozybit.com>
  * Copyright 2015-2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2021 Intel Corporation
+ * Copyright (C) 2018-2023 Intel Corporation
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * the interface goes down.
  */
 
+/**
+ * DOC: FILS shared key crypto offload
+ *
+ * This feature is applicable to drivers running in AP mode.
+ *
+ * FILS shared key crypto offload can be advertised by drivers by setting
+ * @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD flag. The drivers that support
+ * FILS shared key crypto offload should be able to encrypt and decrypt
+ * association frames for FILS shared key authentication as per IEEE 802.11ai.
+ * With this capability, for FILS key derivation, drivers depend on userspace.
+ *
+ * After FILS key derivation, userspace shares the FILS AAD details with the
+ * driver and the driver stores the same to use in decryption of association
+ * request and in encryption of association response. The below parameters
+ * should be given to the driver in %NL80211_CMD_SET_FILS_AAD.
+ *     %NL80211_ATTR_MAC - STA MAC address, used for storing FILS AAD per STA
+ *     %NL80211_ATTR_FILS_KEK - Used for encryption or decryption
+ *     %NL80211_ATTR_FILS_NONCES - Used for encryption or decryption
+ *                     (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
+ *
+ * Once the association is done, the driver cleans the FILS AAD data.
+ */
+
+/**
+ * DOC: Multi-Link Operation
+ *
+ * In Multi-Link Operation, a connection between to MLDs utilizes multiple
+ * links. To use this in nl80211, various commands and responses now need
+ * to or will include the new %NL80211_ATTR_MLO_LINKS attribute.
+ * Additionally, various commands that need to operate on a specific link
+ * now need to be given the %NL80211_ATTR_MLO_LINK_ID attribute, e.g. to
+ * use %NL80211_CMD_START_AP or similar functions.
+ */
+
 /**
  * enum nl80211_commands - supported nl80211 commands
  *
  * @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
  *     %NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
  *     userspace to request deletion of a virtual interface, then requires
- *     attribute %NL80211_ATTR_IFINDEX.
+ *     attribute %NL80211_ATTR_IFINDEX. If multiple BSSID advertisements are
+ *     enabled using %NL80211_ATTR_MBSSID_CONFIG, %NL80211_ATTR_MBSSID_ELEMS,
+ *     and if this command is used for the transmitting interface, then all
+ *     the non-transmitting interfaces are deleted as well.
  *
  * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
- *     by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
+ *     by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC. %NL80211_ATTR_MAC
+ *     represents peer's MLD address for MLO pairwise key. For MLO group key,
+ *     the link is identified by %NL80211_ATTR_MLO_LINK_ID.
  * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT,
  *     %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD.
+ *     For MLO connection, the link to set default key is identified by
+ *     %NL80211_ATTR_MLO_LINK_ID.
  * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA,
  *     %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC, %NL80211_ATTR_KEY_CIPHER,
- *     and %NL80211_ATTR_KEY_SEQ attributes.
+ *     and %NL80211_ATTR_KEY_SEQ attributes. %NL80211_ATTR_MAC represents
+ *     peer's MLD address for MLO pairwise key. The link to add MLO
+ *     group key is identified by %NL80211_ATTR_MLO_LINK_ID.
  * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX
- *     or %NL80211_ATTR_MAC.
+ *     or %NL80211_ATTR_MAC. %NL80211_ATTR_MAC represents peer's MLD address
+ *     for MLO pairwise key. The link to delete group key is identified by
+ *     %NL80211_ATTR_MLO_LINK_ID.
  *
  * @NL80211_CMD_GET_BEACON: (not used)
  * @NL80211_CMD_SET_BEACON: change the beacon on an access point interface
  *     interface identified by %NL80211_ATTR_IFINDEX.
  * @NL80211_CMD_DEL_STATION: Remove a station identified by %NL80211_ATTR_MAC
  *     or, if no MAC address given, all stations, on the interface identified
- *     by %NL80211_ATTR_IFINDEX. %NL80211_ATTR_MGMT_SUBTYPE and
+ *     by %NL80211_ATTR_IFINDEX. For MLD station, MLD address is used in
+ *     %NL80211_ATTR_MAC. %NL80211_ATTR_MGMT_SUBTYPE and
  *     %NL80211_ATTR_REASON_CODE can optionally be used to specify which type
  *     of disconnection indication should be sent to the station
  *     (Deauthentication or Disassociation frame and reason code for that
  *     %NL80211_ATTR_CSA_C_OFFSETS_TX is an array of offsets to CSA
  *     counters which will be updated to the current value. This attribute
  *     is used during CSA period.
+ *     For TX on an MLD, the frequency can be omitted and the link ID be
+ *     specified, or if transmitting to a known peer MLD (with MLD addresses
+ *     in the frame) both can be omitted and the link will be selected by
+ *     lower layers.
+ *     For RX notification, %NL80211_ATTR_RX_HW_TIMESTAMP may be included to
+ *     indicate the frame RX timestamp and %NL80211_ATTR_TX_HW_TIMESTAMP may
+ *     be included to indicate the ack TX timestamp.
  * @NL80211_CMD_FRAME_WAIT_CANCEL: When an off-channel TX was requested, this
  *     command may be used with the corresponding cookie to cancel the wait
  *     time if it is known that it is no longer necessary.  This command is
  *     transmitted with %NL80211_CMD_FRAME. %NL80211_ATTR_COOKIE identifies
  *     the TX command and %NL80211_ATTR_FRAME includes the contents of the
  *     frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged
- *     the frame.
+ *     the frame. %NL80211_ATTR_TX_HW_TIMESTAMP may be included to indicate the
+ *     tx timestamp and %NL80211_ATTR_RX_HW_TIMESTAMP may be included to
+ *     indicate the ack RX timestamp.
  * @NL80211_CMD_ACTION_TX_STATUS: Alias for @NL80211_CMD_FRAME_TX_STATUS for
  *     backward compatibility.
  *
  *     has been received. %NL80211_ATTR_FRAME is used to specify the
  *     frame contents.  The frame is the raw EAPoL data, without ethernet or
  *     802.11 headers.
+ *     For an MLD transmitter, the %NL80211_ATTR_MLO_LINK_ID may be given and
+ *     its effect will depend on the destination: If the destination is known
+ *     to be an MLD, this will be used as a hint to select the link to transmit
+ *     the frame on. If the destination is not an MLD, this will select both
+ *     the link to transmit on and the source address will be set to the link
+ *     address of that link.
  *     When used as an event indication %NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
  *     %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT and %NL80211_ATTR_MAC are added
  *     indicating the protocol type of the received frame; whether the frame
  *     %NL80211_ATTR_STATUS_CODE attribute in %NL80211_CMD_EXTERNAL_AUTH
  *     command interface.
  *
+ *     Host driver sends MLD address of the AP with %NL80211_ATTR_MLD_ADDR in
+ *     %NL80211_CMD_EXTERNAL_AUTH event to indicate user space to enable MLO
+ *     during the authentication offload in STA mode while connecting to MLD
+ *     APs. Host driver should check %NL80211_ATTR_MLO_SUPPORT flag capability
+ *     in %NL80211_CMD_CONNECT to know whether the user space supports enabling
+ *     MLO during the authentication offload or not.
+ *     User space should enable MLO during the authentication only when it
+ *     receives the AP MLD address in authentication offload request. User
+ *     space shouldn't enable MLO when the authentication offload request
+ *     doesn't indicate the AP MLD address even if the AP is MLO capable.
+ *     User space should use %NL80211_ATTR_MLD_ADDR as peer's MLD address and
+ *     interface address identified by %NL80211_ATTR_IFINDEX as self MLD
+ *     address. User space and host driver to use MLD addresses in RA, TA and
+ *     BSSID fields of the frames between them, and host driver translates the
+ *     MLD addresses to/from link addresses based on the link chosen for the
+ *     authentication.
+ *
  *     Host driver reports this status on an authentication failure to the
  *     user space through the connect result as the user space would have
  *     initiated the connection through the connect request.
  * @NL80211_CMD_COLOR_CHANGE_COMPLETED: Notify userland that the color change
  *     has completed
  *
+ * @NL80211_CMD_SET_FILS_AAD: Set FILS AAD data to the driver using -
+ *     &NL80211_ATTR_MAC - for STA MAC address
+ *     &NL80211_ATTR_FILS_KEK - for KEK
+ *     &NL80211_ATTR_FILS_NONCES - for FILS Nonces
+ *             (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
+ *
+ * @NL80211_CMD_ASSOC_COMEBACK: notification about an association
+ *      temporal rejection with comeback. The event includes %NL80211_ATTR_MAC
+ *      to describe the BSSID address of the AP and %NL80211_ATTR_TIMEOUT to
+ *      specify the timeout value.
+ *
+ * @NL80211_CMD_ADD_LINK: Add a new link to an interface. The
+ *     %NL80211_ATTR_MLO_LINK_ID attribute is used for the new link.
+ * @NL80211_CMD_REMOVE_LINK: Remove a link from an interface. This may come
+ *     without %NL80211_ATTR_MLO_LINK_ID as an easy way to remove all links
+ *     in preparation for e.g. roaming to a regular (non-MLO) AP.
+ *
+ * @NL80211_CMD_ADD_LINK_STA: Add a link to an MLD station
+ * @NL80211_CMD_MODIFY_LINK_STA: Modify a link of an MLD station
+ * @NL80211_CMD_REMOVE_LINK_STA: Remove a link of an MLD station
+ *
+ * @NL80211_CMD_SET_HW_TIMESTAMP: Enable/disable HW timestamping of Timing
+ *     measurement and Fine timing measurement frames. If %NL80211_ATTR_MAC
+ *     is included, enable/disable HW timestamping only for frames to/from the
+ *     specified MAC address. Otherwise enable/disable HW timestamping for
+ *     all TM/FTM frames (including ones that were enabled with specific MAC
+ *     address). If %NL80211_ATTR_HW_TIMESTAMP_ENABLED is not included, disable
+ *     HW timestamping.
+ *     The number of peers that HW timestamping can be enabled for concurrently
+ *     is indicated by %NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS.
+ *
+ * @NL80211_CMD_LINKS_REMOVED: Notify userspace about the removal of STA MLD
+ *     setup links due to AP MLD removing the corresponding affiliated APs with
+ *     Multi-Link reconfiguration. %NL80211_ATTR_MLO_LINKS is used to provide
+ *     information about the removed STA MLD setup links.
+ *
  * @NL80211_CMD_MAX: highest used command number
  * @__NL80211_CMD_AFTER_LAST: internal use
  */
@@ -1440,6 +1554,21 @@ enum nl80211_commands {
        NL80211_CMD_COLOR_CHANGE_ABORTED,
        NL80211_CMD_COLOR_CHANGE_COMPLETED,
 
+       NL80211_CMD_SET_FILS_AAD,
+
+       NL80211_CMD_ASSOC_COMEBACK,
+
+       NL80211_CMD_ADD_LINK,
+       NL80211_CMD_REMOVE_LINK,
+
+       NL80211_CMD_ADD_LINK_STA,
+       NL80211_CMD_MODIFY_LINK_STA,
+       NL80211_CMD_REMOVE_LINK_STA,
+
+       NL80211_CMD_SET_HW_TIMESTAMP,
+
+       NL80211_CMD_LINKS_REMOVED,
+
        /* add new commands above here */
 
        /* used to define NL80211_CMD_MAX below */
@@ -2299,8 +2428,10 @@ enum nl80211_commands {
  *
  * @NL80211_ATTR_IFTYPE_EXT_CAPA: Nested attribute of the following attributes:
  *     %NL80211_ATTR_IFTYPE, %NL80211_ATTR_EXT_CAPA,
- *     %NL80211_ATTR_EXT_CAPA_MASK, to specify the extended capabilities per
- *     interface type.
+ *     %NL80211_ATTR_EXT_CAPA_MASK, to specify the extended capabilities and
+ *     other interface-type specific capabilities per interface type. For MLO,
+ *     %NL80211_ATTR_EML_CAPABILITY and %NL80211_ATTR_MLD_CAPA_AND_OPS are
+ *     present.
  *
  * @NL80211_ATTR_MU_MIMO_GROUP_DATA: array of 24 bytes that defines a MU-MIMO
  *     groupID for monitor mode.
@@ -2436,7 +2567,9 @@ enum nl80211_commands {
  *     space supports external authentication. This attribute shall be used
  *     with %NL80211_CMD_CONNECT and %NL80211_CMD_START_AP request. The driver
  *     may offload authentication processing to user space if this capability
- *     is indicated in the respective requests from the user space.
+ *     is indicated in the respective requests from the user space. (This flag
+ *     attribute deprecated for %NL80211_CMD_START_AP, use
+ *     %NL80211_ATTR_AP_SETTINGS_FLAGS)
  *
  * @NL80211_ATTR_NSS: Station's New/updated  RX_NSS value notified using this
  *     u8 attribute. This is used with %NL80211_CMD_STA_OPMODE_CHANGED.
@@ -2593,6 +2726,95 @@ enum nl80211_commands {
  * @NL80211_ATTR_COLOR_CHANGE_ELEMS: Nested set of attributes containing the IE
  *     information for the time while performing a color switch.
  *
+ * @NL80211_ATTR_MBSSID_CONFIG: Nested attribute for multiple BSSID
+ *     advertisements (MBSSID) parameters in AP mode.
+ *     Kernel uses this attribute to indicate the driver's support for MBSSID
+ *     and enhanced multi-BSSID advertisements (EMA AP) to the userspace.
+ *     Userspace should use this attribute to configure per interface MBSSID
+ *     parameters.
+ *     See &enum nl80211_mbssid_config_attributes for details.
+ *
+ * @NL80211_ATTR_MBSSID_ELEMS: Nested parameter to pass multiple BSSID elements.
+ *     Mandatory parameter for the transmitting interface to enable MBSSID.
+ *     Optional for the non-transmitting interfaces.
+ *
+ * @NL80211_ATTR_RADAR_BACKGROUND: Configure dedicated offchannel chain
+ *     available for radar/CAC detection on some hw. This chain can't be used
+ *     to transmit or receive frames and it is bounded to a running wdev.
+ *     Background radar/CAC detection allows to avoid the CAC downtime
+ *     switching on a different channel during CAC detection on the selected
+ *     radar channel.
+ *
+ * @NL80211_ATTR_AP_SETTINGS_FLAGS: u32 attribute contains ap settings flags,
+ *     enumerated in &enum nl80211_ap_settings_flags. This attribute shall be
+ *     used with %NL80211_CMD_START_AP request.
+ *
+ * @NL80211_ATTR_EHT_CAPABILITY: EHT Capability information element (from
+ *     association request when used with NL80211_CMD_NEW_STATION). Can be set
+ *     only if %NL80211_STA_FLAG_WME is set.
+ *
+ * @NL80211_ATTR_MLO_LINK_ID: A (u8) link ID for use with MLO, to be used with
+ *     various commands that need a link ID to operate.
+ * @NL80211_ATTR_MLO_LINKS: A nested array of links, each containing some
+ *     per-link information and a link ID.
+ * @NL80211_ATTR_MLD_ADDR: An MLD address, used with various commands such as
+ *     authenticate/associate.
+ *
+ * @NL80211_ATTR_MLO_SUPPORT: Flag attribute to indicate user space supports MLO
+ *     connection. Used with %NL80211_CMD_CONNECT. If this attribute is not
+ *     included in NL80211_CMD_CONNECT drivers must not perform MLO connection.
+ *
+ * @NL80211_ATTR_MAX_NUM_AKM_SUITES: U16 attribute. Indicates maximum number of
+ *     AKM suites allowed for %NL80211_CMD_CONNECT, %NL80211_CMD_ASSOCIATE and
+ *     %NL80211_CMD_START_AP in %NL80211_CMD_GET_WIPHY response. If this
+ *     attribute is not present userspace shall consider maximum number of AKM
+ *     suites allowed as %NL80211_MAX_NR_AKM_SUITES which is the legacy maximum
+ *     number prior to the introduction of this attribute.
+ *
+ * @NL80211_ATTR_EML_CAPABILITY: EML Capability information (u16)
+ * @NL80211_ATTR_MLD_CAPA_AND_OPS: MLD Capabilities and Operations (u16)
+ *
+ * @NL80211_ATTR_TX_HW_TIMESTAMP: Hardware timestamp for TX operation in
+ *     nanoseconds (u64). This is the device clock timestamp so it will
+ *     probably reset when the device is stopped or the firmware is reset.
+ *     When used with %NL80211_CMD_FRAME_TX_STATUS, indicates the frame TX
+ *     timestamp. When used with %NL80211_CMD_FRAME RX notification, indicates
+ *     the ack TX timestamp.
+ * @NL80211_ATTR_RX_HW_TIMESTAMP: Hardware timestamp for RX operation in
+ *     nanoseconds (u64). This is the device clock timestamp so it will
+ *     probably reset when the device is stopped or the firmware is reset.
+ *     When used with %NL80211_CMD_FRAME_TX_STATUS, indicates the ack RX
+ *     timestamp. When used with %NL80211_CMD_FRAME RX notification, indicates
+ *     the incoming frame RX timestamp.
+ * @NL80211_ATTR_TD_BITMAP: Transition Disable bitmap, for subsequent
+ *     (re)associations.
+ *
+ * @NL80211_ATTR_PUNCT_BITMAP: (u32) Preamble puncturing bitmap, lowest
+ *     bit corresponds to the lowest 20 MHz channel. Each bit set to 1
+ *     indicates that the sub-channel is punctured. Higher 16 bits are
+ *     reserved.
+ *
+ * @NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS: Maximum number of peers that HW
+ *     timestamping can be enabled for concurrently (u16), a wiphy attribute.
+ *     A value of 0xffff indicates setting for all peers (i.e. not specifying
+ *     an address with %NL80211_CMD_SET_HW_TIMESTAMP) is supported.
+ * @NL80211_ATTR_HW_TIMESTAMP_ENABLED: Indicates whether HW timestamping should
+ *     be enabled or not (flag attribute).
+ *
+ * @NL80211_ATTR_EMA_RNR_ELEMS: Optional nested attribute for
+ *     reduced neighbor report (RNR) elements. This attribute can be used
+ *     only when NL80211_MBSSID_CONFIG_ATTR_EMA is enabled.
+ *     Userspace is responsible for splitting the RNR into multiple
+ *     elements such that each element excludes the non-transmitting
+ *     profiles already included in the MBSSID element
+ *     (%NL80211_ATTR_MBSSID_ELEMS) at the same index. Each EMA beacon
+ *     will be generated by adding MBSSID and RNR elements at the same
+ *     index. If the userspace includes more RNR elements than number of
+ *     MBSSID elements then these will be added in every EMA beacon.
+ *
+ * @NL80211_ATTR_MLO_LINK_DISABLED: Flag attribute indicating that the link is
+ *     disabled.
+ *
  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
  * @NL80211_ATTR_MAX: highest attribute number currently defined
  * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3096,6 +3318,41 @@ enum nl80211_attrs {
        NL80211_ATTR_COLOR_CHANGE_COLOR,
        NL80211_ATTR_COLOR_CHANGE_ELEMS,
 
+       NL80211_ATTR_MBSSID_CONFIG,
+       NL80211_ATTR_MBSSID_ELEMS,
+
+       NL80211_ATTR_RADAR_BACKGROUND,
+
+       NL80211_ATTR_AP_SETTINGS_FLAGS,
+
+       NL80211_ATTR_EHT_CAPABILITY,
+
+       NL80211_ATTR_DISABLE_EHT,
+
+       NL80211_ATTR_MLO_LINKS,
+       NL80211_ATTR_MLO_LINK_ID,
+       NL80211_ATTR_MLD_ADDR,
+
+       NL80211_ATTR_MLO_SUPPORT,
+
+       NL80211_ATTR_MAX_NUM_AKM_SUITES,
+
+       NL80211_ATTR_EML_CAPABILITY,
+       NL80211_ATTR_MLD_CAPA_AND_OPS,
+
+       NL80211_ATTR_TX_HW_TIMESTAMP,
+       NL80211_ATTR_RX_HW_TIMESTAMP,
+       NL80211_ATTR_TD_BITMAP,
+
+       NL80211_ATTR_PUNCT_BITMAP,
+
+       NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS,
+       NL80211_ATTR_HW_TIMESTAMP_ENABLED,
+
+       NL80211_ATTR_EMA_RNR_ELEMS,
+
+       NL80211_ATTR_MLO_LINK_DISABLED,
+
        /* add attributes here, update the policy in nl80211.c */
 
        __NL80211_ATTR_AFTER_LAST,
@@ -3150,7 +3407,14 @@ enum nl80211_attrs {
 #define NL80211_HE_MIN_CAPABILITY_LEN           16
 #define NL80211_HE_MAX_CAPABILITY_LEN           54
 #define NL80211_MAX_NR_CIPHER_SUITES           5
+
+/*
+ * NL80211_MAX_NR_AKM_SUITES is obsolete when %NL80211_ATTR_MAX_NUM_AKM_SUITES
+ * present in %NL80211_CMD_GET_WIPHY response.
+ */
 #define NL80211_MAX_NR_AKM_SUITES              2
+#define NL80211_EHT_MIN_CAPABILITY_LEN          13
+#define NL80211_EHT_MAX_CAPABILITY_LEN          51
 
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME     10
 
@@ -3178,7 +3442,7 @@ enum nl80211_attrs {
  *     and therefore can't be created in the normal ways, use the
  *     %NL80211_CMD_START_P2P_DEVICE and %NL80211_CMD_STOP_P2P_DEVICE
  *     commands to create and destroy one
- * @NL80211_IF_TYPE_OCB: Outside Context of a BSS
+ * @NL80211_IFTYPE_OCB: Outside Context of a BSS
  *     This mode corresponds to the MIB variable dot11OCBActivated=true
  * @NL80211_IFTYPE_NAN: NAN device interface type (not a netdev)
  * @NL80211_IFTYPE_MAX: highest interface type number currently defined
@@ -3319,6 +3583,56 @@ enum nl80211_he_ru_alloc {
        NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
 };
 
+/**
+ * enum nl80211_eht_gi - EHT guard interval
+ * @NL80211_RATE_INFO_EHT_GI_0_8: 0.8 usec
+ * @NL80211_RATE_INFO_EHT_GI_1_6: 1.6 usec
+ * @NL80211_RATE_INFO_EHT_GI_3_2: 3.2 usec
+ */
+enum nl80211_eht_gi {
+       NL80211_RATE_INFO_EHT_GI_0_8,
+       NL80211_RATE_INFO_EHT_GI_1_6,
+       NL80211_RATE_INFO_EHT_GI_3_2,
+};
+
+/**
+ * enum nl80211_eht_ru_alloc - EHT RU allocation values
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_26: 26-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_52: 52-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_52P26: 52+26-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_106: 106-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_106P26: 106+26 tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_242: 242-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_484: 484-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_484P242: 484+242 tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_996: 996-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_996P484: 996+484 tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242: 996+484+242 tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_2x996: 2x996-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484: 2x996+484 tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_3x996: 3x996-tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484: 3x996+484 tone RU allocation
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC_4x996: 4x996-tone RU allocation
+ */
+enum nl80211_eht_ru_alloc {
+       NL80211_RATE_INFO_EHT_RU_ALLOC_26,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_52,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_106,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_242,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_484,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_996,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
+       NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
+};
+
 /**
  * enum nl80211_rate_info - bitrate information
  *
@@ -3358,6 +3672,20 @@ enum nl80211_he_ru_alloc {
  * @NL80211_RATE_INFO_HE_DCM: HE DCM value (u8, 0/1)
  * @NL80211_RATE_INFO_RU_ALLOC: HE RU allocation, if not present then
  *     non-OFDMA was used (u8, see &enum nl80211_he_ru_alloc)
+ * @NL80211_RATE_INFO_320_MHZ_WIDTH: 320 MHz bitrate
+ * @NL80211_RATE_INFO_EHT_MCS: EHT MCS index (u8, 0-15)
+ * @NL80211_RATE_INFO_EHT_NSS: EHT NSS value (u8, 1-8)
+ * @NL80211_RATE_INFO_EHT_GI: EHT guard interval identifier
+ *     (u8, see &enum nl80211_eht_gi)
+ * @NL80211_RATE_INFO_EHT_RU_ALLOC: EHT RU allocation, if not present then
+ *     non-OFDMA was used (u8, see &enum nl80211_eht_ru_alloc)
+ * @NL80211_RATE_INFO_S1G_MCS: S1G MCS index (u8, 0-10)
+ * @NL80211_RATE_INFO_S1G_NSS: S1G NSS value (u8, 1-4)
+ * @NL80211_RATE_INFO_1_MHZ_WIDTH: 1 MHz S1G rate
+ * @NL80211_RATE_INFO_2_MHZ_WIDTH: 2 MHz S1G rate
+ * @NL80211_RATE_INFO_4_MHZ_WIDTH: 4 MHz S1G rate
+ * @NL80211_RATE_INFO_8_MHZ_WIDTH: 8 MHz S1G rate
+ * @NL80211_RATE_INFO_16_MHZ_WIDTH: 16 MHz S1G rate
  * @__NL80211_RATE_INFO_AFTER_LAST: internal use
  */
 enum nl80211_rate_info {
@@ -3379,6 +3707,18 @@ enum nl80211_rate_info {
        NL80211_RATE_INFO_HE_GI,
        NL80211_RATE_INFO_HE_DCM,
        NL80211_RATE_INFO_HE_RU_ALLOC,
+       NL80211_RATE_INFO_320_MHZ_WIDTH,
+       NL80211_RATE_INFO_EHT_MCS,
+       NL80211_RATE_INFO_EHT_NSS,
+       NL80211_RATE_INFO_EHT_GI,
+       NL80211_RATE_INFO_EHT_RU_ALLOC,
+       NL80211_RATE_INFO_S1G_MCS,
+       NL80211_RATE_INFO_S1G_NSS,
+       NL80211_RATE_INFO_1_MHZ_WIDTH,
+       NL80211_RATE_INFO_2_MHZ_WIDTH,
+       NL80211_RATE_INFO_4_MHZ_WIDTH,
+       NL80211_RATE_INFO_8_MHZ_WIDTH,
+       NL80211_RATE_INFO_16_MHZ_WIDTH,
 
        /* keep last */
        __NL80211_RATE_INFO_AFTER_LAST,
@@ -3689,13 +4029,20 @@ enum nl80211_mpath_info {
  *     capabilities IE
  * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE: HE PPE thresholds information as
  *     defined in HE capabilities IE
- * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently
- *     defined
  * @NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA: HE 6GHz band capabilities (__le16),
  *     given for all 6 GHz band channels
  * @NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS: vendor element capabilities that are
  *     advertised on this band/for this iftype (binary)
+ * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC: EHT MAC capabilities as in EHT
+ *     capabilities element
+ * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY: EHT PHY capabilities as in EHT
+ *     capabilities element
+ * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET: EHT supported NSS/MCS as in EHT
+ *     capabilities element
+ * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE: EHT PPE thresholds information as
+ *     defined in EHT capabilities element
  * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
+ * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band attribute currently defined
  */
 enum nl80211_band_iftype_attr {
        __NL80211_BAND_IFTYPE_ATTR_INVALID,
@@ -3707,6 +4054,10 @@ enum nl80211_band_iftype_attr {
        NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
        NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
        NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+       NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
+       NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
+       NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
+       NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
 
        /* keep last */
        __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
@@ -3736,6 +4087,10 @@ enum nl80211_band_iftype_attr {
  * @NL80211_BAND_ATTR_EDMG_BW_CONFIG: Channel BW Configuration subfield encodes
  *     the allowed channel bandwidth configurations.
  *     Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
+ * @NL80211_BAND_ATTR_S1G_MCS_NSS_SET: S1G capabilities, supported S1G-MCS and NSS
+ *     set subfield, as in the S1G information IE, 5 bytes
+ * @NL80211_BAND_ATTR_S1G_CAPA: S1G capabilities information subfield as in the
+ *     S1G information IE, 10 bytes
  * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
  * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
  */
@@ -3756,6 +4111,9 @@ enum nl80211_band_attr {
        NL80211_BAND_ATTR_EDMG_CHANNELS,
        NL80211_BAND_ATTR_EDMG_BW_CONFIG,
 
+       NL80211_BAND_ATTR_S1G_MCS_NSS_SET,
+       NL80211_BAND_ATTR_S1G_CAPA,
+
        /* keep last */
        __NL80211_BAND_ATTR_AFTER_LAST,
        NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
@@ -3851,6 +4209,10 @@ enum nl80211_wmm_rule {
  *     on this channel in current regulatory domain.
  * @NL80211_FREQUENCY_ATTR_16MHZ: 16 MHz operation is allowed
  *     on this channel in current regulatory domain.
+ * @NL80211_FREQUENCY_ATTR_NO_320MHZ: any 320 MHz channel using this channel
+ *     as the primary or any of the secondary channels isn't possible
+ * @NL80211_FREQUENCY_ATTR_NO_EHT: EHT operation is not allowed on this channel
+ *     in current regulatory domain.
  * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
  *     currently defined
  * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
@@ -3887,6 +4249,8 @@ enum nl80211_frequency_attr {
        NL80211_FREQUENCY_ATTR_4MHZ,
        NL80211_FREQUENCY_ATTR_8MHZ,
        NL80211_FREQUENCY_ATTR_16MHZ,
+       NL80211_FREQUENCY_ATTR_NO_320MHZ,
+       NL80211_FREQUENCY_ATTR_NO_EHT,
 
        /* keep last */
        __NL80211_FREQUENCY_ATTR_AFTER_LAST,
@@ -4085,6 +4449,8 @@ enum nl80211_sched_scan_match_attr {
  * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
  * @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
  * @NL80211_RRF_NO_HE: HE operation not allowed
+ * @NL80211_RRF_NO_320MHZ: 320MHz operation not allowed
+ * @NL80211_RRF_NO_EHT: EHT operation not allowed
  */
 enum nl80211_reg_rule_flags {
        NL80211_RRF_NO_OFDM             = 1<<0,
@@ -4103,6 +4469,8 @@ enum nl80211_reg_rule_flags {
        NL80211_RRF_NO_80MHZ            = 1<<15,
        NL80211_RRF_NO_160MHZ           = 1<<16,
        NL80211_RRF_NO_HE               = 1<<17,
+       NL80211_RRF_NO_320MHZ           = 1<<18,
+       NL80211_RRF_NO_EHT              = 1<<19,
 };
 
 #define NL80211_RRF_PASSIVE_SCAN       NL80211_RRF_NO_IR
@@ -4600,6 +4968,8 @@ enum nl80211_key_mode {
  * @NL80211_CHAN_WIDTH_4: 4 MHz OFDM channel
  * @NL80211_CHAN_WIDTH_8: 8 MHz OFDM channel
  * @NL80211_CHAN_WIDTH_16: 16 MHz OFDM channel
+ * @NL80211_CHAN_WIDTH_320: 320 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
+ *     attribute must be provided as well
  */
 enum nl80211_chan_width {
        NL80211_CHAN_WIDTH_20_NOHT,
@@ -4615,6 +4985,7 @@ enum nl80211_chan_width {
        NL80211_CHAN_WIDTH_4,
        NL80211_CHAN_WIDTH_8,
        NL80211_CHAN_WIDTH_16,
+       NL80211_CHAN_WIDTH_320,
 };
 
 /**
@@ -4686,6 +5057,8 @@ enum nl80211_bss_scan_width {
  *     Contains a nested array of signal strength attributes (u8, dBm),
  *     using the nesting index as the antenna number.
  * @NL80211_BSS_FREQUENCY_OFFSET: frequency offset in KHz
+ * @NL80211_BSS_MLO_LINK_ID: MLO link ID of the BSS (u8).
+ * @NL80211_BSS_MLD_ADDR: MLD address of this BSS if connected to it.
  * @__NL80211_BSS_AFTER_LAST: internal
  * @NL80211_BSS_MAX: highest BSS attribute
  */
@@ -4711,6 +5084,8 @@ enum nl80211_bss {
        NL80211_BSS_PARENT_BSSID,
        NL80211_BSS_CHAIN_SIGNAL,
        NL80211_BSS_FREQUENCY_OFFSET,
+       NL80211_BSS_MLO_LINK_ID,
+       NL80211_BSS_MLD_ADDR,
 
        /* keep last */
        __NL80211_BSS_AFTER_LAST,
@@ -4929,6 +5304,7 @@ enum nl80211_txrate_gi {
  * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
  * @NL80211_BAND_6GHZ: around 6 GHz band (5.9 - 7.2 GHz)
  * @NL80211_BAND_S1GHZ: around 900MHz, supported by S1G PHYs
+ * @NL80211_BAND_LC: light communication band (placeholder)
  * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
  *     since newer kernel versions may support more bands
  */
@@ -4938,6 +5314,7 @@ enum nl80211_band {
        NL80211_BAND_60GHZ,
        NL80211_BAND_6GHZ,
        NL80211_BAND_S1GHZ,
+       NL80211_BAND_LC,
 
        NUM_NL80211_BANDS,
 };
@@ -5504,7 +5881,7 @@ enum nl80211_iface_limit_attrs {
  *     => allows 8 of AP/GO that can have BI gcd >= min gcd
  *
  *     numbers = [ #{STA} <= 2 ], channels = 2, max = 2
- *     => allows two STAs on different channels
+ *     => allows two STAs on the same or on different channels
  *
  *     numbers = [ #{STA} <= 1, #{P2P-client,P2P-GO} <= 3 ], max = 4
  *     => allows a STA plus three P2P interfaces
@@ -5549,7 +5926,7 @@ enum nl80211_if_combination_attrs {
  * @NL80211_PLINK_ESTAB: mesh peer link is established
  * @NL80211_PLINK_HOLDING: mesh peer link is being closed or cancelled
  * @NL80211_PLINK_BLOCKED: all frames transmitted from this mesh
- *     plink are discarded
+ *     plink are discarded, except for authentication frames
  * @NUM_NL80211_PLINK_STATES: number of peer link states
  * @MAX_NL80211_PLINK_STATES: highest numerical value of plink states
  */
@@ -5588,6 +5965,7 @@ enum plink_actions {
 #define NL80211_KEK_LEN                        16
 #define NL80211_KCK_EXT_LEN            24
 #define NL80211_KEK_EXT_LEN            32
+#define NL80211_KCK_EXT_LEN_32         32
 #define NL80211_REPLAY_CTR_LEN         8
 
 /**
@@ -5686,13 +6064,15 @@ enum nl80211_tdls_operation {
        NL80211_TDLS_DISABLE_LINK,
 };
 
-/*
+/**
  * enum nl80211_ap_sme_features - device-integrated AP features
- * Reserved for future use, no bits are defined in
- * NL80211_ATTR_DEVICE_AP_SME yet.
+ * @NL80211_AP_SME_SA_QUERY_OFFLOAD: SA Query procedures offloaded to driver
+ *     when user space indicates support for SA Query procedures offload during
+ *     "start ap" with %NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT.
+ */
 enum nl80211_ap_sme_features {
+       NL80211_AP_SME_SA_QUERY_OFFLOAD         = 1 << 0,
 };
- */
 
 /**
  * enum nl80211_feature_flags - device/driver features
@@ -5703,7 +6083,7 @@ enum nl80211_ap_sme_features {
  * @NL80211_FEATURE_INACTIVITY_TIMER: This driver takes care of freeing up
  *     the connected inactive stations in AP mode.
  * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested
- *     to work properly to suppport receiving regulatory hints from
+ *     to work properly to support receiving regulatory hints from
  *     cellular base stations.
  * @NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL: (no longer available, only
  *     here to reserve the value for API/ABI compatibility)
@@ -5995,6 +6375,31 @@ enum nl80211_feature_flags {
  * @NL80211_EXT_FEATURE_BSS_COLOR: The driver supports BSS color collision
  *     detection and change announcemnts.
  *
+ * @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD: Driver running in AP mode supports
+ *     FILS encryption and decryption for (Re)Association Request and Response
+ *     frames. Userspace has to share FILS AAD details to the driver by using
+ *     @NL80211_CMD_SET_FILS_AAD.
+ *
+ * @NL80211_EXT_FEATURE_RADAR_BACKGROUND: Device supports background radar/CAC
+ *     detection.
+ *
+ * @NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE: Device can perform a MAC address
+ *     change without having to bring the underlying network device down
+ *     first. For example, in station mode this can be used to vary the
+ *     origin MAC address prior to a connection to a new AP for privacy
+ *     or other reasons. Note that certain driver specific restrictions
+ *     might apply, e.g. no scans in progress, no offchannel operations
+ *     in progress, and no active connections.
+ *
+ * @NL80211_EXT_FEATURE_PUNCT: Driver supports preamble puncturing in AP mode.
+ *
+ * @NL80211_EXT_FEATURE_SECURE_NAN: Device supports NAN Pairing which enables
+ *     authentication, data encryption and message integrity.
+ *
+ * @NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA: Device supports randomized TA
+ *     in authentication and deauthentication frames sent to unassociated peer
+ *     using @NL80211_CMD_FRAME.
+ *
  * @NUM_NL80211_EXT_FEATURES: number of extended features.
  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
  */
@@ -6060,6 +6465,12 @@ enum nl80211_ext_feature_index {
        NL80211_EXT_FEATURE_SECURE_RTT,
        NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE,
        NL80211_EXT_FEATURE_BSS_COLOR,
+       NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
+       NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+       NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
+       NL80211_EXT_FEATURE_PUNCT,
+       NL80211_EXT_FEATURE_SECURE_NAN,
+       NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA,
 
        /* add new features before the definition below */
        NUM_NL80211_EXT_FEATURES,
@@ -6174,8 +6585,16 @@ enum nl80211_timeout_reason {
  * @NL80211_SCAN_FLAG_FREQ_KHZ: report scan results with
  *     %NL80211_ATTR_SCAN_FREQ_KHZ. This also means
  *     %NL80211_ATTR_SCAN_FREQUENCIES will not be included.
- * @NL80211_SCAN_FLAG_COLOCATED_6GHZ: scan for colocated APs reported by
- *     2.4/5 GHz APs
+ * @NL80211_SCAN_FLAG_COLOCATED_6GHZ: scan for collocated APs reported by
+ *     2.4/5 GHz APs. When the flag is set, the scan logic will use the
+ *     information from the RNR element found in beacons/probe responses
+ *     received on the 2.4/5 GHz channels to actively scan only the 6GHz
+ *     channels on which APs are expected to be found. Note that when not set,
+ *     the scan logic would scan all 6GHz channels, but since transmission of
+ *     probe requests on non PSC channels is limited, it is highly likely that
+ *     these channels would passively be scanned. Also note that when the flag
+ *     is set, in addition to the colocated APs, PSC channels would also be
+ *     scanned if the user space has asked for it.
  */
 enum nl80211_scan_flags {
        NL80211_SCAN_FLAG_LOW_PRIORITY                          = 1<<0,
@@ -6252,6 +6671,14 @@ enum nl80211_smps_mode {
  *     applicable for ETSI dfs domain where pre-CAC is valid for ever.
  * @NL80211_RADAR_CAC_STARTED: Channel Availability Check has been started,
  *     should be generated by HW if NL80211_EXT_FEATURE_DFS_OFFLOAD is enabled.
+ * @NL80211_RADAR_BACKGROUND_CHAN_UPDATE: background channel is updated by the
+ *     driver.
+ * @NL80211_RADAR_BACKGROUND_CHAN_EXPAND: background channel is updated by the
+ *     driver and required to expand main operating channel.
+ * @NL80211_RADAR_STA_CAC_SKIPPED: STA set the DFS state to available
+ *     when receiving CSA/assoc resp
+ * @NL80211_RADAR_STA_CAC_EXPIRED: STA set the DFS state to usable
+ *     when STA is disconnected or leaving the channel
  */
 enum nl80211_radar_event {
        NL80211_RADAR_DETECTED,
@@ -6260,6 +6687,10 @@ enum nl80211_radar_event {
        NL80211_RADAR_NOP_FINISHED,
        NL80211_RADAR_PRE_CAC_EXPIRED,
        NL80211_RADAR_CAC_STARTED,
+       NL80211_RADAR_BACKGROUND_CHAN_UPDATE,
+       NL80211_RADAR_BACKGROUND_CHAN_EXPAND,
+       NL80211_RADAR_STA_CAC_SKIPPED,
+       NL80211_RADAR_STA_CAC_EXPIRED,
 };
 
 /**
@@ -7200,6 +7631,7 @@ enum nl80211_fils_discovery_attributes {
        NL80211_FILS_DISCOVERY_ATTR_INT_MIN,
        NL80211_FILS_DISCOVERY_ATTR_INT_MAX,
        NL80211_FILS_DISCOVERY_ATTR_TMPL,
+       NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INTE,
 
        /* keep last */
        __NL80211_FILS_DISCOVERY_ATTR_LAST,
@@ -7349,4 +7781,76 @@ enum nl80211_sar_specs_attrs {
        NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
 };
 
+/**
+ * enum nl80211_mbssid_config_attributes - multiple BSSID (MBSSID) and enhanced
+ * multi-BSSID advertisements (EMA) in AP mode.
+ * Kernel uses some of these attributes to advertise driver's support for
+ * MBSSID and EMA.
+ * Remaining attributes should be used by the userspace to configure the
+ * features.
+ *
+ * @__NL80211_MBSSID_CONFIG_ATTR_INVALID: Invalid
+ *
+ * @NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES: Used by the kernel to advertise
+ *     the maximum number of MBSSID interfaces supported by the driver.
+ *     Driver should indicate MBSSID support by setting
+ *     wiphy->mbssid_max_interfaces to a value more than or equal to 2.
+ *
+ * @NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY: Used by the kernel
+ *     to advertise the maximum profile periodicity supported by the driver
+ *     if EMA is enabled. Driver should indicate EMA support to the userspace
+ *     by setting wiphy->ema_max_profile_periodicity to
+ *     a non-zero value.
+ *
+ * @NL80211_MBSSID_CONFIG_ATTR_INDEX: Mandatory parameter to pass the index of
+ *     this BSS (u8) in the multiple BSSID set.
+ *     Value must be set to 0 for the transmitting interface and non-zero for
+ *     all non-transmitting interfaces. The userspace will be responsible
+ *     for using unique indices for the interfaces.
+ *     Range: 0 to wiphy->mbssid_max_interfaces-1.
+ *
+ * @NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX: Mandatory parameter for
+ *     a non-transmitted profile which provides the interface index (u32) of
+ *     the transmitted profile. The value must match one of the interface
+ *     indices advertised by the kernel. Optional if the interface being set up
+ *     is the transmitting one, however, if provided then the value must match
+ *     the interface index of the same.
+ *
+ * @NL80211_MBSSID_CONFIG_ATTR_EMA: Flag used to enable EMA AP feature.
+ *     Setting this flag is permitted only if the driver advertises EMA support
+ *     by setting wiphy->ema_max_profile_periodicity to non-zero.
+ *
+ * @__NL80211_MBSSID_CONFIG_ATTR_LAST: Internal
+ * @NL80211_MBSSID_CONFIG_ATTR_MAX: highest attribute
+ */
+enum nl80211_mbssid_config_attributes {
+       __NL80211_MBSSID_CONFIG_ATTR_INVALID,
+
+       NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES,
+       NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY,
+       NL80211_MBSSID_CONFIG_ATTR_INDEX,
+       NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX,
+       NL80211_MBSSID_CONFIG_ATTR_EMA,
+
+       /* keep last */
+       __NL80211_MBSSID_CONFIG_ATTR_LAST,
+       NL80211_MBSSID_CONFIG_ATTR_MAX = __NL80211_MBSSID_CONFIG_ATTR_LAST - 1,
+};
+
+/**
+ * enum nl80211_ap_settings_flags - AP settings flags
+ *
+ * @NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT: AP supports external
+ *     authentication.
+ * @NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT: Userspace supports SA Query
+ *     procedures offload to driver. If driver advertises
+ *     %NL80211_AP_SME_SA_QUERY_OFFLOAD in AP SME features, userspace shall
+ *     ignore SA Query procedures and validations when this flag is set by
+ *     userspace.
+ */
+enum nl80211_ap_settings_flags {
+       NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT       = 1 << 0,
+       NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT    = 1 << 1,
+};
+
 #endif /* __LINUX_NL80211_H */