From aad414e956fdb463d3b45eb61c42792bf0c9f558 Mon Sep 17 00:00:00 2001 From: Ouden Date: Thu, 30 Jan 2020 17:08:14 +0800 Subject: [PATCH] nl80211: Fix send_mlme for SAE external auth When external authentication is used, the station send mlme frame (auth) to the driver may not be able to get the frequency (bss->freq) after hostap.git commit b6f8b5a9 ("nl80211: Update freq only when CSA completes"). Use the assoc_freq to send the MLME frame when SAE external authentication is used to avoid this issue. Signed-off-by: Ouden --- src/drivers/driver_nl80211.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 64bea49e1..7305ed60b 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -3747,6 +3747,17 @@ static int wpa_driver_nl80211_send_mlme(struct i802_bss *bss, const u8 *data, encrypt = 0; } + if (freq == 0 && drv->nlmode == NL80211_IFTYPE_STATION && + (drv->capa.flags & WPA_DRIVER_FLAGS_SAE) && + !(drv->capa.flags & WPA_DRIVER_FLAGS_SME) && + WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT && + WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_AUTH) { + freq = nl80211_get_assoc_freq(drv); + wpa_printf(MSG_DEBUG, + "nl80211: send_mlme - Use assoc_freq=%u for external auth", + freq); + } + if (freq == 0 && drv->nlmode == NL80211_IFTYPE_ADHOC) { freq = nl80211_get_assoc_freq(drv); wpa_printf(MSG_DEBUG, -- 2.39.2