From 47abe29aa9865f475f0de187e5f3e21e39570fed Mon Sep 17 00:00:00 2001 From: Sathishkumar Muruganandam Date: Wed, 25 Jul 2018 18:16:20 +0530 Subject: [PATCH] hostapd: SET ht_capab support for disabling 40 MHz bandwidth 'hostapd_cli SET ht_capab' only checked for [HT40+] or [HT40-] or both to be present. Based on the offset + or -, secondary_channel is updated but HT20/VHT20 mode can be brought up only from config file and can't be done using the SET command when the current HT mode is HT40+ or HT40-. When managing AP+STA mode from userspace doing hostapd_cli: "disable -> set channel, ht_capab -> enable" sequence, channel switch from HT40/VHT40 to HT20/VHT20 was not possible with this SET ht_capab limitation. Cover this additional case by resetting secondary_channel to 0 for HT20/VHT20 when ht_capab has neither [HT40+] nor [HT40-] present. Signed-off-by: Sathishkumar Muruganandam --- hostapd/config_file.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 37308dbcc..0e86f10e0 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -1237,6 +1237,8 @@ static int hostapd_config_ht_capab(struct hostapd_config *conf, conf->ht_capab |= HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET; conf->ht40_plus_minus_allowed = 1; } + if (!os_strstr(capab, "[HT40+]") && !os_strstr(capab, "[HT40-]")) + conf->secondary_channel = 0; if (os_strstr(capab, "[SMPS-STATIC]")) { conf->ht_capab &= ~HT_CAP_INFO_SMPS_MASK; conf->ht_capab |= HT_CAP_INFO_SMPS_STATIC;