diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c index ba7cc2935..381809d72 100644 --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c @@ -2680,9 +2680,9 @@ static int hostapd_ctrl_iface_chan_switch(struct hostapd_iface *iface, for (i = 0; i < iface->num_bss; i++) { - /* Save CHAN_SWITCH VHT config */ - hostapd_chan_switch_vht_config( - iface->bss[i], settings.freq_params.vht_enabled); + /* Save CHAN_SWITCH VHT and HE config */ + hostapd_chan_switch_config(iface->bss[i], + &settings.freq_params); ret = hostapd_switch_channel(iface->bss[i], &settings); if (ret) { diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c index 1de032930..1b105227d 100644 --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c @@ -3557,15 +3557,23 @@ void hostapd_cleanup_cs_params(struct hostapd_data *hapd) } -void hostapd_chan_switch_vht_config(struct hostapd_data *hapd, int vht_enabled) +void hostapd_chan_switch_config(struct hostapd_data *hapd, + struct hostapd_freq_params *freq_params) { - if (vht_enabled) + if (freq_params->he_enabled) + hapd->iconf->ch_switch_he_config |= CH_SWITCH_HE_ENABLED; + else + hapd->iconf->ch_switch_he_config |= CH_SWITCH_HE_DISABLED; + + if (freq_params->vht_enabled) hapd->iconf->ch_switch_vht_config |= CH_SWITCH_VHT_ENABLED; else hapd->iconf->ch_switch_vht_config |= CH_SWITCH_VHT_DISABLED; hostapd_logger(hapd, NULL, HOSTAPD_MODULE_IEEE80211, - HOSTAPD_LEVEL_INFO, "CHAN_SWITCH VHT CONFIG 0x%x", + HOSTAPD_LEVEL_INFO, + "CHAN_SWITCH HE config 0x%x VHT config 0x%x", + hapd->iconf->ch_switch_he_config, hapd->iconf->ch_switch_vht_config); } diff --git a/src/ap/hostapd.h b/src/ap/hostapd.h index 0eff47e1a..0736f451d 100644 --- a/src/ap/hostapd.h +++ b/src/ap/hostapd.h @@ -631,7 +631,8 @@ void hostapd_channel_list_updated(struct hostapd_iface *iface, int initiator); void hostapd_set_state(struct hostapd_iface *iface, enum hostapd_iface_state s); const char * hostapd_state_text(enum hostapd_iface_state s); int hostapd_csa_in_progress(struct hostapd_iface *iface); -void hostapd_chan_switch_vht_config(struct hostapd_data *hapd, int vht_enabled); +void hostapd_chan_switch_config(struct hostapd_data *hapd, + struct hostapd_freq_params *freq_params); int hostapd_switch_channel(struct hostapd_data *hapd, struct csa_settings *settings); void