Johannes Berg says: ==================== My last pull request has been a while, we now have: * connection quality monitoring with multiple thresholds * support for FILS shared key authentication offload * pre-CAC regulatory compliance - only ETSI allows this * sanity check for some rate confusion that hit ChromeOS (but nobody else uses it, evidently) * some documentation updates * lots of cleanups ====================
Showing the changes to include/uapi/linux (1 of 84 files). Show all
Unified · Split
| @@ -172,6 +172,42 @@ · 171 unmodified lines | ||
| 172 | 172 | * Multiple such rules can be created. |
| 173 | 173 | */ |
| 174 | 174 | |
| 175 | +/** | |
| 176 | + * DOC: FILS shared key authentication offload | |
| 177 | + * | |
| 178 | + * FILS shared key authentication offload can be advertized by drivers by | |
| 179 | + * setting @NL80211_EXT_FEATURE_FILS_SK_OFFLOAD flag. The drivers that support | |
| 180 | + * FILS shared key authentication offload should be able to construct the | |
| 181 | + * authentication and association frames for FILS shared key authentication and | |
| 182 | + * eventually do a key derivation as per IEEE 802.11ai. The below additional | |
| 183 | + * parameters should be given to driver in %NL80211_CMD_CONNECT. | |
| 184 | + * %NL80211_ATTR_FILS_ERP_USERNAME - used to construct keyname_nai | |
| 185 | + * %NL80211_ATTR_FILS_ERP_REALM - used to construct keyname_nai | |
| 186 | + * %NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM - used to construct erp message | |
| 187 | + * %NL80211_ATTR_FILS_ERP_RRK - used to generate the rIK and rMSK | |
| 188 | + * rIK should be used to generate an authentication tag on the ERP message and | |
| 189 | + * rMSK should be used to derive a PMKSA. | |
| 190 | + * rIK, rMSK should be generated and keyname_nai, sequence number should be used | |
| 191 | + * as specified in IETF RFC 6696. | |
| 192 | + * | |
| 193 | + * When FILS shared key authentication is completed, driver needs to provide the | |
| 194 | + * below additional parameters to userspace. | |
| 195 | + * %NL80211_ATTR_FILS_KEK - used for key renewal | |
| 196 | + * %NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM - used in further EAP-RP exchanges | |
| 197 | + * %NL80211_ATTR_PMKID - used to identify the PMKSA used/generated | |
| 198 | + * %Nl80211_ATTR_PMK - used to update PMKSA cache in userspace | |
| 199 | + * The PMKSA can be maintained in userspace persistently so that it can be used | |
| 200 | + * later after reboots or wifi turn off/on also. | |
| 201 | + * | |
| 202 | + * %NL80211_ATTR_FILS_CACHE_ID is the cache identifier advertized by a FILS | |
| 203 | + * capable AP supporting PMK caching. It specifies the scope within which the | |
| 204 | + * PMKSAs are cached in an ESS. %NL80211_CMD_SET_PMKSA and | |
| 205 | + * %NL80211_CMD_DEL_PMKSA are enhanced to allow support for PMKSA caching based | |
| 206 | + * on FILS cache identifier. Additionally %NL80211_ATTR_PMK is used with | |
| 207 | + * %NL80211_SET_PMKSA to specify the PMK corresponding to a PMKSA for driver to | |
| 208 | + * use in a FILS shared key connection with PMKSA caching. | |
| 209 | + */ | |
| 210 | + | |
| 175 | 211 | /** |
| 176 | 212 | * enum nl80211_commands - supported nl80211 commands |
| 177 | 213 | * |
| @@ -370,10 +406,18 @@ · 192 unmodified lines | ||
| 370 | 406 | * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to |
| 371 | 407 | * NL80211_CMD_GET_SURVEY and on the "scan" multicast group) |
| 372 | 408 | * |
| 373 | − * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry, using %NL80211_ATTR_MAC | |
| 374 | − * (for the BSSID) and %NL80211_ATTR_PMKID. | |
| 409 | + * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry using %NL80211_ATTR_MAC | |
| 410 | + * (for the BSSID), %NL80211_ATTR_PMKID, and optionally %NL80211_ATTR_PMK | |
| 411 | + * (PMK is used for PTKSA derivation in case of FILS shared key offload) or | |
| 412 | + * using %NL80211_ATTR_SSID, %NL80211_ATTR_FILS_CACHE_ID, | |
| 413 | + * %NL80211_ATTR_PMKID, and %NL80211_ATTR_PMK in case of FILS | |
| 414 | + * authentication where %NL80211_ATTR_FILS_CACHE_ID is the identifier | |
| 415 | + * advertized by a FILS capable AP identifying the scope of PMKSA in an | |
| 416 | + * ESS. | |
| 375 | 417 | * @NL80211_CMD_DEL_PMKSA: Delete a PMKSA cache entry, using %NL80211_ATTR_MAC |
| 376 | − * (for the BSSID) and %NL80211_ATTR_PMKID. | |
| 418 | + * (for the BSSID) and %NL80211_ATTR_PMKID or using %NL80211_ATTR_SSID, | |
| 419 | + * %NL80211_ATTR_FILS_CACHE_ID, and %NL80211_ATTR_PMKID in case of FILS | |
| 420 | + * authentication. | |
| 377 | 421 | * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries. |
| 378 | 422 | * |
| 379 | 423 | * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain |
| @@ -2012,6 +2056,31 @@ enum nl80211_commands { · 1632 unmodified lines | ||
| 2012 | 2056 | * u32 attribute with an &enum nl80211_timeout_reason value. This is used, |
| 2013 | 2057 | * e.g., with %NL80211_CMD_CONNECT event. |
| 2014 | 2058 | * |
| 2059 | + * @NL80211_ATTR_FILS_ERP_USERNAME: EAP Re-authentication Protocol (ERP) | |
| 2060 | + * username part of NAI used to refer keys rRK and rIK. This is used with | |
| 2061 | + * %NL80211_CMD_CONNECT. | |
| 2062 | + * | |
| 2063 | + * @NL80211_ATTR_FILS_ERP_REALM: EAP Re-authentication Protocol (ERP) realm part | |
| 2064 | + * of NAI specifying the domain name of the ER server. This is used with | |
| 2065 | + * %NL80211_CMD_CONNECT. | |
| 2066 | + * | |
| 2067 | + * @NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM: Unsigned 16-bit ERP next sequence number | |
| 2068 | + * to use in ERP messages. This is used in generating the FILS wrapped data | |
| 2069 | + * for FILS authentication and is used with %NL80211_CMD_CONNECT. | |
| 2070 | + * | |
| 2071 | + * @NL80211_ATTR_FILS_ERP_RRK: ERP re-authentication Root Key (rRK) for the | |
| 2072 | + * NAI specified by %NL80211_ATTR_FILS_ERP_USERNAME and | |
| 2073 | + * %NL80211_ATTR_FILS_ERP_REALM. This is used for generating rIK and rMSK | |
| 2074 | + * from successful FILS authentication and is used with | |
| 2075 | + * %NL80211_CMD_CONNECT. | |
| 2076 | + * | |
| 2077 | + * @NL80211_ATTR_FILS_CACHE_ID: A 2-octet identifier advertized by a FILS AP | |
| 2078 | + * identifying the scope of PMKSAs. This is used with | |
| 2079 | + * @NL80211_CMD_SET_PMKSA and @NL80211_CMD_DEL_PMKSA. | |
| 2080 | + * | |
| 2081 | + * @NL80211_ATTR_PMK: PMK for the PMKSA identified by %NL80211_ATTR_PMKID. | |
| 2082 | + * This is used with @NL80211_CMD_SET_PMKSA. | |
| 2083 | + * | |
| 2015 | 2084 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 2016 | 2085 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 2017 | 2086 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| @@ -2423,6 +2492,14 @@ enum nl80211_attrs { · 405 unmodified lines | ||
| 2423 | 2492 | |
| 2424 | 2493 | NL80211_ATTR_TIMEOUT_REASON, |
| 2425 | 2494 | |
| 2495 | + NL80211_ATTR_FILS_ERP_USERNAME, | |
| 2496 | + NL80211_ATTR_FILS_ERP_REALM, | |
| 2497 | + NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM, | |
| 2498 | + NL80211_ATTR_FILS_ERP_RRK, | |
| 2499 | + NL80211_ATTR_FILS_CACHE_ID, | |
| 2500 | + | |
| 2501 | + NL80211_ATTR_PMK, | |
| 2502 | + | |
| 2426 | 2503 | /* add attributes here, update the policy in nl80211.c */ |
| 2427 | 2504 | |
| 2428 | 2505 | __NL80211_ATTR_AFTER_LAST, |
| @@ -3942,7 +4019,10 @@ enum nl80211_ps_state { · 1513 unmodified lines | ||
| 3942 | 4019 | * @__NL80211_ATTR_CQM_INVALID: invalid |
| 3943 | 4020 | * @NL80211_ATTR_CQM_RSSI_THOLD: RSSI threshold in dBm. This value specifies |
| 3944 | 4021 | * the threshold for the RSSI level at which an event will be sent. Zero |
| 3945 | − * to disable. | |
| 4022 | + * to disable. Alternatively, if %NL80211_EXT_FEATURE_CQM_RSSI_LIST is | |
| 4023 | + * set, multiple values can be supplied as a low-to-high sorted array of | |
| 4024 | + * threshold values in dBm. Events will be sent when the RSSI value | |
| 4025 | + * crosses any of the thresholds. | |
| 3946 | 4026 | * @NL80211_ATTR_CQM_RSSI_HYST: RSSI hysteresis in dBm. This value specifies |
| 3947 | 4027 | * the minimum amount the RSSI level must change after an event before a |
| 3948 | 4028 | * new event may be issued (to reduce effects of RSSI oscillation). |
| @@ -4753,6 +4833,11 @@ enum nl80211_feature_flags { · 804 unmodified lines | ||
| 4753 | 4833 | * @NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI: The driver supports sched_scan |
| 4754 | 4834 | * for reporting BSSs with better RSSI than the current connected BSS |
| 4755 | 4835 | * (%NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI). |
| 4836 | + * @NL80211_EXT_FEATURE_CQM_RSSI_LIST: With this driver the | |
| 4837 | + * %NL80211_ATTR_CQM_RSSI_THOLD attribute accepts a list of zero or more | |
| 4838 | + * RSSI threshold values to monitor rather than exactly one threshold. | |
| 4839 | + * @NL80211_EXT_FEATURE_FILS_SK_OFFLOAD: Driver SME supports FILS shared key | |
| 4840 | + * authentication with %NL80211_CMD_CONNECT. | |
| 4756 | 4841 | * |
| 4757 | 4842 | * @NUM_NL80211_EXT_FEATURES: number of extended features. |
| 4758 | 4843 | * @MAX_NL80211_EXT_FEATURES: highest extended feature index. |
| @@ -4771,6 +4856,8 @@ enum nl80211_ext_feature_index { · 12 unmodified lines | ||
| 4771 | 4856 | NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA, |
| 4772 | 4857 | NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED, |
| 4773 | 4858 | NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI, |
| 4859 | + NL80211_EXT_FEATURE_CQM_RSSI_LIST, | |
| 4860 | + NL80211_EXT_FEATURE_FILS_SK_OFFLOAD, | |
| 4774 | 4861 | |
| 4775 | 4862 | /* add new features before the definition below */ |
| 4776 | 4863 | NUM_NL80211_EXT_FEATURES, |
| @@ -4906,12 +4993,17 @@ enum nl80211_smps_mode { · 129 unmodified lines | ||
| 4906 | 4993 | * change to the channel status. |
| 4907 | 4994 | * @NL80211_RADAR_NOP_FINISHED: The Non-Occupancy Period for this channel is |
| 4908 | 4995 | * over, channel becomes usable. |
| 4996 | + * @NL80211_RADAR_PRE_CAC_EXPIRED: Channel Availability Check done on this | |
| 4997 | + * non-operating channel is expired and no longer valid. New CAC must | |
| 4998 | + * be done on this channel before starting the operation. This is not | |
| 4999 | + * applicable for ETSI dfs domain where pre-CAC is valid for ever. | |
| 4909 | 5000 | */ |
| 4910 | 5001 | enum nl80211_radar_event { |
| 4911 | 5002 | NL80211_RADAR_DETECTED, |
| 4912 | 5003 | NL80211_RADAR_CAC_FINISHED, |
| 4913 | 5004 | NL80211_RADAR_CAC_ABORTED, |
| 4914 | 5005 | NL80211_RADAR_NOP_FINISHED, |
| 5006 | + NL80211_RADAR_PRE_CAC_EXPIRED, | |
| 4915 | 5007 | }; |
| 4916 | 5008 | |
| 4917 | 5009 | /** |