From 3e41afda5628b235742b8cec00313e5b1c00bb5c Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 24 Feb 2017 12:17:03 +0100 Subject: [PATCH] iw: sync nl80211.h with mac80211 package Signed-off-by: Felix Fietkau --- .../utils/iw/patches/001-nl80211_h_sync.patch | 294 +++++++++++++++++- 1 file changed, 289 insertions(+), 5 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 5d98281eae..88e47cce82 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -1,21 +1,305 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -1937,6 +1937,9 @@ enum nl80211_commands { +@@ -323,7 +323,7 @@ + * @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. %NL80211_ATTR_MAC can be used to ++ * probe requests at CCK rate or not. %NL80211_ATTR_BSSID 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 +@@ -600,6 +600,20 @@ + * + * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface. + * ++ * @NL80211_CMD_SET_MULTICAST_TO_UNICAST: Configure if this AP should perform ++ * multicast to unicast conversion. When enabled, all multicast packets ++ * with ethertype ARP, IPv4 or IPv6 (possibly within an 802.1Q header) ++ * will be sent out to each station once with the destination (multicast) ++ * MAC address replaced by the station's MAC address. Note that this may ++ * break certain expectations of the receiver, e.g. the ability to drop ++ * unicast IP packets encapsulated in multicast L2 frames, or the ability ++ * to not send destination unreachable messages in such cases. ++ * This can only be toggled per BSS. Configure this on an interface of ++ * type %NL80211_IFTYPE_AP. It applies to all its VLAN interfaces ++ * (%NL80211_IFTYPE_AP_VLAN), except for those in 4addr (WDS) mode. ++ * If %NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED is not present with this ++ * command, the feature is disabled. ++ * + * @NL80211_CMD_JOIN_MESH: Join a mesh. The mesh ID must be given, and initial + * mesh config parameters may be given. + * @NL80211_CMD_LEAVE_MESH: Leave the mesh network -- no special arguments, the +@@ -874,6 +888,12 @@ + * This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and + * %NL80211_ATTR_COOKIE. + * ++ * @NL80211_CMD_UPDATE_CONNECT_PARAMS: Update one or more connect parameters ++ * for subsequent roaming cases if the driver or firmware uses internal ++ * BSS selection. This command can be issued only while connected and it ++ * does not result in a change for the current association. Currently, ++ * only the %NL80211_ATTR_IE data is used and updated with this command. ++ * + * @NL80211_CMD_MAX: highest used command number + * @__NL80211_CMD_AFTER_LAST: internal use + */ +@@ -1069,6 +1089,10 @@ enum nl80211_commands { + NL80211_CMD_CHANGE_NAN_CONFIG, + NL80211_CMD_NAN_MATCH, + ++ NL80211_CMD_SET_MULTICAST_TO_UNICAST, ++ ++ NL80211_CMD_UPDATE_CONNECT_PARAMS, ++ + /* add new commands above here */ + + /* used to define NL80211_CMD_MAX below */ +@@ -1638,8 +1662,16 @@ enum nl80211_commands { + * the connection request from a station. nl80211_connect_failed_reason + * enum has different reasons of connection failure. + * +- * @NL80211_ATTR_SAE_DATA: SAE elements in Authentication frames. This starts +- * with the Authentication transaction sequence number field. ++ * @NL80211_ATTR_AUTH_DATA: Fields and elements in Authentication frames. ++ * This contains the authentication frame body (non-IE and IE data), ++ * excluding the Authentication algorithm number, i.e., starting at the ++ * Authentication transaction sequence number field. It is used with ++ * authentication algorithms that need special fields to be added into ++ * the frames (SAE and FILS). Currently, only the SAE cases use the ++ * initial two fields (Authentication transaction sequence number and ++ * Status code). However, those fields are included in the attribute data ++ * for all authentication algorithms to keep the attribute definition ++ * consistent. + * + * @NL80211_ATTR_VHT_CAPABILITY: VHT Capability information element (from + * association request when used with NL80211_CMD_NEW_STATION) +@@ -1740,7 +1772,9 @@ enum nl80211_commands { + * + * @NL80211_ATTR_OPMODE_NOTIF: Operating mode field from Operating Mode + * Notification Element based on association request when used with +- * %NL80211_CMD_NEW_STATION; u8 attribute. ++ * %NL80211_CMD_NEW_STATION or %NL80211_CMD_SET_STATION (only when ++ * %NL80211_FEATURE_FULL_AP_CLIENT_STATE is supported, or with TDLS); ++ * u8 attribute. + * + * @NL80211_ATTR_VENDOR_ID: The vendor ID, either a 24-bit OUI or, if + * %NL80211_VENDOR_ID_IS_LINUX is set, a special Linux ID (not used yet) +@@ -1788,6 +1822,8 @@ enum nl80211_commands { + * and remove functions. NAN notifications will be sent in unicast to that + * socket. Without this attribute, any socket can add functions and the + * notifications will be sent to the %NL80211_MCGRP_NAN multicast group. ++ * If set during %NL80211_CMD_ASSOCIATE or %NL80211_CMD_CONNECT the ++ * station will deauthenticate when the socket is closed. + * + * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is + * the TDLS link initiator. +@@ -1936,6 +1972,38 @@ enum nl80211_commands { + * attribute. * @NL80211_ATTR_NAN_MATCH: used to report a match. This is a nested attribute. * See &enum nl80211_nan_match_attributes. - * ++ * @NL80211_ATTR_FILS_KEK: KEK for FILS (Re)Association Request/Response frame ++ * protection. ++ * @NL80211_ATTR_FILS_NONCES: Nonces (part of AAD) for FILS (Re)Association ++ * Request/Response frame protection. This attribute contains the 16 octet ++ * STA Nonce followed by 16 octets of AP Nonce. ++ * ++ * @NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED: Indicates whether or not multicast ++ * packets should be send out as unicast to all stations (flag attribute). ++ * ++ * @NL80211_ATTR_BSSID: The BSSID of the AP. Note that %NL80211_ATTR_MAC is also ++ * used in various commands/events for specifying the BSSID. ++ * ++ * @NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI: Relative RSSI threshold by which ++ * other BSSs has to be better or slightly worse than the current ++ * connected BSS so that they get reported to user space. ++ * This will give an opportunity to userspace to consider connecting to ++ * other matching BSSs which have better or slightly worse RSSI than ++ * the current connected BSS by using an offloaded operation to avoid ++ * unnecessary wakeups. ++ * ++ * @NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST: When present the RSSI level for BSSs in ++ * the specified band is to be adjusted before doing ++ * %NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI based comparision to figure out ++ * better BSSs. The attribute value is a packed structure ++ * value as specified by &struct nl80211_bss_select_rssi_adjust. ++ * ++ * @NL80211_ATTR_TIMEOUT_REASON: The reason for which an operation timed out. ++ * u32 attribute with an &enum nl80211_timeout_reason value. This is used, ++ * e.g., with %NL80211_CMD_CONNECT event. ++ * + * @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 -@@ -2336,6 +2339,8 @@ enum nl80211_attrs { +@@ -2195,7 +2263,7 @@ enum nl80211_attrs { + + NL80211_ATTR_CONN_FAILED_REASON, + +- NL80211_ATTR_SAE_DATA, ++ NL80211_ATTR_AUTH_DATA, + + NL80211_ATTR_VHT_CAPABILITY, + +@@ -2336,6 +2404,20 @@ enum nl80211_attrs { NL80211_ATTR_NAN_FUNC, NL80211_ATTR_NAN_MATCH, ++ NL80211_ATTR_FILS_KEK, ++ NL80211_ATTR_FILS_NONCES, ++ ++ NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED, ++ ++ NL80211_ATTR_BSSID, ++ ++ NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI, ++ NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST, ++ ++ NL80211_ATTR_TIMEOUT_REASON, ++ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, +@@ -2347,6 +2429,7 @@ enum nl80211_attrs { + #define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION + #define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG + #define NL80211_ATTR_IFACE_SOCKET_OWNER NL80211_ATTR_SOCKET_OWNER ++#define NL80211_ATTR_SAE_DATA NL80211_ATTR_AUTH_DATA + + /* + * Allow user space programs to use #ifdef on new attributes by defining them +@@ -3027,6 +3110,13 @@ enum nl80211_reg_rule_attr { + * how this API was implemented in the past. Also, due to the same problem, + * the only way to create a matchset with only an RSSI filter (with this + * attribute) is if there's only a single matchset with the RSSI attribute. ++ * @NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI: Flag indicating whether ++ * %NL80211_SCHED_SCAN_MATCH_ATTR_RSSI to be used as absolute RSSI or ++ * relative to current bss's RSSI. ++ * @NL80211_SCHED_SCAN_MATCH_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_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter + * attribute number currently defined + * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use +@@ -3036,6 +3126,8 @@ enum nl80211_sched_scan_match_attr { + + NL80211_SCHED_SCAN_MATCH_ATTR_SSID, + NL80211_SCHED_SCAN_MATCH_ATTR_RSSI, ++ NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI, ++ NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST, + + /* keep last */ + __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST, +@@ -3660,6 +3752,9 @@ enum nl80211_bss_status { + * @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r) + * @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP) + * @NL80211_AUTHTYPE_SAE: Simultaneous authentication of equals ++ * @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key ++ * @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS ++ * @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key + * @__NL80211_AUTHTYPE_NUM: internal + * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm + * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by +@@ -3672,6 +3767,9 @@ enum nl80211_auth_type { + NL80211_AUTHTYPE_FT, + NL80211_AUTHTYPE_NETWORK_EAP, + NL80211_AUTHTYPE_SAE, ++ NL80211_AUTHTYPE_FILS_SK, ++ NL80211_AUTHTYPE_FILS_SK_PFS, ++ NL80211_AUTHTYPE_FILS_PK, + + /* keep last */ + __NL80211_AUTHTYPE_NUM, +@@ -4280,6 +4378,9 @@ enum nl80211_iface_limit_attrs { + * of supported channel widths for radar detection. + * @NL80211_IFACE_COMB_RADAR_DETECT_REGIONS: u32 attribute containing the bitmap + * of supported regulatory regions for radar detection. ++ * @NL80211_IFACE_COMB_BI_MIN_GCD: u32 attribute specifying the minimum GCD of ++ * different beacon intervals supported by all the interface combinations ++ * in this group (if not present, all beacon intervals be identical). + * @NUM_NL80211_IFACE_COMB: number of attributes + * @MAX_NL80211_IFACE_COMB: highest attribute number + * +@@ -4287,8 +4388,8 @@ enum nl80211_iface_limit_attrs { + * limits = [ #{STA} <= 1, #{AP} <= 1 ], matching BI, channels = 1, max = 2 + * => allows an AP and a STA that must match BIs + * +- * numbers = [ #{AP, P2P-GO} <= 8 ], channels = 1, max = 8 +- * => allows 8 of AP/GO ++ * numbers = [ #{AP, P2P-GO} <= 8 ], BI min gcd, channels = 1, max = 8, ++ * => allows 8 of AP/GO that can have BI gcd >= min gcd + * + * numbers = [ #{STA} <= 2 ], channels = 2, max = 2 + * => allows two STAs on different channels +@@ -4314,6 +4415,7 @@ enum nl80211_if_combination_attrs { + NL80211_IFACE_COMB_NUM_CHANNELS, + NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS, + NL80211_IFACE_COMB_RADAR_DETECT_REGIONS, ++ NL80211_IFACE_COMB_BI_MIN_GCD, + + /* keep last */ + NUM_NL80211_IFACE_COMB, +@@ -4634,6 +4736,15 @@ enum nl80211_feature_flags { + * configuration (AP/mesh) with HT rates. + * @NL80211_EXT_FEATURE_BEACON_RATE_VHT: Driver supports beacon rate + * configuration (AP/mesh) with VHT rates. ++ * @NL80211_EXT_FEATURE_FILS_STA: This driver supports Fast Initial Link Setup ++ * with user space SME (NL80211_CMD_AUTHENTICATE) in station mode. ++ * @NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA: This driver supports randomized TA ++ * in @NL80211_CMD_FRAME while not associated. ++ * @NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED: This driver supports ++ * randomized TA in @NL80211_CMD_FRAME while associated. ++ * @NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI: The driver supports sched_scan ++ * for reporting BSSs with better RSSI than the current connected BSS ++ * (%NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI). + * + * @NUM_NL80211_EXT_FEATURES: number of extended features. + * @MAX_NL80211_EXT_FEATURES: highest extended feature index. +@@ -4648,6 +4759,10 @@ enum nl80211_ext_feature_index { + NL80211_EXT_FEATURE_BEACON_RATE_LEGACY, + NL80211_EXT_FEATURE_BEACON_RATE_HT, + NL80211_EXT_FEATURE_BEACON_RATE_VHT, ++ NL80211_EXT_FEATURE_FILS_STA, ++ NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA, ++ NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED, ++ NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI, + + /* add new features before the definition below */ + NUM_NL80211_EXT_FEATURES, +@@ -4687,6 +4802,21 @@ enum nl80211_connect_failed_reason { + }; + + /** ++ * enum nl80211_timeout_reason - timeout reasons ++ * ++ * @NL80211_TIMEOUT_UNSPECIFIED: Timeout reason unspecified. ++ * @NL80211_TIMEOUT_SCAN: Scan (AP discovery) timed out. ++ * @NL80211_TIMEOUT_AUTH: Authentication timed out. ++ * @NL80211_TIMEOUT_ASSOC: Association timed out. ++ */ ++enum nl80211_timeout_reason { ++ NL80211_TIMEOUT_UNSPECIFIED, ++ NL80211_TIMEOUT_SCAN, ++ NL80211_TIMEOUT_AUTH, ++ NL80211_TIMEOUT_ASSOC, ++}; ++ ++/** + * enum nl80211_scan_flags - scan request control flags + * + * Scan request control flags are used to control the handling +@@ -4900,8 +5030,9 @@ enum nl80211_sched_scan_plan { + /** + * 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. ++ * @band: band of BSS that must match for RSSI value adjustment. The value ++ * of this field is according to &enum nl80211_band. ++ * @delta: value used to adjust the RSSI value of matching BSS in dB. + */ + struct nl80211_bss_select_rssi_adjust { + __u8 band;