mac80211: Update to version 5.2-rc7
[openwrt/openwrt.git] / package / network / utils / iw / patches / 001-nl80211_h_sync.patch
index 5f15684d30eea6a060c4f7d727de73abb4830b9b..5c0993a7b778ba5c90583e68504435bcaa650377 100644 (file)
+diff --git a/nl80211.h b/nl80211.h
+index 31ae5c7..9fb7370 100644
 --- a/nl80211.h
 +++ b/nl80211.h
-@@ -2299,6 +2299,12 @@ enum nl80211_commands {
+@@ -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 Intel Corporation
++ * Copyright (C) 2018-2019 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
+@@ -1065,6 +1065,26 @@
+  *    indicated by %NL80211_ATTR_WIPHY_FREQ and other attributes
+  *    determining the width and type.
+  *
++ * @NL80211_CMD_UPDATE_OWE_INFO: This interface allows the host driver to
++ *    offload OWE processing to user space. This intends to support
++ *    OWE AKM by the host drivers that implement SME but rely
++ *    on the user space for the cryptographic/DH IE processing in AP mode.
++ *
++ * @NL80211_CMD_PROBE_MESH_LINK: The requirement for mesh link metric
++ *    refreshing, is that from one mesh point we be able to send some data
++ *    frames to other mesh points which are not currently selected as a
++ *    primary traffic path, but which are only 1 hop away. The absence of
++ *    the primary path to the chosen node makes it necessary to apply some
++ *    form of marking on a chosen packet stream so that the packets can be
++ *    properly steered to the selected node for testing, and not by the
++ *    regular mesh path lookup. Further, the packets must be of type data
++ *    so that the rate control (often embedded in firmware) is used for
++ *    rate selection.
++ *
++ *    Here attribute %NL80211_ATTR_MAC is used to specify connected mesh
++ *    peer MAC address and %NL80211_ATTR_FRAME is used to specify the frame
++ *    content. The frame is ethernet data.
++ *
+  * @NL80211_CMD_MAX: highest used command number
+  * @__NL80211_CMD_AFTER_LAST: internal use
+  */
+@@ -1285,6 +1305,10 @@ enum nl80211_commands {
+       NL80211_CMD_NOTIFY_RADAR,
++      NL80211_CMD_UPDATE_OWE_INFO,
++
++      NL80211_CMD_PROBE_MESH_LINK,
++
+       /* add new commands above here */
+       /* used to define NL80211_CMD_MAX below */
+@@ -1565,6 +1589,12 @@ enum nl80211_commands {
+  *    (a u32 with flags from &enum nl80211_wpa_versions).
+  * @NL80211_ATTR_AKM_SUITES: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
+  *    indicate which key management algorithm(s) to use (an array of u32).
++ *    This attribute is also sent in response to @NL80211_CMD_GET_WIPHY,
++ *    indicating the supported AKM suites, intended for specific drivers which
++ *    implement SME and have constraints on which AKMs are supported and also
++ *    the cases where an AKM support is offloaded to the driver/firmware.
++ *    If there is no such notification from the driver, user space should
++ *    assume the driver supports all the AKM suites.
+  *
+  * @NL80211_ATTR_REQ_IE: (Re)association request information elements as
+  *    sent out by the card, for ROAM and successful CONNECT events.
+@@ -2260,10 +2290,10 @@ enum nl80211_commands {
+  *     &enum nl80211_external_auth_action value). This is used with the
+  *     %NL80211_CMD_EXTERNAL_AUTH request event.
+  * @NL80211_ATTR_EXTERNAL_AUTH_SUPPORT: Flag attribute indicating that the user
+- *     space supports external authentication. This attribute shall be used
+- *     only with %NL80211_CMD_CONNECT request. The driver may offload
+- *     authentication processing to user space if this capability is indicated
+- *     in NL80211_CMD_CONNECT requests from the user space.
++ *    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.
+  *
+  * @NL80211_ATTR_NSS: Station's New/updated  RX_NSS value notified using this
+  *    u8 attribute. This is used with %NL80211_CMD_STA_OPMODE_CHANGED.
+@@ -2299,6 +2329,21 @@ enum nl80211_commands {
   *    This is also used for capability advertisement in the wiphy information,
   *    with the appropriate sub-attributes.
   *
 + * @NL80211_ATTR_AIRTIME_WEIGHT: Station's weight when scheduled by the airtime
 + *    scheduler.
 + *
++ * @NL80211_ATTR_STA_TX_POWER_SETTING: Transmit power setting type (u8) for
++ *    station associated with the AP. See &enum nl80211_tx_power_setting for
++ *    possible values.
++ * @NL80211_ATTR_STA_TX_POWER: Transmit power level (s16) in dBm units. This
++ *    allows to set Tx power for a station. If this attribute is not included,
++ *    the default per-interface tx power setting will be overriding. Driver
++ *    should be picking up the lowest tx power, either tx power per-interface
++ *    or per-station.
++ *
 + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce
 + *    transmit power to stay within regulatory limits. u32, dBi.
 + *
   * @NUM_NL80211_ATTR: total number of nl80211_attrs available
   * @NL80211_ATTR_MAX: highest attribute number currently defined
   * @__NL80211_ATTR_AFTER_LAST: internal use
-@@ -2748,6 +2754,10 @@ enum nl80211_attrs {
+@@ -2748,6 +2793,12 @@ enum nl80211_attrs {
  
        NL80211_ATTR_PEER_MEASUREMENTS,
  
 +      NL80211_ATTR_AIRTIME_WEIGHT,
++      NL80211_ATTR_STA_TX_POWER_SETTING,
++      NL80211_ATTR_STA_TX_POWER,
 +
 +      NL80211_ATTR_WIPHY_ANTENNA_GAIN,
 +
        /* add attributes here, update the policy in nl80211.c */
  
        __NL80211_ATTR_AFTER_LAST,
-@@ -3125,6 +3135,9 @@ enum nl80211_sta_bss_param {
+@@ -2791,7 +2842,7 @@ enum nl80211_attrs {
+ #define NL80211_MAX_SUPP_RATES                        32
+ #define NL80211_MAX_SUPP_HT_RATES             77
+-#define NL80211_MAX_SUPP_REG_RULES            64
++#define NL80211_MAX_SUPP_REG_RULES            128
+ #define NL80211_TKIP_DATA_OFFSET_ENCR_KEY     0
+ #define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY   16
+ #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY   24
+@@ -3125,6 +3176,10 @@ enum nl80211_sta_bss_param {
   *    might not be fully accurate.
   * @NL80211_STA_INFO_CONNECTED_TO_GATE: set to true if STA has a path to a
   *    mesh gate (u8, 0 or 1)
 + * @NL80211_STA_INFO_TX_DURATION: aggregate PPDU duration for all frames
 + *    sent to the station (u64, usec)
 + * @NL80211_STA_INFO_AIRTIME_WEIGHT: current airtime weight for station (u16)
++ * @NL80211_STA_INFO_AIRTIME_LINK_METRIC: airtime link metric for mesh station
   * @__NL80211_STA_INFO_AFTER_LAST: internal
   * @NL80211_STA_INFO_MAX: highest possible station info attribute
   */
-@@ -3168,6 +3181,8 @@ enum nl80211_sta_info {
+@@ -3168,6 +3223,9 @@ enum nl80211_sta_info {
        NL80211_STA_INFO_RX_MPDUS,
        NL80211_STA_INFO_FCS_ERROR_COUNT,
        NL80211_STA_INFO_CONNECTED_TO_GATE,
 +      NL80211_STA_INFO_TX_DURATION,
 +      NL80211_STA_INFO_AIRTIME_WEIGHT,
++      NL80211_STA_INFO_AIRTIME_LINK_METRIC,
  
        /* keep last */
        __NL80211_STA_INFO_AFTER_LAST,
+@@ -3277,8 +3335,10 @@ enum nl80211_mpath_flags {
+  *    &enum nl80211_mpath_flags;
+  * @NL80211_MPATH_INFO_DISCOVERY_TIMEOUT: total path discovery timeout, in msec
+  * @NL80211_MPATH_INFO_DISCOVERY_RETRIES: mesh path discovery retries
++ * @NL80211_MPATH_INFO_HOP_COUNT: hop count to destination
++ * @NL80211_MPATH_INFO_PATH_CHANGE: total number of path changes to destination
+  * @NL80211_MPATH_INFO_MAX: highest mesh path information attribute number
+- *    currently defind
++ *    currently defined
+  * @__NL80211_MPATH_INFO_AFTER_LAST: internal use
+  */
+ enum nl80211_mpath_info {
+@@ -3290,6 +3350,8 @@ enum nl80211_mpath_info {
+       NL80211_MPATH_INFO_FLAGS,
+       NL80211_MPATH_INFO_DISCOVERY_TIMEOUT,
+       NL80211_MPATH_INFO_DISCOVERY_RETRIES,
++      NL80211_MPATH_INFO_HOP_COUNT,
++      NL80211_MPATH_INFO_PATH_CHANGE,
+       /* keep last */
+       __NL80211_MPATH_INFO_AFTER_LAST,
+@@ -3618,6 +3680,14 @@ 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_ATTR_MAX: highest scheduled scan filter
+  *    attribute number currently defined
+  * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
+@@ -3630,6 +3700,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,
+       /* keep last */
+       __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
+@@ -4114,6 +4185,27 @@ enum nl80211_channel_type {
+       NL80211_CHAN_HT40PLUS
+ };
++/**
++ * enum nl80211_key_mode - Key mode
++ *
++ * @NL80211_KEY_RX_TX: (Default)
++ *    Key can be used for Rx and Tx immediately
++ *
++ * The following modes can only be selected for unicast keys and when the
++ * driver supports @NL80211_EXT_FEATURE_EXT_KEY_ID:
++ *
++ * @NL80211_KEY_NO_TX: Only allowed in combination with @NL80211_CMD_NEW_KEY:
++ *    Unicast key can only be used for Rx, Tx not allowed, yet
++ * @NL80211_KEY_SET_TX: Only allowed in combination with @NL80211_CMD_SET_KEY:
++ *    The unicast key identified by idx and mac is cleared for Tx and becomes
++ *    the preferred Tx key for the station.
++ */
++enum nl80211_key_mode {
++      NL80211_KEY_RX_TX,
++      NL80211_KEY_NO_TX,
++      NL80211_KEY_SET_TX
++};
++
+ /**
+  * enum nl80211_chan_width - channel width definitions
+  *
+@@ -4357,6 +4449,9 @@ enum nl80211_key_default_types {
+  * @NL80211_KEY_DEFAULT_TYPES: A nested attribute containing flags
+  *    attributes, specifying what a key should be set as default as.
+  *    See &enum nl80211_key_default_types.
++ * @NL80211_KEY_MODE: the mode from enum nl80211_key_mode.
++ *    Defaults to @NL80211_KEY_RX_TX.
++ *
+  * @__NL80211_KEY_AFTER_LAST: internal
+  * @NL80211_KEY_MAX: highest key attribute
+  */
+@@ -4370,6 +4465,7 @@ enum nl80211_key_attributes {
+       NL80211_KEY_DEFAULT_MGMT,
+       NL80211_KEY_TYPE,
+       NL80211_KEY_DEFAULT_TYPES,
++      NL80211_KEY_MODE,
+       /* keep last */
+       __NL80211_KEY_AFTER_LAST,
+@@ -5315,6 +5411,21 @@ enum nl80211_feature_flags {
+  *      able to rekey an in-use key correctly. Userspace must not rekey PTK keys
+  *      if this flag is not set. Ignoring this can leak clear text packets and/or
+  *      freeze the connection.
++ * @NL80211_EXT_FEATURE_EXT_KEY_ID: Driver supports "Extended Key ID for
++ *      Individually Addressed Frames" from IEEE802.11-2016.
++ *
++ * @NL80211_EXT_FEATURE_AIRTIME_FAIRNESS: Driver supports getting airtime
++ *    fairness for transmitted packets and has enabled airtime fairness
++ *    scheduling.
++ *
++ * @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_STA_TX_PWR: This driver supports controlling tx power
++ *    to a station.
+  *
+  * @NUM_NL80211_EXT_FEATURES: number of extended features.
+  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
+@@ -5355,6 +5466,11 @@ enum nl80211_ext_feature_index {
+       NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
+       NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
+       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_EXT_KEY_ID,
++      NL80211_EXT_FEATURE_STA_TX_PWR,
+       /* add new features before the definition below */
+       NUM_NL80211_EXT_FEATURES,
+@@ -5606,9 +5722,14 @@ enum nl80211_crit_proto_id {
+  * Used by cfg80211_rx_mgmt()
+  *
+  * @NL80211_RXMGMT_FLAG_ANSWERED: frame was answered by device/driver.
++ * @NL80211_RXMGMT_FLAG_EXTERNAL_AUTH: Host driver intends to offload
++ *    the authentication. Exclusively defined for host drivers that
++ *    advertises the SME functionality but would like the userspace
++ *    to handle certain authentication algorithms (e.g. SAE).
+  */
+ enum nl80211_rxmgmt_flags {
+       NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0,
++      NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1,
+ };
+ /*