diff mbox series

check for driver SME support when selecting FT suites

Message ID 20190227012139.188973-1-matthewmwang@chromium.org
State Changes Requested
Headers show
Series check for driver SME support when selecting FT suites | expand

Commit Message

Matthew Wang Feb. 27, 2019, 1:21 a.m. UTC
Fast BSS Transition (802.11r) cannot be performed without driver support for
Station Management Entity (SME). However, wpa_supplicant will select FT suites
(FT-PSK and FT-EAP) even when the driver does not support it. This change has
wpa_supplicant select the FT suites only if the driver supports SME.
---
 wpa_supplicant/wpa_supplicant.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Jouni Malinen April 15, 2019, 10:37 p.m. UTC | #1
On Tue, Feb 26, 2019 at 05:21:39PM -0800, Matthew Wang wrote:
> Fast BSS Transition (802.11r) cannot be performed without driver support for
> Station Management Entity (SME). However, wpa_supplicant will select FT suites
> (FT-PSK and FT-EAP) even when the driver does not support it. This change has
> wpa_supplicant select the FT suites only if the driver supports SME.
> ---

Could you please read the top level CONTRIBUTIONS file (*) and provide a 
Signed-off-by: line for the commit message so that I can consider
applying this?

(*) http://w1.fi/cgit/hostap/plain/CONTRIBUTIONS


That said, I'd also like to understand how this has been tested with
drivers that do not use wpa_supplicant for SME, but that do support FT.
There are such drivers especially in number of Android devices and I'd
rather not break those use cases..
Brian Norris Aug. 8, 2019, 5:17 p.m. UTC | #2
+ Johannes, linux-wireless

I see Matthew resent this with the proper sign-off, but it's not going
anywhere, likely because of the below:

On Mon, Apr 15, 2019 at 3:38 PM Jouni Malinen <j@w1.fi> wrote:
> That said, I'd also like to understand how this has been tested with
> drivers that do not use wpa_supplicant for SME, but that do support FT.
> There are such drivers especially in number of Android devices and I'd
> rather not break those use cases..

I see exactly 1 upstream driver that implements
NL80211_CMD_UPDATE_FT_IES. We didn't really get anywhere so far on
this thread:

https://lore.kernel.org/linux-wireless/211816ff03cf188d834a21b1fbc98b4f8c5b81f4.camel@sipsolutions.net/

Brian
diff mbox series

Patch

diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 20ae588ad..0a758f840 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -1440,7 +1440,8 @@  int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s,
 			pmksa_cache_clear_current(wpa_s->wpa);
 		}
 #endif /* CONFIG_SHA384 */
-	} else if (sel & WPA_KEY_MGMT_FT_IEEE8021X) {
+	} else if ((sel & WPA_KEY_MGMT_FT_IEEE8021X) &&
+		   (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)) {
 		wpa_s->key_mgmt = WPA_KEY_MGMT_FT_IEEE8021X;
 		wpa_dbg(wpa_s, MSG_DEBUG, "WPA: using KEY_MGMT FT/802.1X");
 		if (pmksa_cache_get_current(wpa_s->wpa)) {
@@ -1450,7 +1451,8 @@  int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s,
 				"WPA: Disable PMKSA caching for FT/802.1X connection");
 			pmksa_cache_clear_current(wpa_s->wpa);
 		}
-	} else if (sel & WPA_KEY_MGMT_FT_PSK) {
+	} else if ((sel & WPA_KEY_MGMT_FT_PSK) &&
+		   (wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME)) {
 		wpa_s->key_mgmt = WPA_KEY_MGMT_FT_PSK;
 		wpa_dbg(wpa_s, MSG_DEBUG, "WPA: using KEY_MGMT FT/PSK");
 #endif /* CONFIG_IEEE80211R */