]> git.ipfire.org Git - thirdparty/iw.git/blobdiff - nl80211.h
bump version to 6.9
[thirdparty/iw.git] / nl80211.h
index d9490e3062a70a52206e5ac0a9becfa35bee66f2..f23ecbdd84a284b65944aa5ef82e1d18b4f0c199 100644 (file)
--- a/nl80211.h
+++ b/nl80211.h
@@ -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-2022 Intel Corporation
+ * Copyright (C) 2018-2024 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
@@ -72,7 +72,7 @@
  * For drivers supporting TDLS with external setup (WIPHY_FLAG_SUPPORTS_TDLS
  * and WIPHY_FLAG_TDLS_EXTERNAL_SETUP), the station lifetime is as follows:
  *  - a setup station entry is added, not yet authorized, without any rate
- *    or capability information, this just exists to avoid race conditions
+ *    or capability information; this just exists to avoid race conditions
  *  - when the TDLS setup is done, a single NL80211_CMD_SET_STATION is valid
  *    to add rate and capability information to the station and at the same
  *    time mark it authorized.
@@ -87,7 +87,7 @@
  * DOC: Frame transmission/registration support
  *
  * Frame transmission and registration support exists to allow userspace
- * management entities such as wpa_supplicant react to management frames
+ * management entities such as wpa_supplicant to react to management frames
  * that are not being handled by the kernel. This includes, for example,
  * certain classes of action frames that cannot be handled in the kernel
  * for various reasons.
  *
  * Frame transmission allows userspace to send for example the required
  * responses to action frames. It is subject to some sanity checking,
- * but many frames can be transmitted. When a frame was transmitted, its
+ * but many frames can be transmitted. When a frame is transmitted, its
  * status is indicated to the sending socket.
  *
  * For more technical details, see the corresponding command descriptions
 /**
  * DOC: Virtual interface / concurrency capabilities
  *
- * Some devices are able to operate with virtual MACs, they can have
+ * Some devices are able to operate with virtual MACs; they can have
  * more than one virtual interface. The capability handling for this
  * is a bit complex though, as there may be a number of restrictions
  * on the types of concurrency that are supported.
  * Once concurrency is desired, more attributes must be observed:
  * To start with, since some interface types are purely managed in
  * software, like the AP-VLAN type in mac80211 for example, there's
- * an additional list of these, they can be added at any time and
+ * an additional list of these; they can be added at any time and
  * are only restricted by some semantic restrictions (e.g. AP-VLAN
  * cannot be added without a corresponding AP interface). This list
  * is exported in the %NL80211_ATTR_SOFTWARE_IFTYPES attribute.
  * Packet coalesce feature helps to reduce number of received interrupts
  * to host by buffering these packets in firmware/hardware for some
  * predefined time. Received interrupt will be generated when one of the
- * following events occur.
+ * following events occurs.
  * a) Expiration of hardware timer whose expiration time is set to maximum
  * coalescing delay of matching coalesce rule.
- * b) Coalescing buffer in hardware reaches it's limit.
+ * b) Coalescing buffer in hardware reaches its limit.
  * c) Packet doesn't match any of the configured coalesce rules.
  *
  * User needs to configure following parameters for creating a coalesce
  * rule.
  * a) Maximum coalescing delay
  * b) List of packet patterns which needs to be matched
- * c) Condition for coalescence. pattern 'match' or 'no match'
+ * c) Condition for coalescence: pattern 'match' or 'no match'
  * Multiple such rules can be created.
  */
 
 /**
  * DOC: FILS shared key authentication offload
  *
- * FILS shared key authentication offload can be advertized by drivers by
+ * FILS shared key authentication offload can be advertised by drivers by
  * setting @NL80211_EXT_FEATURE_FILS_SK_OFFLOAD flag. The drivers that support
  * FILS shared key authentication offload should be able to construct the
  * authentication and association frames for FILS shared key authentication and
  * The PMKSA can be maintained in userspace persistently so that it can be used
  * later after reboots or wifi turn off/on also.
  *
- * %NL80211_ATTR_FILS_CACHE_ID is the cache identifier advertized by a FILS
+ * %NL80211_ATTR_FILS_CACHE_ID is the cache identifier advertised by a FILS
  * capable AP supporting PMK caching. It specifies the scope within which the
  * PMKSAs are cached in an ESS. %NL80211_CMD_SET_PMKSA and
  * %NL80211_CMD_DEL_PMKSA are enhanced to allow support for PMKSA caching based
  * If the configuration needs to be applied for specific peer then the MAC
  * address of the peer needs to be passed in %NL80211_ATTR_MAC, otherwise the
  * configuration will be applied for all the connected peers in the vif except
- * any peers that have peer specific configuration for the TID by default; if
- * the %NL80211_TID_CONFIG_ATTR_OVERRIDE flag is set, peer specific values
+ * any peers that have peer-specific configuration for the TID by default; if
+ * the %NL80211_TID_CONFIG_ATTR_OVERRIDE flag is set, peer-specific values
  * will be overwritten.
  *
- * All this configuration is valid only for STA's current connection
- * i.e. the configuration will be reset to default when the STA connects back
+ * All this configuration is valid only for STA's current connection,
+ * i.e., the configuration will be reset to default when the STA connects back
  * after disconnection/roaming, and this configuration will be cleared when
  * the interface goes down.
  */
  * Once the association is done, the driver cleans the FILS AAD data.
  */
 
+/**
+ * DOC: Multi-Link Operation
+ *
+ * In Multi-Link Operation, a connection between two 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.
+ */
+
+/**
+ * DOC: OWE DH IE handling offload
+ *
+ * By setting @NL80211_EXT_FEATURE_OWE_OFFLOAD flag, drivers can indicate
+ * kernel/application space to avoid DH IE handling. When this flag is
+ * advertised, the driver/device will take care of DH IE inclusion and
+ * processing of peer DH IE to generate PMK.
+ */
+
 /**
  * enum nl80211_commands - supported nl80211 commands
  *
  *     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
- *     frame).
+ *     frame). %NL80211_ATTR_MLO_LINK_ID can be used optionally to remove
+ *     stations connected and using at least that link as one of its links.
  *
  * @NL80211_CMD_GET_MPATH: Get mesh path attributes for mesh path to
  *     destination %NL80211_ATTR_MAC on the interface identified by
  *     %NL80211_ATTR_SCHED_SCAN_PLANS. If %NL80211_ATTR_SCHED_SCAN_PLANS is
  *     not specified and only %NL80211_ATTR_SCHED_SCAN_INTERVAL is specified,
  *     scheduled scan will run in an infinite loop with the specified interval.
- *     These attributes are mutually exculsive,
+ *     These attributes are mutually exclusive,
  *     i.e. NL80211_ATTR_SCHED_SCAN_INTERVAL must not be passed if
  *     NL80211_ATTR_SCHED_SCAN_PLANS is defined.
  *     If for some reason scheduled scan is aborted by the driver, all scan
  *     %NL80211_CMD_STOP_SCHED_SCAN command is received or when the interface
  *     is brought down while a scheduled scan was running.
  *
- * @NL80211_CMD_GET_SURVEY: get survey resuls, e.g. channel occupation
+ * @NL80211_CMD_GET_SURVEY: get survey results, e.g. channel occupation
  *      or noise level
  * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to
  *     NL80211_CMD_GET_SURVEY and on the "scan" multicast group)
  *     using %NL80211_ATTR_SSID, %NL80211_ATTR_FILS_CACHE_ID,
  *     %NL80211_ATTR_PMKID, and %NL80211_ATTR_PMK in case of FILS
  *     authentication where %NL80211_ATTR_FILS_CACHE_ID is the identifier
- *     advertized by a FILS capable AP identifying the scope of PMKSA in an
+ *     advertised by a FILS capable AP identifying the scope of PMKSA in an
  *     ESS.
  * @NL80211_CMD_DEL_PMKSA: Delete a PMKSA cache entry, using %NL80211_ATTR_MAC
  *     (for the BSSID) and %NL80211_ATTR_PMKID or using %NL80211_ATTR_SSID,
  *     %NL80211_ATTR_FILS_CACHE_ID, and %NL80211_ATTR_PMKID in case of FILS
- *     authentication.
+ *     authentication. Additionally in case of SAE offload and OWE offloads
+ *     PMKSA entry can be deleted using %NL80211_ATTR_SSID.
  * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries.
  *
  * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain
  *     BSSID in case of station mode). %NL80211_ATTR_SSID is used to specify
  *     the SSID (mainly for association, but is included in authentication
  *     request, too, to help BSS selection. %NL80211_ATTR_WIPHY_FREQ +
- *     %NL80211_ATTR_WIPHY_FREQ_OFFSET is used to specify the frequence of the
+ *     %NL80211_ATTR_WIPHY_FREQ_OFFSET is used to specify the frequency of the
  *     channel in MHz. %NL80211_ATTR_AUTH_TYPE is used to specify the
  *     authentication type. %NL80211_ATTR_IE is used to define IEs
  *     (VendorSpecificInfo, but also including RSN IE and FT IEs) to be added
  *     %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.
  *
  *     reached.
  * @NL80211_CMD_SET_CHANNEL: Set the channel (using %NL80211_ATTR_WIPHY_FREQ
  *     and the attributes determining channel width) the given interface
- *     (identifed by %NL80211_ATTR_IFINDEX) shall operate on.
+ *     (identified by %NL80211_ATTR_IFINDEX) shall operate on.
  *     In case multiple channels are supported by the device, the mechanism
  *     with which it switches channels is implementation-defined.
  *     When a monitor interface is given, it can only switch channel while
  *     inform userspace of the new replay counter.
  *
  * @NL80211_CMD_PMKSA_CANDIDATE: This is used as an event to inform userspace
- *     of PMKSA caching dandidates.
+ *     of PMKSA caching candidates.
  *
  * @NL80211_CMD_TDLS_OPER: Perform a high-level TDLS command (e.g. link setup).
  *     In addition, this can be used as an event to request userspace to take
  *
  * @NL80211_CMD_PROBE_CLIENT: Probe an associated station on an AP interface
  *     by sending a null data frame to it and reporting when the frame is
- *     acknowleged. This is used to allow timing out inactive clients. Uses
+ *     acknowledged. This is used to allow timing out inactive clients. Uses
  *     %NL80211_ATTR_IFINDEX and %NL80211_ATTR_MAC. The command returns a
  *     direct reply with an %NL80211_ATTR_COOKIE that is later used to match
  *     up the event with the request. The event includes the same data and
  * @NL80211_CMD_DEL_PMK: For offloaded 4-Way handshake, delete the previously
  *     configured PMK for the authenticator address identified by
  *     %NL80211_ATTR_MAC.
- * @NL80211_CMD_PORT_AUTHORIZED: An event that indicates an 802.1X FT roam was
- *     completed successfully. Drivers that support 4 way handshake offload
- *     should send this event after indicating 802.1X FT assocation with
- *     %NL80211_CMD_ROAM. If the 4 way handshake failed %NL80211_CMD_DISCONNECT
- *     should be indicated instead.
+ * @NL80211_CMD_PORT_AUTHORIZED: An event that indicates port is authorized and
+ *     open for regular data traffic. For STA/P2P-client, this event is sent
+ *     with AP MAC address and for AP/P2P-GO, the event carries the STA/P2P-
+ *     client MAC address.
+ *     Drivers that support 4 way handshake offload should send this event for
+ *     STA/P2P-client after successful 4-way HS or after 802.1X FT following
+ *     NL80211_CMD_CONNECT or NL80211_CMD_ROAM. Drivers using AP/P2P-GO 4-way
+ *     handshake offload should send this event on successful completion of
+ *     4-way handshake with the peer (STA/P2P-client).
  * @NL80211_CMD_CONTROL_PORT_FRAME: Control Port (e.g. PAE) frame TX request
  *     and RX notification.  This command is used both as a request to transmit
  *     a control port frame and as a notification that a control port frame
  *     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.
  *      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_SET_TID_TO_LINK_MAPPING: Set the TID to Link Mapping for a
+ *      non-AP MLD station. The %NL80211_ATTR_MLO_TTLM_DLINK and
+ *      %NL80211_ATTR_MLO_TTLM_ULINK attributes are used to specify the
+ *      TID to Link mapping for downlink/uplink traffic.
+ *
  * @NL80211_CMD_MAX: highest used command number
  * @__NL80211_CMD_AFTER_LAST: internal use
  */
@@ -1481,6 +1578,19 @@ enum nl80211_commands {
 
        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,
+
+       NL80211_CMD_SET_TID_TO_LINK_MAPPING,
+
        /* add new commands above here */
 
        /* used to define NL80211_CMD_MAX below */
@@ -1738,7 +1848,7 @@ enum nl80211_commands {
  *     using %CMD_CONTROL_PORT_FRAME.  If control port routing over NL80211 is
  *     to be used then userspace must also use the %NL80211_ATTR_SOCKET_OWNER
  *     flag. When used with %NL80211_ATTR_CONTROL_PORT_NO_PREAUTH, pre-auth
- *     frames are not forwared over the control port.
+ *     frames are not forwarded over the control port.
  *
  * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver.
  *     We recommend using nested, driver-specific attributes within this.
@@ -1875,10 +1985,10 @@ enum nl80211_commands {
  *     bit. Depending on which antennas are selected in the bitmap, 802.11n
  *     drivers can derive which chainmasks to use (if all antennas belonging to
  *     a particular chain are disabled this chain should be disabled) and if
- *     a chain has diversity antennas wether diversity should be used or not.
+ *     a chain has diversity antennas whether diversity should be used or not.
  *     HT capabilities (STBC, TX Beamforming, Antenna selection) can be
  *     derived from the available chains after applying the antenna mask.
- *     Non-802.11n drivers can derive wether to use diversity or not.
+ *     Non-802.11n drivers can derive whether to use diversity or not.
  *     Drivers may reject configurations or RX/TX mask combinations they cannot
  *     support by returning -EINVAL.
  *
@@ -2340,8 +2450,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.
@@ -2446,7 +2558,7 @@ enum nl80211_commands {
  *     from successful FILS authentication and is used with
  *     %NL80211_CMD_CONNECT.
  *
- * @NL80211_ATTR_FILS_CACHE_ID: A 2-octet identifier advertized by a FILS AP
+ * @NL80211_ATTR_FILS_CACHE_ID: A 2-octet identifier advertised by a FILS AP
  *     identifying the scope of PMKSAs. This is used with
  *     @NL80211_CMD_SET_PMKSA and @NL80211_CMD_DEL_PMKSA.
  *
@@ -2600,11 +2712,13 @@ enum nl80211_commands {
  *
  * @NL80211_ATTR_FILS_DISCOVERY: Optional parameter to configure FILS
  *     discovery. It is a nested attribute, see
- *     &enum nl80211_fils_discovery_attributes.
+ *     &enum nl80211_fils_discovery_attributes. Userspace should pass an empty
+ *     nested attribute to disable this feature and delete the templates.
  *
  * @NL80211_ATTR_UNSOL_BCAST_PROBE_RESP: Optional parameter to configure
  *     unsolicited broadcast probe response. It is a nested attribute, see
- *     &enum nl80211_unsol_bcast_probe_resp_attributes.
+ *     &enum nl80211_unsol_bcast_probe_resp_attributes. Userspace should pass an empty
+ *     nested attribute to disable this feature and delete the templates.
  *
  * @NL80211_ATTR_S1G_CAPABILITY: S1G Capability information element (from
  *     association request when used with NL80211_CMD_NEW_STATION)
@@ -2663,6 +2777,85 @@ enum nl80211_commands {
  *     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.
+ *
+ * @NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA: Include BSS usage data, i.e.
+ *     include BSSes that can only be used in restricted scenarios and/or
+ *     cannot be used at all.
+ *
+ * @NL80211_ATTR_MLO_TTLM_DLINK: Binary attribute specifying the downlink TID to
+ *      link mapping. The length is 8 * sizeof(u16). For each TID the link
+ *      mapping is as defined in section 9.4.2.314 (TID-To-Link Mapping element)
+ *      in Draft P802.11be_D4.0.
+ * @NL80211_ATTR_MLO_TTLM_ULINK: Binary attribute specifying the uplink TID to
+ *      link mapping. The length is 8 * sizeof(u16). For each TID the link
+ *      mapping is as defined in section 9.4.2.314 (TID-To-Link Mapping element)
+ *      in Draft P802.11be_D4.0.
+ *
+ * @NL80211_ATTR_ASSOC_SPP_AMSDU: flag attribute used with
+ *     %NL80211_CMD_ASSOCIATE indicating the SPP A-MSDUs
+ *     are used on this connection
+ *
  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
  * @NL80211_ATTR_MAX: highest attribute number currently defined
  * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3177,6 +3370,37 @@ enum nl80211_attrs {
 
        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,
+
+       NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA,
+
+       NL80211_ATTR_MLO_TTLM_DLINK,
+       NL80211_ATTR_MLO_TTLM_ULINK,
+
+       NL80211_ATTR_ASSOC_SPP_AMSDU,
+
        /* add attributes here, update the policy in nl80211.c */
 
        __NL80211_ATTR_AFTER_LAST,
@@ -3231,6 +3455,11 @@ 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
@@ -3312,6 +3541,7 @@ enum nl80211_iftype {
  * @NL80211_STA_FLAG_ASSOCIATED: station is associated; used with drivers
  *     that support %NL80211_FEATURE_FULL_AP_CLIENT_STATE to transition a
  *     previously added station into associated state
+ * @NL80211_STA_FLAG_SPP_AMSDU: station supports SPP A-MSDUs
  * @NL80211_STA_FLAG_MAX: highest station flag number currently defined
  * @__NL80211_STA_FLAG_AFTER_LAST: internal use
  */
@@ -3324,6 +3554,7 @@ enum nl80211_sta_flags {
        NL80211_STA_FLAG_AUTHENTICATED,
        NL80211_STA_FLAG_TDLS_PEER,
        NL80211_STA_FLAG_ASSOCIATED,
+       NL80211_STA_FLAG_SPP_AMSDU,
 
        /* keep last */
        __NL80211_STA_FLAG_AFTER_LAST,
@@ -3498,6 +3729,13 @@ enum nl80211_eht_ru_alloc {
  *     (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 {
@@ -3524,6 +3762,13 @@ enum nl80211_rate_info {
        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,
@@ -3892,6 +4137,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
  */
@@ -3912,6 +4161,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
@@ -3957,7 +4209,7 @@ enum nl80211_wmm_rule {
  *     (100 * dBm).
  * @NL80211_FREQUENCY_ATTR_DFS_STATE: current state for DFS
  *     (enum nl80211_dfs_state)
- * @NL80211_FREQUENCY_ATTR_DFS_TIME: time in miliseconds for how long
+ * @NL80211_FREQUENCY_ATTR_DFS_TIME: time in milliseconds for how long
  *     this channel is in this DFS state.
  * @NL80211_FREQUENCY_ATTR_NO_HT40_MINUS: HT40- isn't possible with this
  *     channel as the control channel
@@ -4011,6 +4263,19 @@ enum nl80211_wmm_rule {
  *     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_PSD: Power spectral density (in dBm) that
+ *     is allowed on this channel in current regulatory domain.
+ * @NL80211_FREQUENCY_ATTR_DFS_CONCURRENT: Operation on this channel is
+ *     allowed for peer-to-peer or adhoc communication under the control
+ *     of a DFS master which operates on the same channel (FCC-594280 D01
+ *     Section B.3). Should be used together with %NL80211_RRF_DFS only.
+ * @NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT: Client connection to VLP AP
+ *     not allowed using this channel
+ * @NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT: Client connection to AFC AP
+ *     not allowed using this channel
+ * @NL80211_FREQUENCY_ATTR_CAN_MONITOR: This channel can be used in monitor
+ *     mode despite other (regulatory) restrictions, even if the channel is
+ *     otherwise completely disabled.
  * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
  *     currently defined
  * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
@@ -4049,6 +4314,11 @@ enum nl80211_frequency_attr {
        NL80211_FREQUENCY_ATTR_16MHZ,
        NL80211_FREQUENCY_ATTR_NO_320MHZ,
        NL80211_FREQUENCY_ATTR_NO_EHT,
+       NL80211_FREQUENCY_ATTR_PSD,
+       NL80211_FREQUENCY_ATTR_DFS_CONCURRENT,
+       NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT,
+       NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT,
+       NL80211_FREQUENCY_ATTR_CAN_MONITOR,
 
        /* keep last */
        __NL80211_FREQUENCY_ATTR_AFTER_LAST,
@@ -4061,6 +4331,10 @@ enum nl80211_frequency_attr {
 #define NL80211_FREQUENCY_ATTR_NO_IR           NL80211_FREQUENCY_ATTR_NO_IR
 #define NL80211_FREQUENCY_ATTR_GO_CONCURRENT \
                                        NL80211_FREQUENCY_ATTR_IR_CONCURRENT
+#define NL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT \
+       NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT
+#define NL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT \
+       NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT
 
 /**
  * enum nl80211_bitrate_attr - bitrate attributes
@@ -4149,6 +4423,8 @@ enum nl80211_reg_type {
  *     a given frequency range. The value is in mBm (100 * dBm).
  * @NL80211_ATTR_DFS_CAC_TIME: DFS CAC time in milliseconds.
  *     If not present or 0 default CAC time will be used.
+ * @NL80211_ATTR_POWER_RULE_PSD: power spectral density (in dBm).
+ *     This could be negative.
  * @NL80211_REG_RULE_ATTR_MAX: highest regulatory rule attribute number
  *     currently defined
  * @__NL80211_REG_RULE_ATTR_AFTER_LAST: internal use
@@ -4166,6 +4442,8 @@ enum nl80211_reg_rule_attr {
 
        NL80211_ATTR_DFS_CAC_TIME,
 
+       NL80211_ATTR_POWER_RULE_PSD,
+
        /* keep last */
        __NL80211_REG_RULE_ATTR_AFTER_LAST,
        NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
@@ -4194,14 +4472,7 @@ enum nl80211_reg_rule_attr {
  *     value as specified by &struct nl80211_bss_select_rssi_adjust.
  * @NL80211_SCHED_SCAN_MATCH_ATTR_BSSID: BSSID to be used for matching
  *     (this cannot be used together with SSID).
- * @NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI: Nested attribute that carries the
- *     band specific minimum rssi thresholds for the bands defined in
- *     enum nl80211_band. The minimum rssi threshold value(s32) specific to a
- *     band shall be encapsulated in attribute with type value equals to one
- *     of the NL80211_BAND_* defined in enum nl80211_band. For example, the
- *     minimum rssi threshold value for 2.4GHZ band shall be encapsulated
- *     within an attribute of type NL80211_BAND_2GHZ. And one or more of such
- *     attributes will be nested within this attribute.
+ * @NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI: Obsolete
  * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
  *     attribute number currently defined
  * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
@@ -4214,7 +4485,7 @@ enum nl80211_sched_scan_match_attr {
        NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI,
        NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST,
        NL80211_SCHED_SCAN_MATCH_ATTR_BSSID,
-       NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI,
+       NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI, /* obsolete */
 
        /* keep last */
        __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
@@ -4248,6 +4519,14 @@ enum nl80211_sched_scan_match_attr {
  * @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
+ * @NL80211_RRF_PSD: Ruleset has power spectral density value
+ * @NL80211_RRF_DFS_CONCURRENT: Operation on this channel is allowed for
+       peer-to-peer or adhoc communication under the control of a DFS master
+       which operates on the same channel (FCC-594280 D01 Section B.3).
+       Should be used together with %NL80211_RRF_DFS only.
+ * @NL80211_RRF_NO_6GHZ_VLP_CLIENT: Client connection to VLP AP not allowed
+ * @NL80211_RRF_NO_6GHZ_AFC_CLIENT: Client connection to AFC AP not allowed
  */
 enum nl80211_reg_rule_flags {
        NL80211_RRF_NO_OFDM             = 1<<0,
@@ -4267,6 +4546,11 @@ enum nl80211_reg_rule_flags {
        NL80211_RRF_NO_160MHZ           = 1<<16,
        NL80211_RRF_NO_HE               = 1<<17,
        NL80211_RRF_NO_320MHZ           = 1<<18,
+       NL80211_RRF_NO_EHT              = 1<<19,
+       NL80211_RRF_PSD                 = 1<<20,
+       NL80211_RRF_DFS_CONCURRENT      = 1<<21,
+       NL80211_RRF_NO_6GHZ_VLP_CLIENT  = 1<<22,
+       NL80211_RRF_NO_6GHZ_AFC_CLIENT  = 1<<23,
 };
 
 #define NL80211_RRF_PASSIVE_SCAN       NL80211_RRF_NO_IR
@@ -4275,6 +4559,8 @@ enum nl80211_reg_rule_flags {
 #define NL80211_RRF_NO_HT40            (NL80211_RRF_NO_HT40MINUS |\
                                         NL80211_RRF_NO_HT40PLUS)
 #define NL80211_RRF_GO_CONCURRENT      NL80211_RRF_IR_CONCURRENT
+#define NL80211_RRF_NO_UHB_VLP_CLIENT  NL80211_RRF_NO_6GHZ_VLP_CLIENT
+#define NL80211_RRF_NO_UHB_AFC_CLIENT  NL80211_RRF_NO_6GHZ_AFC_CLIENT
 
 /* For backport compatibility with older userspace */
 #define NL80211_RRF_NO_IR_ALL          (NL80211_RRF_NO_IR | __NL80211_RRF_NO_IBSS)
@@ -4803,6 +5089,36 @@ enum nl80211_bss_scan_width {
        NL80211_BSS_CHAN_WIDTH_2,
 };
 
+/**
+ * enum nl80211_bss_use_for - bitmap indicating possible BSS use
+ * @NL80211_BSS_USE_FOR_NORMAL: Use this BSS for normal "connection",
+ *     including IBSS/MBSS depending on the type.
+ * @NL80211_BSS_USE_FOR_MLD_LINK: This BSS can be used as a link in an
+ *     MLO connection. Note that for an MLO connection, all links including
+ *     the assoc link must have this flag set, and the assoc link must
+ *     additionally have %NL80211_BSS_USE_FOR_NORMAL set.
+ */
+enum nl80211_bss_use_for {
+       NL80211_BSS_USE_FOR_NORMAL = 1 << 0,
+       NL80211_BSS_USE_FOR_MLD_LINK = 1 << 1,
+};
+
+/**
+ * enum nl80211_bss_cannot_use_reasons - reason(s) connection to a
+ *     BSS isn't possible
+ * @NL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY: NSTR nonprimary links aren't
+ *     supported by the device, and this BSS entry represents one.
+ * @NL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH: STA is not supporting
+ *     the AP power type (SP, VLP, AP) that the AP uses.
+ */
+enum nl80211_bss_cannot_use_reasons {
+       NL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY  = 1 << 0,
+       NL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH        = 1 << 1,
+};
+
+#define NL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH \
+       NL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH
+
 /**
  * enum nl80211_bss - netlink attributes for a BSS
  *
@@ -4834,7 +5150,7 @@ enum nl80211_bss_scan_width {
  *     elements from a Beacon frame (bin); not present if no Beacon frame has
  *     yet been received
  * @NL80211_BSS_CHAN_WIDTH: channel width of the control channel
- *     (u32, enum nl80211_bss_scan_width)
+ *     (u32, enum nl80211_bss_scan_width) - No longer used!
  * @NL80211_BSS_BEACON_TSF: TSF of the last received beacon (u64)
  *     (not present if no beacon frame has been received yet)
  * @NL80211_BSS_PRESP_DATA: the data in @NL80211_BSS_INFORMATION_ELEMENTS and
@@ -4853,6 +5169,16 @@ 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_USE_FOR: u32 bitmap attribute indicating what the BSS can be
+ *     used for, see &enum nl80211_bss_use_for.
+ * @NL80211_BSS_CANNOT_USE_REASONS: Indicates the reason that this BSS cannot
+ *     be used for all or some of the possible uses by the device reporting it,
+ *     even though its presence was detected.
+ *     This is a u64 attribute containing a bitmap of values from
+ *     &enum nl80211_cannot_use_reasons, note that the attribute may be missing
+ *     if no reasons are specified.
  * @__NL80211_BSS_AFTER_LAST: internal
  * @NL80211_BSS_MAX: highest BSS attribute
  */
@@ -4878,6 +5204,10 @@ enum nl80211_bss {
        NL80211_BSS_PARENT_BSSID,
        NL80211_BSS_CHAIN_SIGNAL,
        NL80211_BSS_FREQUENCY_OFFSET,
+       NL80211_BSS_MLO_LINK_ID,
+       NL80211_BSS_MLD_ADDR,
+       NL80211_BSS_USE_FOR,
+       NL80211_BSS_CANNOT_USE_REASONS,
 
        /* keep last */
        __NL80211_BSS_AFTER_LAST,
@@ -5226,7 +5556,7 @@ enum nl80211_tx_rate_setting {
  *     (%NL80211_TID_CONFIG_ATTR_TIDS, %NL80211_TID_CONFIG_ATTR_OVERRIDE).
  * @NL80211_TID_CONFIG_ATTR_PEER_SUPP: same as the previous per-vif one, but
  *     per peer instead.
- * @NL80211_TID_CONFIG_ATTR_OVERRIDE: flag attribue, if set indicates
+ * @NL80211_TID_CONFIG_ATTR_OVERRIDE: flag attribute, if set indicates
  *     that the new configuration overrides all previous peer
  *     configurations, otherwise previous peer specific configurations
  *     should be left untouched.
@@ -5427,6 +5757,8 @@ struct nl80211_pattern_support {
  *     %NL80211_ATTR_SCAN_FREQUENCIES contains more than one
  *     frequency, it means that the match occurred in more than one
  *     channel.
+ * @NL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC: For wakeup reporting only.
+ *     Wake up happened due to unprotected deauth or disassoc frame in MFP.
  * @NUM_NL80211_WOWLAN_TRIG: number of wake on wireless triggers
  * @MAX_NL80211_WOWLAN_TRIG: highest wowlan trigger attribute number
  *
@@ -5454,6 +5786,7 @@ enum nl80211_wowlan_triggers {
        NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS,
        NL80211_WOWLAN_TRIG_NET_DETECT,
        NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS,
+       NL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC,
 
        /* keep last */
        NUM_NL80211_WOWLAN_TRIG,
@@ -5609,7 +5942,7 @@ enum nl80211_attr_coalesce_rule {
 
 /**
  * enum nl80211_coalesce_condition - coalesce rule conditions
- * @NL80211_COALESCE_CONDITION_MATCH: coalaesce Rx packets when patterns
+ * @NL80211_COALESCE_CONDITION_MATCH: coalesce Rx packets when patterns
  *     in a rule are matched.
  * @NL80211_COALESCE_CONDITION_NO_MATCH: coalesce Rx packets when patterns
  *     in a rule are not matched.
@@ -5708,7 +6041,7 @@ enum nl80211_if_combination_attrs {
  * enum nl80211_plink_state - state of a mesh peer link finite state machine
  *
  * @NL80211_PLINK_LISTEN: initial state, considered the implicit
- *     state of non existent mesh peer links
+ *     state of non-existent mesh peer links
  * @NL80211_PLINK_OPN_SNT: mesh plink open frame has been sent to
  *     this mesh peer
  * @NL80211_PLINK_OPN_RCVD: mesh plink open frame has been received
@@ -5757,6 +6090,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
 
 /**
@@ -5874,7 +6208,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)
@@ -6000,7 +6334,7 @@ enum nl80211_feature_flags {
  *     request to use RRM (see %NL80211_ATTR_USE_RRM) with
  *     %NL80211_CMD_ASSOCIATE and %NL80211_CMD_CONNECT requests, which will set
  *     the ASSOC_REQ_USE_RRM flag in the association request even if
- *     NL80211_FEATURE_QUIET is not advertized.
+ *     NL80211_FEATURE_QUIET is not advertised.
  * @NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER: This device supports MU-MIMO air
  *     sniffer which means that it can be configured to hear packets from
  *     certain groups which can be configured by the
@@ -6012,13 +6346,15 @@ enum nl80211_feature_flags {
  *     the BSS that the interface that requested the scan is connected to
  *     (if available).
  * @NL80211_EXT_FEATURE_BSS_PARENT_TSF: Per BSS, this driver reports the
- *     time the last beacon/probe was received. The time is the TSF of the
- *     BSS that the interface that requested the scan is connected to
- *     (if available).
+ *     time the last beacon/probe was received. For a non-MLO connection, the
+ *     time is the TSF of the BSS that the interface that requested the scan is
+ *     connected to (if available). For an MLO connection, the time is the TSF
+ *     of the BSS corresponding with link ID specified in the scan request (if
+ *     specified).
  * @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of
  *     channel dwell time.
  * @NL80211_EXT_FEATURE_BEACON_RATE_LEGACY: Driver supports beacon rate
- *     configuration (AP/mesh), supporting a legacy (non HT/VHT) rate.
+ *     configuration (AP/mesh), supporting a legacy (non-HT/VHT) rate.
  * @NL80211_EXT_FEATURE_BEACON_RATE_HT: Driver supports beacon rate
  *     configuration (AP/mesh) with HT rates.
  * @NL80211_EXT_FEATURE_BEACON_RATE_VHT: Driver supports beacon rate
@@ -6092,8 +6428,7 @@ enum nl80211_feature_flags {
  * @NL80211_EXT_FEATURE_AP_PMKSA_CACHING: Driver/device supports PMKSA caching
  *     (set/del PMKSA operations) in AP mode.
  *
- * @NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD: Driver supports
- *     filtering of sched scan results using band specific RSSI thresholds.
+ * @NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD: Obsolete
  *
  * @NL80211_EXT_FEATURE_STA_TX_PWR: This driver supports controlling tx power
  *     to a station.
@@ -6174,6 +6509,39 @@ enum nl80211_feature_flags {
  * @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.
+ *
+ * @NL80211_EXT_FEATURE_OWE_OFFLOAD: Driver/Device wants to do OWE DH IE
+ *     handling in station mode.
+ *
+ * @NL80211_EXT_FEATURE_OWE_OFFLOAD_AP: Driver/Device wants to do OWE DH IE
+ *     handling in AP mode.
+ *
+ * @NL80211_EXT_FEATURE_DFS_CONCURRENT: The device supports peer-to-peer or
+ *     ad hoc operation on DFS channels under the control of a concurrent
+ *     DFS master on the same channel as described in FCC-594280 D01
+ *     (Section B.3). This, for example, allows P2P GO and P2P clients to
+ *     operate on DFS channels as long as there's a concurrent BSS connection.
+ *
+ * @NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT: The driver has support for SPP
+ *     (signaling and payload protected) A-MSDUs and this shall be advertised
+ *     in the RSNXE.
+ *
  * @NUM_NL80211_EXT_FEATURES: number of extended features.
  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
  */
@@ -6215,7 +6583,7 @@ enum nl80211_ext_feature_index {
        NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
        NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
        NL80211_EXT_FEATURE_AP_PMKSA_CACHING,
-       NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD,
+       NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD, /* obsolete */
        NL80211_EXT_FEATURE_EXT_KEY_ID,
        NL80211_EXT_FEATURE_STA_TX_PWR,
        NL80211_EXT_FEATURE_SAE_OFFLOAD,
@@ -6241,6 +6609,14 @@ enum nl80211_ext_feature_index {
        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,
+       NL80211_EXT_FEATURE_OWE_OFFLOAD,
+       NL80211_EXT_FEATURE_OWE_OFFLOAD_AP,
+       NL80211_EXT_FEATURE_DFS_CONCURRENT,
+       NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,
 
        /* add new features before the definition below */
        NUM_NL80211_EXT_FEATURES,
@@ -6325,7 +6701,7 @@ enum nl80211_timeout_reason {
  *     request parameters IE in the probe request
  * @NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP: accept broadcast probe responses
  * @NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE: send probe request frames at
- *     rate of at least 5.5M. In case non OCE AP is discovered in the channel,
+ *     rate of at least 5.5M. In case non-OCE AP is discovered in the channel,
  *     only the first probe req in the channel will be sent in high rate.
  * @NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION: allow probe request
  *     tx deferral (dot11FILSProbeDelay shall be set to 15ms)
@@ -6355,8 +6731,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,
@@ -6685,7 +7069,7 @@ enum nl80211_nan_func_term_reason {
  *     The instance ID for the follow up Service Discovery Frame. This is u8.
  * @NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID: relevant if the function's type
  *     is follow up. This is a u8.
- *     The requestor instance ID for the follow up Service Discovery Frame.
+ *     The requester instance ID for the follow up Service Discovery Frame.
  * @NL80211_NAN_FUNC_FOLLOW_UP_DEST: the MAC address of the recipient of the
  *     follow up Service Discovery Frame. This is a binary attribute.
  * @NL80211_NAN_FUNC_CLOSE_RANGE: is this function limited for devices in a
@@ -7075,7 +7459,7 @@ enum nl80211_peer_measurement_attrs {
  * @NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED: flag attribute indicating if
  *     trigger based ranging measurement is supported
  * @NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED: flag attribute indicating
- *     if non trigger based ranging measurement is supported
+ *     if non-trigger-based ranging measurement is supported
  *
  * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal
  * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number
@@ -7129,7 +7513,7 @@ enum nl80211_peer_measurement_ftm_capa {
  *      if neither %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED nor
  *     %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set, EDCA based
  *     ranging will be used.
- * @NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED: request non trigger based
+ * @NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED: request non-trigger-based
  *     ranging measurement (flag)
  *     This attribute and %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED are
  *     mutually exclusive.
@@ -7207,7 +7591,7 @@ enum nl80211_peer_measurement_ftm_failure_reasons {
  * @NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS: number of FTM Request frames
  *     transmitted (u32, optional)
  * @NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES: number of FTM Request frames
- *     that were acknowleged (u32, optional)
+ *     that were acknowledged (u32, optional)
  * @NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME: retry time received from the
  *     busy peer (u32, seconds)
  * @NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP: actual number of bursts exponent
@@ -7368,7 +7752,7 @@ enum nl80211_iftype_akm_attributes {
  * @NL80211_FILS_DISCOVERY_ATTR_INT_MIN: Minimum packet interval (u32, TU).
  *     Allowed range: 0..10000 (TU = Time Unit)
  * @NL80211_FILS_DISCOVERY_ATTR_INT_MAX: Maximum packet interval (u32, TU).
- *     Allowed range: 0..10000 (TU = Time Unit)
+ *     Allowed range: 0..10000 (TU = Time Unit). If set to 0, the feature is disabled.
  * @NL80211_FILS_DISCOVERY_ATTR_TMPL: Template data for FILS discovery action
  *     frame including the headers.
  *
@@ -7401,7 +7785,8 @@ enum nl80211_fils_discovery_attributes {
  *
  * @NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT: Maximum packet interval (u32, TU).
  *     Allowed range: 0..20 (TU = Time Unit). IEEE P802.11ax/D6.0
- *     26.17.2.3.2 (AP behavior for fast passive scanning).
+ *     26.17.2.3.2 (AP behavior for fast passive scanning). If set to 0, the feature is
+ *     disabled.
  * @NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL: Unsolicited broadcast probe response
  *     frame template (binary).
  *