diff options
Diffstat (limited to 'package/network')
-rw-r--r-- | package/network/utils/iw/patches/001-nl80211_h_sync.patch | 273 |
1 files changed, 267 insertions, 6 deletions
diff --git a/package/network/utils/iw/patches/001-nl80211_h_sync.patch b/package/network/utils/iw/patches/001-nl80211_h_sync.patch index 7de225859b..e5ea8f7c8a 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -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 @@ -25,7 +35,82 @@ * 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. * @@ -41,6 +126,21 @@ + * 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. @@ -48,7 +148,7 @@ * @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, @@ -57,30 +157,147 @@ + 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, }; @@ -108,4 +325,48 @@ + __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 */ |