From: peterhuang Date: Wed, 18 Aug 2021 10:48:53 +0000 (+0800) Subject: Update supported channel width set (HT40) after channel switch X-Git-Tag: hostap_2_10~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bc24a8a09e9a0b5ff266689158cb8cb945ff3864;p=thirdparty%2Fhostap.git Update supported channel width set (HT40) after channel switch hostapd should update Supported Channel Width Set of HT Capability Information field after channel switching done. Otherwise, it would continue to use the old setting. Signed-off-by: peterhuang --- diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c index ec5abf166..a50e6f2af 100644 --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c @@ -957,6 +957,12 @@ void hostapd_event_ch_switch(struct hostapd_data *hapd, int freq, int ht, hapd->iconf->ch_switch_vht_config = 0; hapd->iconf->ch_switch_he_config = 0; + if (width == CHAN_WIDTH_40 || width == CHAN_WIDTH_80 || + width == CHAN_WIDTH_80P80 || width == CHAN_WIDTH_160) + hapd->iconf->ht_capab |= HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET; + else if (width == CHAN_WIDTH_20 || width == CHAN_WIDTH_20_NOHT) + hapd->iconf->ht_capab &= ~HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET; + hapd->iconf->secondary_channel = offset; hostapd_set_oper_chwidth(hapd->iconf, chwidth); hostapd_set_oper_centr_freq_seg0_idx(hapd->iconf, seg0_idx); diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c index 767314a47..4b88641a2 100644 --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -3461,6 +3461,20 @@ static int hostapd_change_config_freq(struct hostapd_data *hapd, NULL)) return -1; + switch (params->bandwidth) { + case 0: + case 20: + conf->ht_capab &= ~HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET; + break; + case 40: + case 80: + case 160: + conf->ht_capab |= HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET; + break; + default: + return -1; + } + switch (params->bandwidth) { case 0: case 20: