|
@@ -455,6 +455,22 @@ static int acs_usable_chan(struct hostapd_channel_data *chan)
|
|
|
}
|
|
|
|
|
|
|
|
|
+static int is_in_chanlist(struct hostapd_iface *iface,
|
|
|
+ struct hostapd_channel_data *chan)
|
|
|
+{
|
|
|
+ int *entry;
|
|
|
+
|
|
|
+ if (!iface->conf->chanlist)
|
|
|
+ return 1;
|
|
|
+
|
|
|
+ for (entry = iface->conf->chanlist; *entry != -1; entry++) {
|
|
|
+ if (*entry == chan->chan)
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
static void acs_survey_all_chans_intereference_factor(
|
|
|
struct hostapd_iface *iface)
|
|
|
{
|
|
@@ -467,6 +483,9 @@ static void acs_survey_all_chans_intereference_factor(
|
|
|
if (!acs_usable_chan(chan))
|
|
|
continue;
|
|
|
|
|
|
+ if (!is_in_chanlist(iface, chan))
|
|
|
+ continue;
|
|
|
+
|
|
|
wpa_printf(MSG_DEBUG, "ACS: Survey analysis for channel %d (%d MHz)",
|
|
|
chan->chan, chan->freq);
|
|
|
|
|
@@ -543,6 +562,8 @@ acs_find_ideal_chan(struct hostapd_iface *iface)
|
|
|
if (chan->flag & HOSTAPD_CHAN_DISABLED)
|
|
|
continue;
|
|
|
|
|
|
+ if (!is_in_chanlist(iface, chan))
|
|
|
+ continue;
|
|
|
|
|
|
/* HT40 on 5 GHz has a limited set of primary channels as per
|
|
|
* 11n Annex J */
|