From: neo_jou Date: Mon, 11 May 2020 07:42:49 +0000 (+0800) Subject: ACS: Channel selection based freqlist X-Git-Tag: hostap_2_10~1284 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=025ab330b4b28f59cf81476c6ae69a0e298be1da;p=thirdparty%2Fhostap.git ACS: Channel selection based freqlist When doing ACS, check freqlist also if it is specified. Signed-off-by: neojou --- diff --git a/src/ap/acs.c b/src/ap/acs.c index 5c0161070..aa2ceb0d1 100644 --- a/src/ap/acs.c +++ b/src/ap/acs.c @@ -512,6 +512,17 @@ static int is_in_chanlist(struct hostapd_iface *iface, } +static int is_in_freqlist(struct hostapd_iface *iface, + struct hostapd_channel_data *chan) +{ + if (!iface->conf->acs_freq_list.num) + return 1; + + return freq_range_list_includes(&iface->conf->acs_freq_list, + chan->freq); +} + + static void acs_survey_mode_interference_factor( struct hostapd_iface *iface, struct hostapd_hw_modes *mode) { @@ -527,6 +538,9 @@ static void acs_survey_mode_interference_factor( if (!is_in_chanlist(iface, chan)) continue; + if (!is_in_freqlist(iface, chan)) + continue; + wpa_printf(MSG_DEBUG, "ACS: Survey analysis for channel %d (%d MHz)", chan->chan, chan->freq); @@ -651,6 +665,9 @@ acs_find_ideal_chan_mode(struct hostapd_iface *iface, if (!is_in_chanlist(iface, chan)) continue; + if (!is_in_freqlist(iface, chan)) + continue; + if (!chan_bw_allowed(chan, bw, 1, 1)) { wpa_printf(MSG_DEBUG, "ACS: Channel %d: BW %u is not supported", @@ -1013,6 +1030,9 @@ static int * acs_request_scan_add_freqs(struct hostapd_iface *iface, if (!is_in_chanlist(iface, chan)) continue; + if (!is_in_freqlist(iface, chan)) + continue; + *freq++ = chan->freq; }