aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant
diff options
context:
space:
mode:
authorJouni Malinen <jouni@codeaurora.org>2018-12-20 19:24:48 (GMT)
committerJouni Malinen <j@w1.fi>2018-12-20 19:30:43 (GMT)
commit2a93ecc8cad10a29bb09567d7f96b986b9d71047 (patch)
treed8d92d6c86c34da3064c3f54b1cc3e533873ebea /wpa_supplicant
parent7488e0ade6dffb6df4c1fb6526a9f3ede0eb18ef (diff)
downloadhostap-2a93ecc8cad10a29bb09567d7f96b986b9d71047.zip
hostap-2a93ecc8cad10a29bb09567d7f96b986b9d71047.tar.gz
hostap-2a93ecc8cad10a29bb09567d7f96b986b9d71047.tar.bz2
Expose Multi-BSS STA capability through wpa_supplicant control interface
Indicate whether the driver advertises support for Multi-BSS STA functionality with "GET_CAPABILITY multibss" (returns "MULTIBSS-STA" if supported). Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
Diffstat (limited to 'wpa_supplicant')
-rw-r--r--wpa_supplicant/ctrl_iface.c7
-rw-r--r--wpa_supplicant/wpa_supplicant.c6
-rw-r--r--wpa_supplicant/wpa_supplicant_i.h1
3 files changed, 14 insertions, 0 deletions
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index a742949..951989a 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -4388,6 +4388,13 @@ static int wpa_supplicant_ctrl_iface_get_capability(
}
#endif /* CONFIG_FILS */
+ if (os_strcmp(field, "multibss") == 0 && wpa_s->multi_bss_support) {
+ res = os_snprintf(buf, buflen, "MULTIBSS-STA");
+ if (os_snprintf_error(buflen, res))
+ return -1;
+ return res;
+ }
+
wpa_printf(MSG_DEBUG, "CTRL_IFACE: Unknown GET_CAPABILITY field '%s'",
field);
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 1ade625..9beb4e5 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -5582,6 +5582,12 @@ static int wpa_supplicant_init_iface(struct wpa_supplicant *wpa_s,
capa.mac_addr_rand_sched_scan_supported)
wpa_s->mac_addr_rand_supported |=
(MAC_ADDR_RAND_SCHED_SCAN | MAC_ADDR_RAND_PNO);
+
+ wpa_drv_get_ext_capa(wpa_s, WPA_IF_STATION);
+ if (wpa_s->extended_capa &&
+ wpa_s->extended_capa_len >= 3 &&
+ wpa_s->extended_capa[2] & 0x40)
+ wpa_s->multi_bss_support = 1;
}
if (wpa_s->max_remain_on_chan == 0)
wpa_s->max_remain_on_chan = 1000;
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index b3a7db6..615f658 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1235,6 +1235,7 @@ struct wpa_supplicant {
#endif /* CONFIG_FILS */
unsigned int ieee80211ac:1;
unsigned int enabled_4addr_mode:1;
+ unsigned int multi_bss_support:1;
};