172172 * Multiple such rules can be created.
173173 */
174174
175+ /**
176+ * DOC: WPA/WPA2 EAPOL handshake offload
177+ *
178+ * By setting @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK flag drivers
179+ * can indicate they support offloading EAPOL handshakes for WPA/WPA2
180+ * preshared key authentication. In %NL80211_CMD_CONNECT the preshared
181+ * key should be specified using %NL80211_ATTR_PMK. Drivers supporting
182+ * this offload may reject the %NL80211_CMD_CONNECT when no preshared
183+ * key material is provided, for example when that driver does not
184+ * support setting the temporal keys through %CMD_NEW_KEY.
185+ *
186+ * Similarly @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X flag can be
187+ * set by drivers indicating offload support of the PTK/GTK EAPOL
188+ * handshakes during 802.1X authentication. In order to use the offload
189+ * the %NL80211_CMD_CONNECT should have %NL80211_ATTR_WANT_1X_4WAY_HS
190+ * attribute flag. Drivers supporting this offload may reject the
191+ * %NL80211_CMD_CONNECT when the attribute flag is not present.
192+ *
193+ * For 802.1X the PMK or PMK-R0 are set by providing %NL80211_ATTR_PMK
194+ * using %NL80211_CMD_SET_PMK. For offloaded FT support also
195+ * %NL80211_ATTR_PMKR0_NAME must be provided.
196+ */
197+
175198/**
176199 * DOC: FILS shared key authentication offload
177200 *
546569 * authentication/association or not receiving a response from the AP.
547570 * Non-zero %NL80211_ATTR_STATUS_CODE value is indicated in that case as
548571 * well to remain backwards compatible.
549- * @NL80211_CMD_ROAM: request that the card roam (currently not implemented),
550- * sent as an event when the card/driver roamed by itself.
572+ * @NL80211_CMD_ROAM: notifcation indicating the card/driver roamed by itself.
573+ * When the driver roamed in a network that requires 802.1X authentication,
574+ * %NL80211_ATTR_PORT_AUTHORIZED should be set if the 802.1X authentication
575+ * was done by the driver or if roaming was done using Fast Transition
576+ * protocol (in which case 802.1X authentication is not needed). If
577+ * %NL80211_ATTR_PORT_AUTHORIZED is not set, user space is responsible for
578+ * the 802.1X authentication.
551579 * @NL80211_CMD_DISCONNECT: drop a given connection; also used to notify
552580 * userspace that a connection was dropped by the AP or due to other
553581 * reasons, for this the %NL80211_ATTR_DISCONNECTED_BY_AP and
947975 * does not result in a change for the current association. Currently,
948976 * only the %NL80211_ATTR_IE data is used and updated with this command.
949977 *
978+ * @NL80211_CMD_SET_PMK: For offloaded 4-Way handshake, set the PMK or PMK-R0
979+ * for the given authenticator address (specified with &NL80211_ATTR_MAC).
980+ * When &NL80211_ATTR_PMKR0_NAME is set, &NL80211_ATTR_PMK specifies the
981+ * PMK-R0, otherwise it specifies the PMK.
982+ * @NL80211_CMD_DEL_PMK: For offloaded 4-Way handshake, delete the previously
983+ * configured PMK for the authenticator address identified by
984+ * &NL80211_ATTR_MAC.
985+ *
950986 * @NL80211_CMD_MAX: highest used command number
951987 * @__NL80211_CMD_AFTER_LAST: internal use
952988 */
@@ -1146,6 +1182,9 @@ enum nl80211_commands {
11461182
11471183 NL80211_CMD_UPDATE_CONNECT_PARAMS ,
11481184
1185+ NL80211_CMD_SET_PMK ,
1186+ NL80211_CMD_DEL_PMK ,
1187+
11491188 /* add new commands above here */
11501189
11511190 /* used to define NL80211_CMD_MAX below */
@@ -2080,14 +2119,27 @@ enum nl80211_commands {
20802119 * identifying the scope of PMKSAs. This is used with
20812120 * @NL80211_CMD_SET_PMKSA and @NL80211_CMD_DEL_PMKSA.
20822121 *
2083- * @NL80211_ATTR_PMK: PMK for the PMKSA identified by %NL80211_ATTR_PMKID.
2084- * This is used with @NL80211_CMD_SET_PMKSA.
2122+ * @NL80211_ATTR_PMK: attribute for passing PMK key material. Used with
2123+ * %NL80211_CMD_SET_PMKSA for the PMKSA identified by %NL80211_ATTR_PMKID.
2124+ * For %NL80211_CMD_CONNECT it is used to provide PSK for offloading 4-way
2125+ * handshake for WPA/WPA2-PSK networks. For 802.1X authentication it is
2126+ * used with %NL80211_CMD_SET_PMK. For offloaded FT support this attribute
2127+ * specifies the PMK-R0 if NL80211_ATTR_PMKR0_NAME is included as well.
20852128 *
20862129 * @NL80211_ATTR_SCHED_SCAN_MULTI: flag attribute which user-space shall use to
20872130 * indicate that it supports multiple active scheduled scan requests.
20882131 * @NL80211_ATTR_SCHED_SCAN_MAX_REQS: indicates maximum number of scheduled
20892132 * scan request that may be active for the device (u32).
20902133 *
2134+ * @NL80211_ATTR_WANT_1X_4WAY_HS: flag attribute which user-space can include
2135+ * in %NL80211_CMD_CONNECT to indicate that for 802.1X authentication it
2136+ * wants to use the supported offload of the 4-way handshake.
2137+ * @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT.
2138+ * @NL80211_ATTR_PORT_AUTHORIZED: flag attribute used in %NL80211_CMD_ROAMED
2139+ * notification indicating that that 802.1X authentication was done by
2140+ * the driver or is not needed (because roaming used the Fast Transition
2141+ * protocol).
2142+ *
20912143 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
20922144 * @NL80211_ATTR_MAX: highest attribute number currently defined
20932145 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2510,6 +2562,10 @@ enum nl80211_attrs {
25102562 NL80211_ATTR_SCHED_SCAN_MULTI ,
25112563 NL80211_ATTR_SCHED_SCAN_MAX_REQS ,
25122564
2565+ NL80211_ATTR_WANT_1X_4WAY_HS ,
2566+ NL80211_ATTR_PMKR0_NAME ,
2567+ NL80211_ATTR_PORT_AUTHORIZED ,
2568+
25132569 /* add attributes here, update the policy in nl80211.c */
25142570
25152571 __NL80211_ATTR_AFTER_LAST ,
@@ -4852,6 +4908,13 @@ enum nl80211_feature_flags {
48524908 * RSSI threshold values to monitor rather than exactly one threshold.
48534909 * @NL80211_EXT_FEATURE_FILS_SK_OFFLOAD: Driver SME supports FILS shared key
48544910 * authentication with %NL80211_CMD_CONNECT.
4911+ * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK: Device wants to do 4-way
4912+ * handshake with PSK in station mode (PSK is passed as part of the connect
4913+ * and associate commands), doing it in the host might not be supported.
4914+ * @NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X: Device wants to do doing 4-way
4915+ * handshake with 802.1X in station mode (will pass EAP frames to the host
4916+ * and accept the set_pmk/del_pmk commands), doing it in the host might not
4917+ * be supported.
48554918 *
48564919 * @NUM_NL80211_EXT_FEATURES: number of extended features.
48574920 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -4872,6 +4935,8 @@ enum nl80211_ext_feature_index {
48724935 NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI ,
48734936 NL80211_EXT_FEATURE_CQM_RSSI_LIST ,
48744937 NL80211_EXT_FEATURE_FILS_SK_OFFLOAD ,
4938+ NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK ,
4939+ NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X ,
48754940
48764941 /* add new features before the definition below */
48774942 NUM_NL80211_EXT_FEATURES ,
0 commit comments