mac80211: update to wireless-testing 2016-05-12
[openwrt/staging/mkresin.git] / package / network / utils / iw / patches / 001-nl80211_h_sync.patch
index 7de225859b71c2bb7627503b676aa7f2a122ccd9..e5ea8f7c8ad8eeb73f793ad6c536bb31d76d6868 100644 (file)
@@ -8,7 +8,17 @@
   *
   * Permission to use, copy, modify, and/or distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
-@@ -328,7 +329,15 @@
+@@ -321,14 +322,24 @@
+  * @NL80211_CMD_GET_SCAN: get scan results
+  * @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters
+  *    %NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
+- *    probe requests at CCK rate or not.
++ *    probe requests at CCK rate or not. %NL80211_ATTR_MAC can be used to
++ *    specify a BSSID to scan for; if not included, the wildcard BSSID will
++ *    be used.
+  * @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to
+  *    NL80211_CMD_GET_SCAN and on the "scan" multicast group)
+  * @NL80211_CMD_SCAN_ABORTED: scan was aborted, for unspecified reasons,
   *    partial scan results may be available
   *
   * @NL80211_CMD_START_SCHED_SCAN: start a scheduled scan at certain
   *    Like with normal scans, if SSIDs (%NL80211_ATTR_SCAN_SSIDS)
   *    are passed, they are used in the probe requests.  For
   *    broadcast, a broadcast SSID must be passed (ie. an empty
-@@ -1761,6 +1770,22 @@ enum nl80211_commands {
+@@ -418,7 +429,11 @@
+  * @NL80211_CMD_ASSOCIATE: association request and notification; like
+  *    NL80211_CMD_AUTHENTICATE but for Association and Reassociation
+  *    (similar to MLME-ASSOCIATE.request, MLME-REASSOCIATE.request,
+- *    MLME-ASSOCIATE.confirm or MLME-REASSOCIATE.confirm primitives).
++ *    MLME-ASSOCIATE.confirm or MLME-REASSOCIATE.confirm primitives). The
++ *    %NL80211_ATTR_PREV_BSSID attribute is used to specify whether the
++ *    request is for the initial association to an ESS (that attribute not
++ *    included) or for reassociation within the ESS (that attribute is
++ *    included).
+  * @NL80211_CMD_DEAUTHENTICATE: deauthentication request and notification; like
+  *    NL80211_CMD_AUTHENTICATE but for Deauthentication frames (similar to
+  *    MLME-DEAUTHENTICATION.request and MLME-DEAUTHENTICATE.indication
+@@ -468,6 +483,9 @@
+  *    set of BSSID,frequency parameters is used (i.e., either the enforcing
+  *    %NL80211_ATTR_MAC,%NL80211_ATTR_WIPHY_FREQ or the less strict
+  *    %NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT).
++ *    %NL80211_ATTR_PREV_BSSID can be used to request a reassociation within
++ *    the ESS in case the device is already associated and an association with
++ *    a different BSS is desired.
+  *    Background scan period can optionally be
+  *    specified in %NL80211_ATTR_BG_SCAN_PERIOD,
+  *    if not specified default background scan configuration
+@@ -811,6 +829,10 @@
+  *    as an event to indicate changes for devices with wiphy-specific regdom
+  *    management.
+  *
++ * @NL80211_CMD_ABORT_SCAN: Stop an ongoing scan. Returns -ENOENT if a scan is
++ *    not running. The driver indicates the status of the scan through
++ *    cfg80211_scan_done().
++ *
+  * @NL80211_CMD_MAX: highest used command number
+  * @__NL80211_CMD_AFTER_LAST: internal use
+  */
+@@ -997,6 +1019,8 @@ enum nl80211_commands {
+       NL80211_CMD_WIPHY_REG_CHANGE,
++      NL80211_CMD_ABORT_SCAN,
++
+       /* add new commands above here */
+       /* used to define NL80211_CMD_MAX below */
+@@ -1270,8 +1294,11 @@ enum nl80211_commands {
+  * @NL80211_ATTR_RESP_IE: (Re)association response information elements as
+  *    sent by peer, for ROAM and successful CONNECT events.
+  *
+- * @NL80211_ATTR_PREV_BSSID: previous BSSID, to be used by in ASSOCIATE
+- *    commands to specify using a reassociate frame
++ * @NL80211_ATTR_PREV_BSSID: previous BSSID, to be used in ASSOCIATE and CONNECT
++ *    commands to specify a request to reassociate within an ESS, i.e., to use
++ *    Reassociate Request frame (with the value of this attribute in the
++ *    Current AP address field) instead of Association Request frame which is
++ *    used for the initial association to an ESS.
+  *
+  * @NL80211_ATTR_KEY: key information in a nested attribute with
+  *    %NL80211_KEY_* sub-attributes
+@@ -1712,6 +1739,8 @@ enum nl80211_commands {
+  *    underlying device supports these minimal RRM features:
+  *            %NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES,
+  *            %NL80211_FEATURE_QUIET,
++ *    Or, if global RRM is supported, see:
++ *            %NL80211_EXT_FEATURE_RRM
+  *    If this flag is used, driver must add the Power Capabilities IE to the
+  *    association request. In addition, it must also set the RRM capability
+  *    flag in the association request's Capability Info field.
+@@ -1755,12 +1784,44 @@ enum nl80211_commands {
+  *    over all channels.
+  *
+  * @NL80211_ATTR_SCHED_SCAN_DELAY: delay before the first cycle of a
+- *    scheduled scan (or a WoWLAN net-detect scan) is started, u32
+- *    in seconds.
++ *    scheduled scan is started.  Or the delay before a WoWLAN
++ *    net-detect scan is started, counting from the moment the
++ *    system is suspended.  This value is a u32, in seconds.
   * @NL80211_ATTR_REG_INDOOR: flag attribute, if set indicates that the device
   *      is operating in an indoor environment.
   *
 + *    thus it must not specify the number of iterations, only the interval
 + *    between scans. The scan plans are executed sequentially.
 + *    Each scan plan is a nested attribute of &enum nl80211_sched_scan_plan.
++ * @NL80211_ATTR_PBSS: flag attribute. If set it means operate
++ *    in a PBSS. Specified in %NL80211_CMD_CONNECT to request
++ *    connecting to a PCP, and in %NL80211_CMD_START_AP to start
++ *    a PCP instead of AP. Relevant for DMG networks only.
++ * @NL80211_ATTR_BSS_SELECT: nested attribute for driver supporting the
++ *    BSS selection feature. When used with %NL80211_CMD_GET_WIPHY it contains
++ *    attributes according &enum nl80211_bss_select_attr to indicate what
++ *    BSS selection behaviours are supported. When used with %NL80211_CMD_CONNECT
++ *    it contains the behaviour-specific attribute containing the parameters for
++ *    BSS selection to be done by driver and/or firmware.
++ *
++ * @NL80211_ATTR_STA_SUPPORT_P2P_PS: whether P2P PS mechanism supported
++ *    or not. u8, one of the values of &enum nl80211_sta_p2p_ps_status
++ *
++ * @NL80211_ATTR_PAD: attribute used for padding for 64-bit alignment
 + *
 + * @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
-@@ -2130,6 +2155,13 @@ enum nl80211_attrs {
+@@ -2130,6 +2191,21 @@ enum nl80211_attrs {
  
        NL80211_ATTR_REG_INDOOR,
  
 +      NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS,
 +      NL80211_ATTR_SCHED_SCAN_PLANS,
 +
++      NL80211_ATTR_PBSS,
++
++      NL80211_ATTR_BSS_SELECT,
++
++      NL80211_ATTR_STA_SUPPORT_P2P_PS,
++
++      NL80211_ATTR_PAD,
++
 +      NL80211_ATTR_WIPHY_ANTENNA_GAIN,
 +
        /* add attributes here, update the policy in nl80211.c */
  
        __NL80211_ATTR_AFTER_LAST,
-@@ -3364,6 +3396,9 @@ enum nl80211_bss_scan_width {
+@@ -2273,6 +2349,20 @@ enum nl80211_sta_flags {
+       NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1
+ };
++/**
++ * enum nl80211_sta_p2p_ps_status - station support of P2P PS
++ *
++ * @NL80211_P2P_PS_UNSUPPORTED: station doesn't support P2P PS mechanism
++ * @@NL80211_P2P_PS_SUPPORTED: station supports P2P PS mechanism
++ * @NUM_NL80211_P2P_PS_STATUS: number of values
++ */
++enum nl80211_sta_p2p_ps_status {
++      NL80211_P2P_PS_UNSUPPORTED = 0,
++      NL80211_P2P_PS_SUPPORTED,
++
++      NUM_NL80211_P2P_PS_STATUS,
++};
++
+ #define NL80211_STA_FLAG_MAX_OLD_API  NL80211_STA_FLAG_TDLS_PEER
+ /**
+@@ -2430,6 +2520,9 @@ enum nl80211_sta_bss_param {
+  *    TID+1 and the special TID 16 (i.e. value 17) is used for non-QoS frames;
+  *    each one of those is again nested with &enum nl80211_tid_stats
+  *    attributes carrying the actual values.
++ * @NL80211_STA_INFO_RX_DURATION: aggregate PPDU duration for all frames
++ *    received from the station (u64, usec)
++ * @NL80211_STA_INFO_PAD: attribute used for padding for 64-bit alignment
+  * @__NL80211_STA_INFO_AFTER_LAST: internal
+  * @NL80211_STA_INFO_MAX: highest possible station info attribute
+  */
+@@ -2466,6 +2559,8 @@ enum nl80211_sta_info {
+       NL80211_STA_INFO_BEACON_RX,
+       NL80211_STA_INFO_BEACON_SIGNAL_AVG,
+       NL80211_STA_INFO_TID_STATS,
++      NL80211_STA_INFO_RX_DURATION,
++      NL80211_STA_INFO_PAD,
+       /* keep last */
+       __NL80211_STA_INFO_AFTER_LAST,
+@@ -2482,6 +2577,7 @@ enum nl80211_sta_info {
+  *    transmitted MSDUs (not counting the first attempt; u64)
+  * @NL80211_TID_STATS_TX_MSDU_FAILED: number of failed transmitted
+  *    MSDUs (u64)
++ * @NL80211_TID_STATS_PAD: attribute used for padding for 64-bit alignment
+  * @NUM_NL80211_TID_STATS: number of attributes here
+  * @NL80211_TID_STATS_MAX: highest numbered attribute here
+  */
+@@ -2491,6 +2587,7 @@ enum nl80211_tid_stats {
+       NL80211_TID_STATS_TX_MSDU,
+       NL80211_TID_STATS_TX_MSDU_RETRIES,
+       NL80211_TID_STATS_TX_MSDU_FAILED,
++      NL80211_TID_STATS_PAD,
+       /* keep last */
+       NUM_NL80211_TID_STATS,
+@@ -2927,6 +3024,7 @@ enum nl80211_user_reg_hint_type {
+  *    transmitting data (on channel or globally)
+  * @NL80211_SURVEY_INFO_TIME_SCAN: time the radio spent for scan
+  *    (on this channel or globally)
++ * @NL80211_SURVEY_INFO_PAD: attribute used for padding for 64-bit alignment
+  * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
+  *    currently defined
+  * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
+@@ -2942,6 +3040,7 @@ enum nl80211_survey_info {
+       NL80211_SURVEY_INFO_TIME_RX,
+       NL80211_SURVEY_INFO_TIME_TX,
+       NL80211_SURVEY_INFO_TIME_SCAN,
++      NL80211_SURVEY_INFO_PAD,
+       /* keep last */
+       __NL80211_SURVEY_INFO_AFTER_LAST,
+@@ -3364,6 +3463,10 @@ enum nl80211_bss_scan_width {
   *    (not present if no beacon frame has been received yet)
   * @NL80211_BSS_PRESP_DATA: the data in @NL80211_BSS_INFORMATION_ELEMENTS and
   *    @NL80211_BSS_TSF is known to be from a probe response (flag attribute)
 + * @NL80211_BSS_LAST_SEEN_BOOTTIME: CLOCK_BOOTTIME timestamp when this entry
 + *    was last updated by a received frame. The value is expected to be
 + *    accurate to about 10ms. (u64, nanoseconds)
++ * @NL80211_BSS_PAD: attribute used for padding for 64-bit alignment
   * @__NL80211_BSS_AFTER_LAST: internal
   * @NL80211_BSS_MAX: highest BSS attribute
   */
-@@ -3383,6 +3418,7 @@ enum nl80211_bss {
+@@ -3383,6 +3486,8 @@ enum nl80211_bss {
        NL80211_BSS_CHAN_WIDTH,
        NL80211_BSS_BEACON_TSF,
        NL80211_BSS_PRESP_DATA,
 +      NL80211_BSS_LAST_SEEN_BOOTTIME,
++      NL80211_BSS_PAD,
  
        /* keep last */
        __NL80211_BSS_AFTER_LAST,
-@@ -4589,4 +4625,28 @@ enum nl80211_tdls_peer_capability {
+@@ -3568,11 +3673,15 @@ enum nl80211_txrate_gi {
+  * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
+  * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
+  * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz)
++ * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
++ *    since newer kernel versions may support more bands
+  */
+ enum nl80211_band {
+       NL80211_BAND_2GHZ,
+       NL80211_BAND_5GHZ,
+       NL80211_BAND_60GHZ,
++
++      NUM_NL80211_BANDS,
+ };
+ /**
+@@ -4358,12 +4467,18 @@ enum nl80211_feature_flags {
+ /**
+  * enum nl80211_ext_feature_index - bit index of extended features.
+  * @NL80211_EXT_FEATURE_VHT_IBSS: This driver supports IBSS with VHT datarates.
++ * @NL80211_EXT_FEATURE_RRM: This driver supports RRM. When featured, user can
++ *    can 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.
+  *
+  * @NUM_NL80211_EXT_FEATURES: number of extended features.
+  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
+  */
+ enum nl80211_ext_feature_index {
+       NL80211_EXT_FEATURE_VHT_IBSS,
++      NL80211_EXT_FEATURE_RRM,
+       /* add new features before the definition below */
+       NUM_NL80211_EXT_FEATURES,
+@@ -4589,4 +4704,72 @@ enum nl80211_tdls_peer_capability {
        NL80211_TDLS_PEER_WMM = 1<<2,
  };
  
 +      NL80211_SCHED_SCAN_PLAN_MAX =
 +              __NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1
 +};
++
++/**
++ * struct nl80211_bss_select_rssi_adjust - RSSI adjustment parameters.
++ *
++ * @band: band of BSS that must match for RSSI value adjustment.
++ * @delta: value used to adjust the RSSI value of matching BSS.
++ */
++struct nl80211_bss_select_rssi_adjust {
++      __u8 band;
++      __s8 delta;
++} __attribute__((packed));
++
++/**
++ * enum nl80211_bss_select_attr - attributes for bss selection.
++ *
++ * @__NL80211_BSS_SELECT_ATTR_INVALID: reserved.
++ * @NL80211_BSS_SELECT_ATTR_RSSI: Flag indicating only RSSI-based BSS selection
++ *    is requested.
++ * @NL80211_BSS_SELECT_ATTR_BAND_PREF: attribute indicating BSS
++ *    selection should be done such that the specified band is preferred.
++ *    When there are multiple BSS-es in the preferred band, the driver
++ *    shall use RSSI-based BSS selection as a second step. The value of
++ *    this attribute is according to &enum nl80211_band (u32).
++ * @NL80211_BSS_SELECT_ATTR_RSSI_ADJUST: When present the RSSI level for
++ *    BSS-es in the specified band is to be adjusted before doing
++ *    RSSI-based BSS selection. The attribute value is a packed structure
++ *    value as specified by &struct nl80211_bss_select_rssi_adjust.
++ * @NL80211_BSS_SELECT_ATTR_MAX: highest bss select attribute number.
++ * @__NL80211_BSS_SELECT_ATTR_AFTER_LAST: internal use.
++ *
++ * One and only one of these attributes are found within %NL80211_ATTR_BSS_SELECT
++ * for %NL80211_CMD_CONNECT. It specifies the required BSS selection behaviour
++ * which the driver shall use.
++ */
++enum nl80211_bss_select_attr {
++      __NL80211_BSS_SELECT_ATTR_INVALID,
++      NL80211_BSS_SELECT_ATTR_RSSI,
++      NL80211_BSS_SELECT_ATTR_BAND_PREF,
++      NL80211_BSS_SELECT_ATTR_RSSI_ADJUST,
++
++      /* keep last */
++      __NL80211_BSS_SELECT_ATTR_AFTER_LAST,
++      NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
++};
 +
  #endif /* __LINUX_NL80211_H */