From 37528a5205cb0b9e2238b7d97fb2ff5457448f1c Mon Sep 17 00:00:00 2001 From: David Bauer Date: Thu, 8 Sep 2022 01:45:41 +0200 Subject: [PATCH] acs: don't select indoor channel on outdoor operation Don't select channels designated for exclusive-indoor use when the country3 element is set on outdoor operation. Signed-off-by: David Bauer --- src/ap/acs.c | 9 +++++++++ src/ap/dfs.c | 3 +++ 2 files changed, 12 insertions(+) --- a/src/ap/acs.c +++ b/src/ap/acs.c @@ -552,6 +552,9 @@ static void acs_survey_mode_interference if (chan->max_tx_power < iface->conf->min_tx_power) continue; + if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f) + continue; + wpa_printf(MSG_DEBUG, "ACS: Survey analysis for channel %d (%d MHz)", chan->chan, chan->freq); @@ -686,6 +689,9 @@ acs_find_ideal_chan_mode(struct hostapd_ if (chan->max_tx_power < iface->conf->min_tx_power) continue; + if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f) + continue; + if (!chan_bw_allowed(chan, bw, 1, 1)) { wpa_printf(MSG_DEBUG, "ACS: Channel %d: BW %u is not supported", @@ -1067,6 +1073,9 @@ static int * acs_request_scan_add_freqs( if (chan->max_tx_power < iface->conf->min_tx_power) continue; + if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f) + continue; + *freq++ = chan->freq; } --- a/src/ap/dfs.c +++ b/src/ap/dfs.c @@ -282,6 +282,9 @@ static int dfs_find_channel(struct hosta if (chan->max_tx_power < iface->conf->min_tx_power) continue; + if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f) + continue; + if (ret_chan && idx == channel_idx) { wpa_printf(MSG_DEBUG, "Selected channel %d (%d)", chan->freq, chan->chan);