X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fnetwork%2Futils%2Fiw%2Fpatches%2F001-nl80211_h_sync.patch;h=25ec1263ad9ae7e50203ddebcc7ae21f2553f475;hb=a8f63a0717f553e0a1b37ee9212fc4cb2a801426;hp=afa55064e5b7641177542eeed7f6703877c127c7;hpb=29de31f8ba243ab9cfe5240e9ac9de2814892a27;p=openwrt%2Fstaging%2Flynxis.git 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 afa55064e5..25ec1263ad 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -1,100 +1,662 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -1761,6 +1761,9 @@ enum nl80211_commands { - * @NL80211_ATTR_REG_INDOOR: flag attribute, if set indicates that the device - * is operating in an indoor environment. +@@ -10,7 +10,7 @@ + * Copyright 2008, 2009 Luis R. Rodriguez + * Copyright 2008 Jouni Malinen + * Copyright 2008 Colin McCabe +- * Copyright 2015 Intel Deutschland GmbH ++ * Copyright 2015-2017 Intel Deutschland GmbH * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above +@@ -173,6 +173,65 @@ + */ + + /** ++ * DOC: WPA/WPA2 EAPOL handshake offload ++ * ++ * By setting @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK flag drivers ++ * can indicate they support offloading EAPOL handshakes for WPA/WPA2 ++ * preshared key authentication. In %NL80211_CMD_CONNECT the preshared ++ * key should be specified using %NL80211_ATTR_PMK. Drivers supporting ++ * this offload may reject the %NL80211_CMD_CONNECT when no preshared ++ * key material is provided, for example when that driver does not ++ * support setting the temporal keys through %CMD_NEW_KEY. ++ * ++ * Similarly @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X flag can be ++ * set by drivers indicating offload support of the PTK/GTK EAPOL ++ * handshakes during 802.1X authentication. In order to use the offload ++ * the %NL80211_CMD_CONNECT should have %NL80211_ATTR_WANT_1X_4WAY_HS ++ * attribute flag. Drivers supporting this offload may reject the ++ * %NL80211_CMD_CONNECT when the attribute flag is not present. ++ * ++ * For 802.1X the PMK or PMK-R0 are set by providing %NL80211_ATTR_PMK ++ * using %NL80211_CMD_SET_PMK. For offloaded FT support also ++ * %NL80211_ATTR_PMKR0_NAME must be provided. ++ */ ++ ++/** ++ * DOC: FILS shared key authentication offload ++ * ++ * FILS shared key authentication offload can be advertized 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 ++ * eventually do a key derivation as per IEEE 802.11ai. The below additional ++ * parameters should be given to driver in %NL80211_CMD_CONNECT. ++ * %NL80211_ATTR_FILS_ERP_USERNAME - used to construct keyname_nai ++ * %NL80211_ATTR_FILS_ERP_REALM - used to construct keyname_nai ++ * %NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM - used to construct erp message ++ * %NL80211_ATTR_FILS_ERP_RRK - used to generate the rIK and rMSK ++ * rIK should be used to generate an authentication tag on the ERP message and ++ * rMSK should be used to derive a PMKSA. ++ * rIK, rMSK should be generated and keyname_nai, sequence number should be used ++ * as specified in IETF RFC 6696. ++ * ++ * When FILS shared key authentication is completed, driver needs to provide the ++ * below additional parameters to userspace. ++ * %NL80211_ATTR_FILS_KEK - used for key renewal ++ * %NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM - used in further EAP-RP exchanges ++ * %NL80211_ATTR_PMKID - used to identify the PMKSA used/generated ++ * %Nl80211_ATTR_PMK - used to update PMKSA cache in userspace ++ * 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 ++ * 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 ++ * on FILS cache identifier. Additionally %NL80211_ATTR_PMK is used with ++ * %NL80211_SET_PMKSA to specify the PMK corresponding to a PMKSA for driver to ++ * use in a FILS shared key connection with PMKSA caching. ++ */ ++ ++/** + * enum nl80211_commands - supported nl80211 commands + * + * @NL80211_CMD_UNSPEC: unspecified command to catch errors +@@ -323,7 +382,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 +@@ -351,7 +410,9 @@ + * are used. Extra IEs can also be passed from the userspace by + * using the %NL80211_ATTR_IE attribute. The first cycle of the + * scheduled scan can be delayed by %NL80211_ATTR_SCHED_SCAN_DELAY +- * is supplied. ++ * is supplied. If the device supports multiple concurrent scheduled ++ * scans, it will allow such when the caller provides the flag attribute ++ * %NL80211_ATTR_SCHED_SCAN_MULTI to indicate user-space support for it. + * @NL80211_CMD_STOP_SCHED_SCAN: stop a scheduled scan. Returns -ENOENT if + * scheduled scan is not running. The caller may assume that as soon + * as the call returns, it is safe to start a new scheduled scan again. +@@ -370,10 +431,18 @@ + * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to + * NL80211_CMD_GET_SURVEY and on the "scan" multicast group) + * +- * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry, using %NL80211_ATTR_MAC +- * (for the BSSID) and %NL80211_ATTR_PMKID. ++ * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry using %NL80211_ATTR_MAC ++ * (for the BSSID), %NL80211_ATTR_PMKID, and optionally %NL80211_ATTR_PMK ++ * (PMK is used for PTKSA derivation in case of FILS shared key offload) or ++ * 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 ++ * ESS. + * @NL80211_CMD_DEL_PMKSA: Delete a PMKSA cache entry, using %NL80211_ATTR_MAC +- * (for the BSSID) and %NL80211_ATTR_PMKID. ++ * (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. + * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries. + * + * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain +@@ -500,8 +569,13 @@ + * authentication/association or not receiving a response from the AP. + * Non-zero %NL80211_ATTR_STATUS_CODE value is indicated in that case as + * well to remain backwards compatible. +- * @NL80211_CMD_ROAM: request that the card roam (currently not implemented), +- * sent as an event when the card/driver roamed by itself. ++ * @NL80211_CMD_ROAM: notifcation indicating the card/driver roamed by itself. ++ * When the driver roamed in a network that requires 802.1X authentication, ++ * %NL80211_ATTR_PORT_AUTHORIZED should be set if the 802.1X authentication ++ * was done by the driver or if roaming was done using Fast Transition ++ * protocol (in which case 802.1X authentication is not needed). If ++ * %NL80211_ATTR_PORT_AUTHORIZED is not set, user space is responsible for ++ * the 802.1X authentication. + * @NL80211_CMD_DISCONNECT: drop a given connection; also used to notify + * userspace that a connection was dropped by the AP or due to other + * reasons, for this the %NL80211_ATTR_DISCONNECTED_BY_AP and +@@ -600,6 +674,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 +@@ -840,12 +928,15 @@ + * cfg80211_scan_done(). + * + * @NL80211_CMD_START_NAN: Start NAN operation, identified by its +- * %NL80211_ATTR_WDEV interface. This interface must have been previously +- * created with %NL80211_CMD_NEW_INTERFACE. After it has been started, the +- * NAN interface will create or join a cluster. This command must have a +- * valid %NL80211_ATTR_NAN_MASTER_PREF attribute and optional +- * %NL80211_ATTR_NAN_DUAL attributes. +- * After this command NAN functions can be added. ++ * %NL80211_ATTR_WDEV interface. This interface must have been ++ * previously created with %NL80211_CMD_NEW_INTERFACE. After it ++ * has been started, the NAN interface will create or join a ++ * cluster. This command must have a valid ++ * %NL80211_ATTR_NAN_MASTER_PREF attribute and optional ++ * %NL80211_ATTR_BANDS attributes. If %NL80211_ATTR_BANDS is ++ * omitted or set to 0, it means don't-care and the device will ++ * decide what to use. After this command NAN functions can be ++ * added. + * @NL80211_CMD_STOP_NAN: Stop the NAN operation, identified by + * its %NL80211_ATTR_WDEV interface. + * @NL80211_CMD_ADD_NAN_FUNCTION: Add a NAN function. The function is defined +@@ -866,14 +957,32 @@ + * This command is also used as a notification sent when a NAN function is + * terminated. This will contain a %NL80211_ATTR_NAN_FUNC_INST_ID + * and %NL80211_ATTR_COOKIE attributes. +- * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN configuration. NAN +- * must be operational (%NL80211_CMD_START_NAN was executed). +- * It must contain at least one of the following attributes: +- * %NL80211_ATTR_NAN_MASTER_PREF, %NL80211_ATTR_NAN_DUAL. ++ * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN ++ * configuration. NAN must be operational (%NL80211_CMD_START_NAN ++ * was executed). It must contain at least one of the following ++ * attributes: %NL80211_ATTR_NAN_MASTER_PREF, ++ * %NL80211_ATTR_BANDS. If %NL80211_ATTR_BANDS is omitted, the ++ * current configuration is not changed. If it is present but ++ * set to zero, the configuration is changed to don't-care ++ * (i.e. the device can decide what to do). + * @NL80211_CMD_NAN_FUNC_MATCH: Notification sent when a match is reported. + * 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_SET_PMK: For offloaded 4-Way handshake, set the PMK or PMK-R0 ++ * for the given authenticator address (specified with &NL80211_ATTR_MAC). ++ * When &NL80211_ATTR_PMKR0_NAME is set, &NL80211_ATTR_PMK specifies the ++ * PMK-R0, otherwise it specifies the PMK. ++ * @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_MAX: highest used command number + * @__NL80211_CMD_AFTER_LAST: internal use + */ +@@ -1069,6 +1178,13 @@ enum nl80211_commands { + NL80211_CMD_CHANGE_NAN_CONFIG, + NL80211_CMD_NAN_MATCH, + ++ NL80211_CMD_SET_MULTICAST_TO_UNICAST, ++ ++ NL80211_CMD_UPDATE_CONNECT_PARAMS, ++ ++ NL80211_CMD_SET_PMK, ++ NL80211_CMD_DEL_PMK, ++ + /* add new commands above here */ + + /* used to define NL80211_CMD_MAX below */ +@@ -1638,8 +1754,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 +1864,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) +@@ -1783,11 +1909,12 @@ enum nl80211_commands { + * that configured the indoor setting, and the indoor operation would be + * cleared when the socket is closed. + * If set during NAN interface creation, the interface will be destroyed +- * if the socket is closed just like any other interface. Moreover, only +- * the netlink socket that created the interface will be allowed to add +- * 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 the socket is closed just like any other interface. Moreover, NAN ++ * notifications will be sent in unicast to that socket. Without this ++ * attribute, 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. +@@ -1927,15 +2054,93 @@ enum nl80211_commands { + * %NL80211_CMD_CHANGE_NAN_CONFIG. Its type is u8 and it can't be 0. + * Also, values 1 and 255 are reserved for certification purposes and + * should not be used during a normal device operation. +- * @NL80211_ATTR_NAN_DUAL: NAN dual band operation config (see +- * &enum nl80211_nan_dual_band_conf). This attribute is used with +- * %NL80211_CMD_START_NAN and optionally with +- * %NL80211_CMD_CHANGE_NAN_CONFIG. ++ * @NL80211_ATTR_BANDS: operating bands configuration. This is a u32 ++ * bitmask of BIT(NL80211_BAND_*) as described in %enum ++ * nl80211_band. For instance, for NL80211_BAND_2GHZ, bit 0 ++ * would be set. This attribute is used with ++ * %NL80211_CMD_START_NAN and %NL80211_CMD_CHANGE_NAN_CONFIG, and ++ * it is optional. If no bands are set, it means don't-care and ++ * the device will decide what to use. + * @NL80211_ATTR_NAN_FUNC: a function that can be added to NAN. See + * &enum nl80211_nan_func_attributes for description of this nested + * 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_FILS_ERP_USERNAME: EAP Re-authentication Protocol (ERP) ++ * username part of NAI used to refer keys rRK and rIK. This is used with ++ * %NL80211_CMD_CONNECT. ++ * ++ * @NL80211_ATTR_FILS_ERP_REALM: EAP Re-authentication Protocol (ERP) realm part ++ * of NAI specifying the domain name of the ER server. This is used with ++ * %NL80211_CMD_CONNECT. ++ * ++ * @NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM: Unsigned 16-bit ERP next sequence number ++ * to use in ERP messages. This is used in generating the FILS wrapped data ++ * for FILS authentication and is used with %NL80211_CMD_CONNECT. ++ * ++ * @NL80211_ATTR_FILS_ERP_RRK: ERP re-authentication Root Key (rRK) for the ++ * NAI specified by %NL80211_ATTR_FILS_ERP_USERNAME and ++ * %NL80211_ATTR_FILS_ERP_REALM. This is used for generating rIK and rMSK ++ * 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 ++ * identifying the scope of PMKSAs. This is used with ++ * @NL80211_CMD_SET_PMKSA and @NL80211_CMD_DEL_PMKSA. ++ * ++ * @NL80211_ATTR_PMK: attribute for passing PMK key material. Used with ++ * %NL80211_CMD_SET_PMKSA for the PMKSA identified by %NL80211_ATTR_PMKID. ++ * For %NL80211_CMD_CONNECT it is used to provide PSK for offloading 4-way ++ * handshake for WPA/WPA2-PSK networks. For 802.1X authentication it is ++ * used with %NL80211_CMD_SET_PMK. For offloaded FT support this attribute ++ * specifies the PMK-R0 if NL80211_ATTR_PMKR0_NAME is included as well. ++ * ++ * @NL80211_ATTR_SCHED_SCAN_MULTI: flag attribute which user-space shall use to ++ * indicate that it supports multiple active scheduled scan requests. ++ * @NL80211_ATTR_SCHED_SCAN_MAX_REQS: indicates maximum number of scheduled ++ * scan request that may be active for the device (u32). ++ * ++ * @NL80211_ATTR_WANT_1X_4WAY_HS: flag attribute which user-space can include ++ * in %NL80211_CMD_CONNECT to indicate that for 802.1X authentication it ++ * wants to use the supported offload of the 4-way handshake. ++ * @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT. ++ * @NL80211_ATTR_PORT_AUTHORIZED: flag attribute used in %NL80211_CMD_ROAMED ++ * notification indicating that that 802.1X authentication was done by ++ * the driver or is not needed (because roaming used the Fast Transition ++ * protocol). ++ * + * @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 +2133,8 @@ enum nl80211_attrs { +@@ -2195,7 +2400,7 @@ enum nl80211_attrs { - NL80211_ATTR_REG_INDOOR, + NL80211_ATTR_CONN_FAILED_REASON, +- NL80211_ATTR_SAE_DATA, ++ NL80211_ATTR_AUTH_DATA, + + NL80211_ATTR_VHT_CAPABILITY, + +@@ -2332,10 +2537,39 @@ enum nl80211_attrs { + NL80211_ATTR_MESH_PEER_AID, + + NL80211_ATTR_NAN_MASTER_PREF, +- NL80211_ATTR_NAN_DUAL, ++ NL80211_ATTR_BANDS, + 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_FILS_ERP_USERNAME, ++ NL80211_ATTR_FILS_ERP_REALM, ++ NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM, ++ NL80211_ATTR_FILS_ERP_RRK, ++ NL80211_ATTR_FILS_CACHE_ID, ++ ++ NL80211_ATTR_PMK, ++ ++ NL80211_ATTR_SCHED_SCAN_MULTI, ++ NL80211_ATTR_SCHED_SCAN_MAX_REQS, ++ ++ NL80211_ATTR_WANT_1X_4WAY_HS, ++ NL80211_ATTR_PMKR0_NAME, ++ NL80211_ATTR_PORT_AUTHORIZED, ++ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, -@@ -2620,16 +2625,17 @@ enum nl80211_band_attr { - * an indoor surroundings, i.e., it is connected to AC power (and not - * through portable DC inverters) or is under the control of a master - * that is acting as an AP and is connected to AC power. -- * @NL80211_FREQUENCY_ATTR_GO_CONCURRENT: GO operation is allowed on this -+ * @NL80211_FREQUENCY_ATTR_IR_CONCURRENT: IR operation is allowed on this - * channel if it's connected concurrently to a BSS on the same channel on - * the 2 GHz band or to a channel in the same UNII band (on the 5 GHz -- * band), and IEEE80211_CHAN_RADAR is not set. Instantiating a GO on a -- * channel that has the GO_CONCURRENT attribute set can be done when there -- * is a clear assessment that the device is operating under the guidance of -- * an authorized master, i.e., setting up a GO while the device is also -- * connected to an AP with DFS and radar detection on the UNII band (it is -- * up to user-space, i.e., wpa_supplicant to perform the required -- * verifications) -+ * band), and IEEE80211_CHAN_RADAR is not set. Instantiating a GO or TDLS -+ * off-channel on a channel that has the IR_CONCURRENT attribute set can be -+ * done when there is a clear assessment that the device is operating under -+ * the guidance of an authorized master, i.e., setting up a GO or TDLS -+ * off-channel while the device is also connected to an AP with DFS and -+ * radar detection on the UNII band (it is up to user-space, i.e., -+ * wpa_supplicant to perform the required verifications). Using this -+ * attribute for IR is disallowed for master interfaces (IBSS, AP). - * @NL80211_FREQUENCY_ATTR_NO_20MHZ: 20 MHz operation is not allowed - * on this channel in current regulatory domain. - * @NL80211_FREQUENCY_ATTR_NO_10MHZ: 10 MHz operation is not allowed -@@ -2641,7 +2647,7 @@ enum nl80211_band_attr { - * See https://apps.fcc.gov/eas/comments/GetPublishedDocument.html?id=327&tn=528122 - * for more information on the FCC description of the relaxations allowed - * by NL80211_FREQUENCY_ATTR_INDOOR_ONLY and -- * NL80211_FREQUENCY_ATTR_GO_CONCURRENT. -+ * NL80211_FREQUENCY_ATTR_IR_CONCURRENT. +@@ -2347,6 +2581,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 +@@ -3019,6 +3254,7 @@ enum nl80211_reg_rule_attr { + * @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved + * @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching, + * only report BSS with matching SSID. ++ * (This cannot be used together with BSSID.) + * @NL80211_SCHED_SCAN_MATCH_ATTR_RSSI: RSSI threshold (in dBm) for reporting a + * BSS in scan results. Filtering is turned off if not specified. Note that + * if this attribute is in a match set of its own, then it is treated as +@@ -3027,6 +3263,15 @@ 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_BSSID: BSSID to be used for matching ++ * (this cannot be used together with SSID). + * @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 +3281,9 @@ 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, ++ NL80211_SCHED_SCAN_MATCH_ATTR_BSSID, + + /* keep last */ + __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST, +@@ -3660,6 +3908,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 +3923,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, +@@ -3839,7 +4093,10 @@ enum nl80211_ps_state { + * @__NL80211_ATTR_CQM_INVALID: invalid + * @NL80211_ATTR_CQM_RSSI_THOLD: RSSI threshold in dBm. This value specifies + * the threshold for the RSSI level at which an event will be sent. Zero +- * to disable. ++ * to disable. Alternatively, if %NL80211_EXT_FEATURE_CQM_RSSI_LIST is ++ * set, multiple values can be supplied as a low-to-high sorted array of ++ * threshold values in dBm. Events will be sent when the RSSI value ++ * crosses any of the thresholds. + * @NL80211_ATTR_CQM_RSSI_HYST: RSSI hysteresis in dBm. This value specifies + * the minimum amount the RSSI level must change after an event before a + * new event may be issued (to reduce effects of RSSI oscillation). +@@ -3859,6 +4116,8 @@ enum nl80211_ps_state { + * %NL80211_CMD_NOTIFY_CQM. Set to 0 to turn off TX error reporting. + * @NL80211_ATTR_CQM_BEACON_LOSS_EVENT: flag attribute that's set in a beacon + * loss event ++ * @NL80211_ATTR_CQM_RSSI_LEVEL: the RSSI value in dBm that triggered the ++ * RSSI threshold event. + * @__NL80211_ATTR_CQM_AFTER_LAST: internal + * @NL80211_ATTR_CQM_MAX: highest key attribute */ - enum nl80211_frequency_attr { - __NL80211_FREQUENCY_ATTR_INVALID, -@@ -2659,7 +2665,7 @@ enum nl80211_frequency_attr { - NL80211_FREQUENCY_ATTR_NO_160MHZ, - NL80211_FREQUENCY_ATTR_DFS_CAC_TIME, - NL80211_FREQUENCY_ATTR_INDOOR_ONLY, -- NL80211_FREQUENCY_ATTR_GO_CONCURRENT, -+ NL80211_FREQUENCY_ATTR_IR_CONCURRENT, - NL80211_FREQUENCY_ATTR_NO_20MHZ, - NL80211_FREQUENCY_ATTR_NO_10MHZ, - -@@ -2672,6 +2678,8 @@ enum nl80211_frequency_attr { - #define NL80211_FREQUENCY_ATTR_PASSIVE_SCAN NL80211_FREQUENCY_ATTR_NO_IR - #define NL80211_FREQUENCY_ATTR_NO_IBSS NL80211_FREQUENCY_ATTR_NO_IR - #define NL80211_FREQUENCY_ATTR_NO_IR NL80211_FREQUENCY_ATTR_NO_IR -+#define NL80211_FREQUENCY_ATTR_GO_CONCURRENT \ -+ NL80211_FREQUENCY_ATTR_IR_CONCURRENT +@@ -3872,6 +4131,7 @@ enum nl80211_attr_cqm { + NL80211_ATTR_CQM_TXE_PKTS, + NL80211_ATTR_CQM_TXE_INTVL, + NL80211_ATTR_CQM_BEACON_LOSS_EVENT, ++ NL80211_ATTR_CQM_RSSI_LEVEL, + + /* keep last */ + __NL80211_ATTR_CQM_AFTER_LAST, +@@ -4280,6 +4540,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 +4550,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 +4577,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 +4898,27 @@ 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). ++ * @NL80211_EXT_FEATURE_CQM_RSSI_LIST: With this driver the ++ * %NL80211_ATTR_CQM_RSSI_THOLD attribute accepts a list of zero or more ++ * RSSI threshold values to monitor rather than exactly one threshold. ++ * @NL80211_EXT_FEATURE_FILS_SK_OFFLOAD: Driver SME supports FILS shared key ++ * authentication with %NL80211_CMD_CONNECT. ++ * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK: Device wants to do 4-way ++ * handshake with PSK in station mode (PSK is passed as part of the connect ++ * and associate commands), doing it in the host might not be supported. ++ * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X: Device wants to do doing 4-way ++ * handshake with 802.1X in station mode (will pass EAP frames to the host ++ * and accept the set_pmk/del_pmk commands), doing it in the host might not ++ * be supported. + * + * @NUM_NL80211_EXT_FEATURES: number of extended features. + * @MAX_NL80211_EXT_FEATURES: highest extended feature index. +@@ -4648,6 +4933,14 @@ 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, ++ NL80211_EXT_FEATURE_CQM_RSSI_LIST, ++ NL80211_EXT_FEATURE_FILS_SK_OFFLOAD, ++ NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK, ++ NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X, + + /* add new features before the definition below */ + NUM_NL80211_EXT_FEATURES, +@@ -4687,6 +4980,21 @@ enum nl80211_connect_failed_reason { + }; /** - * enum nl80211_bitrate_attr - bitrate attributes -@@ -2830,7 +2838,7 @@ enum nl80211_sched_scan_match_attr { - * @NL80211_RRF_AUTO_BW: maximum available bandwidth should be calculated - * base on contiguous rules and wider channels will be allowed to cross - * multiple contiguous/overlapping frequency ranges. -- * @NL80211_RRF_GO_CONCURRENT: See &NL80211_FREQUENCY_ATTR_GO_CONCURRENT -+ * @NL80211_RRF_IR_CONCURRENT: See &NL80211_FREQUENCY_ATTR_IR_CONCURRENT - * @NL80211_RRF_NO_HT40MINUS: channels can't be used in HT40- operation - * @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation - * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed -@@ -2847,7 +2855,7 @@ enum nl80211_reg_rule_flags { - NL80211_RRF_NO_IR = 1<<7, - __NL80211_RRF_NO_IBSS = 1<<8, - NL80211_RRF_AUTO_BW = 1<<11, -- NL80211_RRF_GO_CONCURRENT = 1<<12, -+ NL80211_RRF_IR_CONCURRENT = 1<<12, - NL80211_RRF_NO_HT40MINUS = 1<<13, - NL80211_RRF_NO_HT40PLUS = 1<<14, - NL80211_RRF_NO_80MHZ = 1<<15, -@@ -2859,6 +2867,7 @@ enum nl80211_reg_rule_flags { - #define NL80211_RRF_NO_IR NL80211_RRF_NO_IR - #define NL80211_RRF_NO_HT40 (NL80211_RRF_NO_HT40MINUS |\ - NL80211_RRF_NO_HT40PLUS) -+#define NL80211_RRF_GO_CONCURRENT NL80211_RRF_IR_CONCURRENT - - /* For backport compatibility with older userspace */ - #define NL80211_RRF_NO_IR_ALL (NL80211_RRF_NO_IR | __NL80211_RRF_NO_IBSS) ++ * 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 +@@ -4768,12 +5076,17 @@ enum nl80211_smps_mode { + * change to the channel status. + * @NL80211_RADAR_NOP_FINISHED: The Non-Occupancy Period for this channel is + * over, channel becomes usable. ++ * @NL80211_RADAR_PRE_CAC_EXPIRED: Channel Availability Check done on this ++ * non-operating channel is expired and no longer valid. New CAC must ++ * be done on this channel before starting the operation. This is not ++ * applicable for ETSI dfs domain where pre-CAC is valid for ever. + */ + enum nl80211_radar_event { + NL80211_RADAR_DETECTED, + NL80211_RADAR_CAC_FINISHED, + NL80211_RADAR_CAC_ABORTED, + NL80211_RADAR_NOP_FINISHED, ++ NL80211_RADAR_PRE_CAC_EXPIRED, + }; + + /** +@@ -4900,8 +5213,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; +@@ -4942,21 +5256,6 @@ enum nl80211_bss_select_attr { + }; + + /** +- * enum nl80211_nan_dual_band_conf - NAN dual band configuration +- * +- * Defines the NAN dual band mode of operation +- * +- * @NL80211_NAN_BAND_DEFAULT: device default mode +- * @NL80211_NAN_BAND_2GHZ: 2.4GHz mode +- * @NL80211_NAN_BAND_5GHZ: 5GHz mode +- */ +-enum nl80211_nan_dual_band_conf { +- NL80211_NAN_BAND_DEFAULT = 1 << 0, +- NL80211_NAN_BAND_2GHZ = 1 << 1, +- NL80211_NAN_BAND_5GHZ = 1 << 2, +-}; +- +-/** + * enum nl80211_nan_function_type - NAN function type + * + * Defines the function type of a NAN function