Message ID | 20190227012139.188973-1-matthewmwang@chromium.org |
---|---|
State | Changes Requested |
Headers | show |
Series | check for driver SME support when selecting FT suites | expand |
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..
+ 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 --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 */