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 | * Multiple such rules can be created. | 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 | * enum nl80211_commands - supported nl80211 commands | 212 | * enum nl80211_commands - supported nl80211 commands |
| 177 | * | 213 | * |
| @@ -370,10 +406,18 @@ · 192 unmodified lines | |||
| 370 | * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to | 406 | * @NL80211_CMD_NEW_SURVEY_RESULTS: survey data notification (as a reply to |
| 371 | * NL80211_CMD_GET_SURVEY and on the "scan" multicast group) | 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 | 409 | * @NL80211_CMD_SET_PMKSA: Add a PMKSA cache entry using %NL80211_ATTR_MAC |
| 374 | * (for the BSSID) and %NL80211_ATTR_PMKID. | 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 | * @NL80211_CMD_DEL_PMKSA: Delete a PMKSA cache entry, using %NL80211_ATTR_MAC | 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 | * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries. | 421 | * @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries. |
| 378 | * | 422 | * |
| 379 | * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain | 423 | * @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain |
| @@ -2012,6 +2056,31 @@ enum nl80211_commands { · 1632 unmodified lines | |||
| 2012 | * u32 attribute with an &enum nl80211_timeout_reason value. This is used, | 2056 | * u32 attribute with an &enum nl80211_timeout_reason value. This is used, |
| 2013 | * e.g., with %NL80211_CMD_CONNECT event. | 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 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available | 2084 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 2016 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 2085 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 2017 | * @__NL80211_ATTR_AFTER_LAST: internal use | 2086 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| @@ -2423,6 +2492,14 @@ enum nl80211_attrs { · 405 unmodified lines | |||
| 2423 | 2492 | ||
| 2424 | NL80211_ATTR_TIMEOUT_REASON, | 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 | /* add attributes here, update the policy in nl80211.c */ | 2503 | /* add attributes here, update the policy in nl80211.c */ |
| 2427 | 2504 | ||
| 2428 | __NL80211_ATTR_AFTER_LAST, | 2505 | __NL80211_ATTR_AFTER_LAST, |
| @@ -3942,7 +4019,10 @@ enum nl80211_ps_state { · 1513 unmodified lines | |||
| 3942 | * @__NL80211_ATTR_CQM_INVALID: invalid | 4019 | * @__NL80211_ATTR_CQM_INVALID: invalid |
| 3943 | * @NL80211_ATTR_CQM_RSSI_THOLD: RSSI threshold in dBm. This value specifies | 4020 | * @NL80211_ATTR_CQM_RSSI_THOLD: RSSI threshold in dBm. This value specifies |
| 3944 | * the threshold for the RSSI level at which an event will be sent. Zero | 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 | * @NL80211_ATTR_CQM_RSSI_HYST: RSSI hysteresis in dBm. This value specifies | 4026 | * @NL80211_ATTR_CQM_RSSI_HYST: RSSI hysteresis in dBm. This value specifies |
| 3947 | * the minimum amount the RSSI level must change after an event before a | 4027 | * the minimum amount the RSSI level must change after an event before a |
| 3948 | * new event may be issued (to reduce effects of RSSI oscillation). | 4028 | * new event may be issued (to reduce effects of RSSI oscillation). |
| @@ -4753,6 +4833,11 @@ enum nl80211_feature_flags { · 804 unmodified lines | |||
| 4753 | * @NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI: The driver supports sched_scan | 4833 | * @NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI: The driver supports sched_scan |
| 4754 | * for reporting BSSs with better RSSI than the current connected BSS | 4834 | * for reporting BSSs with better RSSI than the current connected BSS |
| 4755 | * (%NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI). | 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 | * @NUM_NL80211_EXT_FEATURES: number of extended features. | 4842 | * @NUM_NL80211_EXT_FEATURES: number of extended features. |
| 4758 | * @MAX_NL80211_EXT_FEATURES: highest extended feature index. | 4843 | * @MAX_NL80211_EXT_FEATURES: highest extended feature index. |
| @@ -4771,6 +4856,8 @@ enum nl80211_ext_feature_index { · 12 unmodified lines | |||
| 4771 | NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA, | 4856 | NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA, |
| 4772 | NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED, | 4857 | NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED, |
| 4773 | NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI, | 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 | /* add new features before the definition below */ | 4862 | /* add new features before the definition below */ |
| 4776 | NUM_NL80211_EXT_FEATURES, | 4863 | NUM_NL80211_EXT_FEATURES, |
| @@ -4906,12 +4993,17 @@ enum nl80211_smps_mode { · 129 unmodified lines | |||
| 4906 | * change to the channel status. | 4993 | * change to the channel status. |
| 4907 | * @NL80211_RADAR_NOP_FINISHED: The Non-Occupancy Period for this channel is | 4994 | * @NL80211_RADAR_NOP_FINISHED: The Non-Occupancy Period for this channel is |
| 4908 | * over, channel becomes usable. | 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 | enum nl80211_radar_event { | 5001 | enum nl80211_radar_event { |
| 4911 | NL80211_RADAR_DETECTED, | 5002 | NL80211_RADAR_DETECTED, |
| 4912 | NL80211_RADAR_CAC_FINISHED, | 5003 | NL80211_RADAR_CAC_FINISHED, |
| 4913 | NL80211_RADAR_CAC_ABORTED, | 5004 | NL80211_RADAR_CAC_ABORTED, |
| 4914 | NL80211_RADAR_NOP_FINISHED, | 5005 | NL80211_RADAR_NOP_FINISHED, |
| 5006 | NL80211_RADAR_PRE_CAC_EXPIRED, | ||
| 4915 | }; | 5007 | }; |
| 4916 | 5008 | ||
| 4917 | /** | 5009 | /** |