diff options
author | vamsi krishna <vamsin@qti.qualcomm.com> | 2017-12-14 09:44:51 (GMT) |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2017-12-15 18:52:17 (GMT) |
commit | d98038bb0562c214729fe94c16240f0029161e82 (patch) | |
tree | 3feb8b3612ec057c9928767d14dea431c24c435e /wpa_supplicant | |
parent | 9a3acf43e89f29553511bbdc62d41276bf2fa9fd (diff) | |
download | hostap-d98038bb0562c214729fe94c16240f0029161e82.zip hostap-d98038bb0562c214729fe94c16240f0029161e82.tar.gz hostap-d98038bb0562c214729fe94c16240f0029161e82.tar.bz2 |
FILS: Driver configuration to disable/enable FILS features
The new disable_fils parameter can be used to disable FILS functionality
in the driver. This is currently removing the FILS Capability bit in
Extended Capabilities and providing a callback to the driver wrappers.
driver_nl80211.c implements this using a QCA vendor specific command for
now.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Diffstat (limited to 'wpa_supplicant')
-rw-r--r-- | wpa_supplicant/ctrl_iface.c | 6 | ||||
-rw-r--r-- | wpa_supplicant/driver_i.h | 8 | ||||
-rw-r--r-- | wpa_supplicant/wpa_supplicant.c | 3 | ||||
-rw-r--r-- | wpa_supplicant/wpa_supplicant_i.h | 4 |
4 files changed, 20 insertions, 1 deletions
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 61fc170..9ad39b8 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -717,6 +717,12 @@ static int wpa_supplicant_ctrl_iface_set(struct wpa_supplicant *wpa_s, dpp_test = atoi(value); #endif /* CONFIG_DPP */ #endif /* CONFIG_TESTING_OPTIONS */ +#ifdef CONFIG_FILS + } else if (os_strcasecmp(cmd, "disable_fils") == 0) { + wpa_s->disable_fils = !!atoi(value); + wpa_drv_disable_fils(wpa_s, wpa_s->disable_fils); + wpa_supplicant_set_default_scan_ies(wpa_s); +#endif /* CONFIG_FILS */ #ifndef CONFIG_NO_CONFIG_BLOBS } else if (os_strcmp(cmd, "blob") == 0) { ret = wpas_ctrl_set_blob(wpa_s, value); diff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h index e131653..81b4b55 100644 --- a/wpa_supplicant/driver_i.h +++ b/wpa_supplicant/driver_i.h @@ -689,6 +689,14 @@ static inline int wpa_drv_roaming(struct wpa_supplicant *wpa_s, int allowed, return wpa_s->driver->roaming(wpa_s->drv_priv, allowed, bssid); } +static inline int wpa_drv_disable_fils(struct wpa_supplicant *wpa_s, + int disable) +{ + if (!wpa_s->driver->disable_fils) + return -1; + return wpa_s->driver->disable_fils(wpa_s->drv_priv, disable); +} + static inline int wpa_drv_set_mac_addr(struct wpa_supplicant *wpa_s, const u8 *addr) { diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index 28e8d31..984fe02 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -1606,7 +1606,8 @@ static void wpas_ext_capab_byte(struct wpa_supplicant *wpa_s, u8 *pos, int idx) break; case 9: /* Bits 72-79 */ #ifdef CONFIG_FILS - *pos |= 0x01; + if (!wpa_s->disable_fils) + *pos |= 0x01; #endif /* CONFIG_FILS */ break; } diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index b1331a5..d4c01ba 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -1215,6 +1215,10 @@ struct wpa_supplicant { unsigned int dpp_ignore_netaccesskey_mismatch:1; #endif /* CONFIG_TESTING_OPTIONS */ #endif /* CONFIG_DPP */ + +#ifdef CONFIG_FILS + unsigned int disable_fils:1; +#endif /* CONFIG_FILS */ }; |