nl80211: Use separate flag for 4-way handshake offload
Commitd896874f86
("nl80211: Indicate 802.1X 4-way handshake offload in connect") used the req_key_mgmt_offload flag to indicate to the driver that it should offload the 802.1X handshake. However, this field was existing and used for a different offload API. This causes wpa_supplicant to send a connect request without the WANT_1X_HS flag and the subsequent set-pmk is rejected causing the connection to fail. Fix that by introducing a new flag req_handshake_offload so the offloads are no longer entangled. Fixes:d896874f86
("nl80211: Indicate 802.1X 4-way handshake offload in connect") Reported-by: Stefan Wahren <wahrenst@gmx.net> Tested-by: Stefan Wahren <wahrenst@gmx.net> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
This commit is contained in:
parent
ac069a31de
commit
cb28bd52e1
3 changed files with 10 additions and 2 deletions
|
@ -1073,6 +1073,14 @@ struct wpa_driver_associate_params {
|
||||||
*/
|
*/
|
||||||
int req_key_mgmt_offload;
|
int req_key_mgmt_offload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* req_handshake_offload - Request EAPOL handshake offload
|
||||||
|
*
|
||||||
|
* Request EAPOL handshake offload for this connection if the device
|
||||||
|
* supports it.
|
||||||
|
*/
|
||||||
|
int req_handshake_offload;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag for indicating whether this association includes support for
|
* Flag for indicating whether this association includes support for
|
||||||
* RRM (Radio Resource Measurements)
|
* RRM (Radio Resource Measurements)
|
||||||
|
|
|
@ -5633,7 +5633,7 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params->req_key_mgmt_offload &&
|
if (params->req_handshake_offload &&
|
||||||
(drv->capa.flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_8021X)) {
|
(drv->capa.flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_8021X)) {
|
||||||
wpa_printf(MSG_DEBUG, " * WANT_1X_4WAY_HS");
|
wpa_printf(MSG_DEBUG, " * WANT_1X_4WAY_HS");
|
||||||
if (nla_put_flag(msg, NL80211_ATTR_WANT_1X_4WAY_HS))
|
if (nla_put_flag(msg, NL80211_ATTR_WANT_1X_4WAY_HS))
|
||||||
|
|
|
@ -3229,7 +3229,7 @@ static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit)
|
||||||
params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SHA256 ||
|
params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SHA256 ||
|
||||||
params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SUITE_B ||
|
params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SUITE_B ||
|
||||||
params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SUITE_B_192))
|
params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SUITE_B_192))
|
||||||
params.req_key_mgmt_offload = 1;
|
params.req_handshake_offload = 1;
|
||||||
|
|
||||||
if (wpa_s->conf->key_mgmt_offload) {
|
if (wpa_s->conf->key_mgmt_offload) {
|
||||||
if (params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X ||
|
if (params.key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X ||
|
||||||
|
|
Loading…
Reference in a new issue