diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-05-26 20:00:14 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-05-26 20:08:25 +0200 |
commit | 91abeebd3bd29a98de516e49260d61165096009a (patch) | |
tree | 0d8035624b7ccab6d633c909ed340c6d6970deab /package/network | |
parent | 8dba71dd33c8e35e7f363ffdb2ba42259ab43ce2 (diff) | |
download | upstream-91abeebd3bd29a98de516e49260d61165096009a.tar.gz upstream-91abeebd3bd29a98de516e49260d61165096009a.tar.bz2 upstream-91abeebd3bd29a98de516e49260d61165096009a.zip |
mac80211: sync nl80211.h with upstream and backport a WPA3 related commit
Fixes compatibility issues with the latest hostapd update
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/network')
-rw-r--r-- | package/network/utils/iw/patches/001-nl80211_h_sync.patch | 279 |
1 files changed, 277 insertions, 2 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 5aa3cd5146..1d6ea0fae0 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -1,9 +1,99 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -2527,6 +2527,13 @@ enum nl80211_commands { +@@ -655,6 +655,9 @@ + * When a security association was established on an 802.1X network using + * fast transition, this event should be followed by an + * %NL80211_CMD_PORT_AUTHORIZED event. ++ * Following a %NL80211_CMD_ROAM event userspace can issue ++ * %NL80211_CMD_GET_SCAN in order to obtain the scan information for the ++ * new BSS the card/driver roamed to. + * @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 +@@ -757,7 +760,8 @@ + * of any other interfaces, and other interfaces will again take + * precedence when they are used. + * +- * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface. ++ * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface ++ * (no longer supported). + * + * @NL80211_CMD_SET_MULTICAST_TO_UNICAST: Configure if this AP should perform + * multicast to unicast conversion. When enabled, all multicast packets +@@ -1177,6 +1181,10 @@ + * includes the contents of the frame. %NL80211_ATTR_ACK flag is included + * if the recipient acknowledged the frame. + * ++ * @NL80211_CMD_SET_SAR_SPECS: SAR power limitation configuration is ++ * passed using %NL80211_ATTR_SAR_SPEC. %NL80211_ATTR_WIPHY is used to ++ * specify the wiphy index to be applied to. ++ * + * @NL80211_CMD_MAX: highest used command number + * @__NL80211_CMD_AFTER_LAST: internal use + */ +@@ -1407,6 +1415,8 @@ enum nl80211_commands { + + NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS, + ++ NL80211_CMD_SET_SAR_SPECS, ++ + /* add new commands above here */ + + /* used to define NL80211_CMD_MAX below */ +@@ -1750,8 +1760,9 @@ enum nl80211_commands { + * specify just a single bitrate, which is to be used for the beacon. + * The driver must also specify support for this with the extended + * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY, +- * NL80211_EXT_FEATURE_BEACON_RATE_HT and +- * NL80211_EXT_FEATURE_BEACON_RATE_VHT. ++ * NL80211_EXT_FEATURE_BEACON_RATE_HT, ++ * NL80211_EXT_FEATURE_BEACON_RATE_VHT and ++ * NL80211_EXT_FEATURE_BEACON_RATE_HE. + * + * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain + * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME. +@@ -1955,8 +1966,15 @@ enum nl80211_commands { + * @NL80211_ATTR_PROBE_RESP: Probe Response template data. Contains the entire + * probe-response frame. The DA field in the 802.11 header is zero-ed out, + * to be filled by the FW. +- * @NL80211_ATTR_DISABLE_HT: Force HT capable interfaces to disable +- * this feature. Currently, only supported in mac80211 drivers. ++ * @NL80211_ATTR_DISABLE_HT: Force HT capable interfaces to disable ++ * this feature during association. This is a flag attribute. ++ * Currently only supported in mac80211 drivers. ++ * @NL80211_ATTR_DISABLE_VHT: Force VHT capable interfaces to disable ++ * this feature during association. This is a flag attribute. ++ * Currently only supported in mac80211 drivers. ++ * @NL80211_ATTR_DISABLE_HE: Force HE capable interfaces to disable ++ * this feature during association. This is a flag attribute. ++ * Currently only supported in mac80211 drivers. + * @NL80211_ATTR_HT_CAPABILITY_MASK: Specify which bits of the + * ATTR_HT_CAPABILITY to which attention should be paid. + * Currently, only mac80211 NICs support this feature. +@@ -2077,7 +2095,8 @@ enum nl80211_commands { + * until the channel switch event. + * @NL80211_ATTR_CH_SWITCH_BLOCK_TX: flag attribute specifying that transmission + * must be blocked on the current channel (before the channel switch +- * operation). ++ * operation). Also included in the channel switch started event if quiet ++ * was requested by the AP. + * @NL80211_ATTR_CSA_IES: Nested set of attributes containing the IE information + * for the time while performing a channel switch. + * @NL80211_ATTR_CNTDWN_OFFS_BEACON: An array of offsets (u16) to the channel +@@ -2527,6 +2546,23 @@ enum nl80211_commands { * override mask. Used with NL80211_ATTR_S1G_CAPABILITY in * NL80211_CMD_ASSOCIATE or NL80211_CMD_CONNECT. * ++ * @NL80211_ATTR_SAE_PWE: Indicates the mechanism(s) allowed for SAE PWE ++ * derivation in WPA3-Personal networks which are using SAE authentication. ++ * This is a u8 attribute that encapsulates one of the values from ++ * &enum nl80211_sae_pwe_mechanism. ++ * ++ * @NL80211_ATTR_SAR_SPEC: SAR power limitation specification when ++ * used with %NL80211_CMD_SET_SAR_SPECS. The message contains fields ++ * of %nl80211_sar_attrs which specifies the sar type and related ++ * sar specs. Sar specs contains array of %nl80211_sar_specs_attrs. ++ * + * @NL80211_ATTR_RECONNECT_REQUESTED: flag attribute, used with deauth and + * disassoc events to indicate that an immediate reconnect to the AP + * is desired. @@ -14,14 +104,199 @@ * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -3016,6 +3023,10 @@ enum nl80211_attrs { +@@ -3016,6 +3052,16 @@ enum nl80211_attrs { NL80211_ATTR_S1G_CAPABILITY, NL80211_ATTR_S1G_CAPABILITY_MASK, ++ NL80211_ATTR_SAE_PWE, ++ + NL80211_ATTR_RECONNECT_REQUESTED, + ++ NL80211_ATTR_SAR_SPEC, ++ ++ NL80211_ATTR_DISABLE_HE, ++ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, +@@ -5896,6 +5942,19 @@ enum nl80211_feature_flags { + * @NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP: Driver/device supports + * unsolicited broadcast probe response transmission + * ++ * @NL80211_EXT_FEATURE_BEACON_RATE_HE: Driver supports beacon rate ++ * configuration (AP/mesh) with HE rates. ++ * ++ * @NL80211_EXT_FEATURE_SECURE_LTF: Device supports secure LTF measurement ++ * exchange protocol. ++ * ++ * @NL80211_EXT_FEATURE_SECURE_RTT: Device supports secure RTT measurement ++ * exchange protocol. ++ * ++ * @NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE: Device supports management ++ * frame protection for all management frames exchanged during the ++ * negotiation and range measurement procedure. ++ * + * @NUM_NL80211_EXT_FEATURES: number of extended features. + * @MAX_NL80211_EXT_FEATURES: highest extended feature index. + */ +@@ -5956,6 +6015,10 @@ enum nl80211_ext_feature_index { + NL80211_EXT_FEATURE_SAE_OFFLOAD_AP, + NL80211_EXT_FEATURE_FILS_DISCOVERY, + NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP, ++ NL80211_EXT_FEATURE_BEACON_RATE_HE, ++ NL80211_EXT_FEATURE_SECURE_LTF, ++ NL80211_EXT_FEATURE_SECURE_RTT, ++ NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE, + + /* add new features before the definition below */ + NUM_NL80211_EXT_FEATURES, +@@ -6253,11 +6316,13 @@ struct nl80211_vendor_cmd_info { + * @NL80211_TDLS_PEER_HT: TDLS peer is HT capable. + * @NL80211_TDLS_PEER_VHT: TDLS peer is VHT capable. + * @NL80211_TDLS_PEER_WMM: TDLS peer is WMM capable. ++ * @NL80211_TDLS_PEER_HE: TDLS peer is HE capable. + */ + enum nl80211_tdls_peer_capability { + NL80211_TDLS_PEER_HT = 1<<0, + NL80211_TDLS_PEER_VHT = 1<<1, + NL80211_TDLS_PEER_WMM = 1<<2, ++ NL80211_TDLS_PEER_HE = 1<<3, + }; + + /** +@@ -6849,6 +6914,9 @@ enum nl80211_peer_measurement_ftm_capa { + * if neither %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED nor + * %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set, EDCA based + * ranging will be used. ++ * @NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK: negotiate for LMR feedback. Only ++ * valid if either %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED or ++ * %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set. + * + * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal + * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number +@@ -6867,6 +6935,7 @@ enum nl80211_peer_measurement_ftm_req { + NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC, + NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED, + NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED, ++ NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK, + + /* keep last */ + NUM_NL80211_PMSR_FTM_REQ_ATTR, +@@ -7124,4 +7193,115 @@ enum nl80211_unsol_bcast_probe_resp_attr + NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX = + __NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_LAST - 1 + }; ++ ++/** ++ * enum nl80211_sae_pwe_mechanism - The mechanism(s) allowed for SAE PWE ++ * derivation. Applicable only when WPA3-Personal SAE authentication is ++ * used. ++ * ++ * @NL80211_SAE_PWE_UNSPECIFIED: not specified, used internally to indicate that ++ * attribute is not present from userspace. ++ * @NL80211_SAE_PWE_HUNT_AND_PECK: hunting-and-pecking loop only ++ * @NL80211_SAE_PWE_HASH_TO_ELEMENT: hash-to-element only ++ * @NL80211_SAE_PWE_BOTH: both hunting-and-pecking loop and hash-to-element ++ * can be used. ++ */ ++enum nl80211_sae_pwe_mechanism { ++ NL80211_SAE_PWE_UNSPECIFIED, ++ NL80211_SAE_PWE_HUNT_AND_PECK, ++ NL80211_SAE_PWE_HASH_TO_ELEMENT, ++ NL80211_SAE_PWE_BOTH, ++}; ++ ++/** ++ * enum nl80211_sar_type - type of SAR specs ++ * ++ * @NL80211_SAR_TYPE_POWER: power limitation specified in 0.25dBm unit ++ * ++ */ ++enum nl80211_sar_type { ++ NL80211_SAR_TYPE_POWER, ++ ++ /* add new type here */ ++ ++ /* Keep last */ ++ NUM_NL80211_SAR_TYPE, ++}; ++ ++/** ++ * enum nl80211_sar_attrs - Attributes for SAR spec ++ * ++ * @NL80211_SAR_ATTR_TYPE: the SAR type as defined in &enum nl80211_sar_type. ++ * ++ * @NL80211_SAR_ATTR_SPECS: Nested array of SAR power ++ * limit specifications. Each specification contains a set ++ * of %nl80211_sar_specs_attrs. ++ * ++ * For SET operation, it contains array of %NL80211_SAR_ATTR_SPECS_POWER ++ * and %NL80211_SAR_ATTR_SPECS_RANGE_INDEX. ++ * ++ * For sar_capa dump, it contains array of ++ * %NL80211_SAR_ATTR_SPECS_START_FREQ ++ * and %NL80211_SAR_ATTR_SPECS_END_FREQ. ++ * ++ * @__NL80211_SAR_ATTR_LAST: Internal ++ * @NL80211_SAR_ATTR_MAX: highest sar attribute ++ * ++ * These attributes are used with %NL80211_CMD_SET_SAR_SPEC ++ */ ++enum nl80211_sar_attrs { ++ __NL80211_SAR_ATTR_INVALID, ++ ++ NL80211_SAR_ATTR_TYPE, ++ NL80211_SAR_ATTR_SPECS, ++ ++ __NL80211_SAR_ATTR_LAST, ++ NL80211_SAR_ATTR_MAX = __NL80211_SAR_ATTR_LAST - 1, ++}; ++ ++/** ++ * enum nl80211_sar_specs_attrs - Attributes for SAR power limit specs ++ * ++ * @NL80211_SAR_ATTR_SPECS_POWER: Required (s32)value to specify the actual ++ * power limit value in units of 0.25 dBm if type is ++ * NL80211_SAR_TYPE_POWER. (i.e., a value of 44 represents 11 dBm). ++ * 0 means userspace doesn't have SAR limitation on this associated range. ++ * ++ * @NL80211_SAR_ATTR_SPECS_RANGE_INDEX: Required (u32) value to specify the ++ * index of exported freq range table and the associated power limitation ++ * is applied to this range. ++ * ++ * Userspace isn't required to set all the ranges advertised by WLAN driver, ++ * and userspace can skip some certain ranges. These skipped ranges don't ++ * have SAR limitations, and they are same as setting the ++ * %NL80211_SAR_ATTR_SPECS_POWER to any unreasonable high value because any ++ * value higher than regulatory allowed value just means SAR power ++ * limitation is removed, but it's required to set at least one range. ++ * It's not allowed to set duplicated range in one SET operation. ++ * ++ * Every SET operation overwrites previous SET operation. ++ * ++ * @NL80211_SAR_ATTR_SPECS_START_FREQ: Required (u32) value to specify the start ++ * frequency of this range edge when registering SAR capability to wiphy. ++ * It's not a channel center frequency. The unit is kHz. ++ * ++ * @NL80211_SAR_ATTR_SPECS_END_FREQ: Required (u32) value to specify the end ++ * frequency of this range edge when registering SAR capability to wiphy. ++ * It's not a channel center frequency. The unit is kHz. ++ * ++ * @__NL80211_SAR_ATTR_SPECS_LAST: Internal ++ * @NL80211_SAR_ATTR_SPECS_MAX: highest sar specs attribute ++ */ ++enum nl80211_sar_specs_attrs { ++ __NL80211_SAR_ATTR_SPECS_INVALID, ++ ++ NL80211_SAR_ATTR_SPECS_POWER, ++ NL80211_SAR_ATTR_SPECS_RANGE_INDEX, ++ NL80211_SAR_ATTR_SPECS_START_FREQ, ++ NL80211_SAR_ATTR_SPECS_END_FREQ, ++ ++ __NL80211_SAR_ATTR_SPECS_LAST, ++ NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1, ++}; ++ + #endif /* __LINUX_NL80211_H */ |