]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
hostapd: SET ht_capab support for disabling 40 MHz bandwidth
authorSathishkumar Muruganandam <murugana@codeaurora.org>
Wed, 25 Jul 2018 12:46:20 +0000 (18:16 +0530)
committerJouni Malinen <j@w1.fi>
Tue, 21 Aug 2018 16:04:44 +0000 (19:04 +0300)
'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 <murugana@codeaurora.org>
hostapd/config_file.c

index 37308dbcc1272c970d21a7cb1921089d9bb209e2..0e86f10e0e530895f5b77c875f0b6361f1a03823 100644 (file)
@@ -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;