Lines Matching +full:switch +full:- +full:freq +full:- +full:select
2 * ACS - Automatic Channel Selection module
31 * ------------
35 * ----------
36 * - make sure you have CONFIG_ACS=y in hostapd's .config
37 * - use channel=0 or channel=acs to enable ACS
40 * ----------------
48 * -----------------
49 * - Current implementation depends heavily on the amount of time willing to
52 * - Ideal channel may end up overlapping a channel with 40 MHz intolerant BSS
55 * ------------
56 * - implement other interference computation methods
57 * - BSS/RSSI based
58 * - spectral scan based
60 * - add wpa_supplicant support (for P2P)
61 * - collect a histogram of interference over time allowing more educated
64 * - include neighboring BSS scan to avoid conflicts with 40 MHz intolerant BSSs
68 * -------------------------------------------------
78 * ---
79 * (busy time - tx time) / (active time - tx time) * 2^(chan_nf - band_min_nf)
80 * ---
82 * The coefficient of 2 reflects the way power in "far-field"
94 * ---
95 * (busy time - tx time) / (active time - tx time) *
96 * 2^(10^(chan_nf/10) - 10^(band_min_nf/10))
97 * ---
102 * ---
103 * 10^(chan_nf/5) + (busy time - tx time) / (active time - tx time) *
104 * 2^(10^(chan_nf/10) - 10^(band_min_nf/10))
105 * ---
115 * --------------------------------------
128 * Note: This implies base channel interference factor must be non-negative
132 * -----------------------------
134 * ACS: Trying survey-based ACS
136 * ACS: 1: min_nf=-113 interference_factor=0.0802469 nf=-113 time=162 busy=0 rx=13
137 * ACS: 2: min_nf=-113 interference_factor=0.0745342 nf=-113 time=161 busy=0 rx=12
138 * ACS: 3: min_nf=-113 interference_factor=0.0679012 nf=-113 time=162 busy=0 rx=11
139 * ACS: 4: min_nf=-113 interference_factor=0.0310559 nf=-113 time=161 busy=0 rx=5
140 * ACS: 5: min_nf=-113 interference_factor=0.0248447 nf=-113 time=161 busy=0 rx=4
143 * ACS: 1: min_nf=-113 interference_factor=0.0185185 nf=-113 time=162 busy=0 rx=3
144 * ACS: 2: min_nf=-113 interference_factor=0.0246914 nf=-113 time=162 busy=0 rx=4
145 * ACS: 3: min_nf=-113 interference_factor=0.037037 nf=-113 time=162 busy=0 rx=6
146 * ACS: 4: min_nf=-113 interference_factor=0.149068 nf=-113 time=161 busy=0 rx=24
147 * ACS: 5: min_nf=-113 interference_factor=0.0248447 nf=-113 time=161 busy=0 rx=4
150 * ACS: 1: min_nf=-113 interference_factor=2.51189e-23 nf=-113 time=162 busy=0 rx=0
151 * ACS: 2: min_nf=-113 interference_factor=0.0185185 nf=-113 time=162 busy=0 rx=3
152 * ACS: 3: min_nf=-113 interference_factor=0.0186335 nf=-113 time=161 busy=0 rx=3
153 * ACS: 4: min_nf=-113 interference_factor=0.0186335 nf=-113 time=161 busy=0 rx=3
154 * ACS: 5: min_nf=-113 interference_factor=0.0186335 nf=-113 time=161 busy=0 rx=3
157 * ACS: 1: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=162 busy=0 rx=0
158 * ACS: 2: min_nf=-114 interference_factor=0.0555556 nf=-114 time=162 busy=0 rx=9
159 * ACS: 3: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=161 busy=0 rx=0
160 * ACS: 4: min_nf=-114 interference_factor=0.0186335 nf=-114 time=161 busy=0 rx=3
161 * ACS: 5: min_nf=-114 interference_factor=0.00621118 nf=-114 time=161 busy=0 rx=1
164 * ACS: 1: min_nf=-114 interference_factor=0.409938 nf=-113 time=161 busy=0 rx=66
165 * ACS: 2: min_nf=-114 interference_factor=0.0432099 nf=-113 time=162 busy=0 rx=7
166 * ACS: 3: min_nf=-114 interference_factor=0.0124224 nf=-113 time=161 busy=0 rx=2
167 * ACS: 4: min_nf=-114 interference_factor=0.677019 nf=-113 time=161 busy=0 rx=109
168 * ACS: 5: min_nf=-114 interference_factor=0.0186335 nf=-114 time=161 busy=0 rx=3
171 * ACS: 1: min_nf=-113 interference_factor=0.552795 nf=-113 time=161 busy=0 rx=89
172 * ACS: 2: min_nf=-113 interference_factor=0.0807453 nf=-112 time=161 busy=0 rx=13
173 * ACS: 3: min_nf=-113 interference_factor=0.0310559 nf=-113 time=161 busy=0 rx=5
174 * ACS: 4: min_nf=-113 interference_factor=0.434783 nf=-112 time=161 busy=0 rx=70
175 * ACS: 5: min_nf=-113 interference_factor=0.0621118 nf=-113 time=161 busy=0 rx=10
178 * ACS: 1: min_nf=-113 interference_factor=0.440994 nf=-112 time=161 busy=0 rx=71
179 * ACS: 2: min_nf=-113 interference_factor=0.385093 nf=-113 time=161 busy=0 rx=62
180 * ACS: 3: min_nf=-113 interference_factor=0.0372671 nf=-113 time=161 busy=0 rx=6
181 * ACS: 4: min_nf=-113 interference_factor=0.0372671 nf=-113 time=161 busy=0 rx=6
182 * ACS: 5: min_nf=-113 interference_factor=0.0745342 nf=-113 time=161 busy=0 rx=12
185 * ACS: 1: min_nf=-114 interference_factor=0.0496894 nf=-112 time=161 busy=0 rx=8
186 * ACS: 2: min_nf=-114 interference_factor=0.0496894 nf=-114 time=161 busy=0 rx=8
187 * ACS: 3: min_nf=-114 interference_factor=0.0372671 nf=-113 time=161 busy=0 rx=6
188 * ACS: 4: min_nf=-114 interference_factor=0.12963 nf=-113 time=162 busy=0 rx=21
189 * ACS: 5: min_nf=-114 interference_factor=0.166667 nf=-114 time=162 busy=0 rx=27
192 * ACS: 1: min_nf=-114 interference_factor=0.0124224 nf=-114 time=161 busy=0 rx=2
193 * ACS: 2: min_nf=-114 interference_factor=0.0310559 nf=-114 time=161 busy=0 rx=5
194 * ACS: 3: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=161 busy=0 rx=0
195 * ACS: 4: min_nf=-114 interference_factor=0.00617284 nf=-114 time=162 busy=0 rx=1
196 * ACS: 5: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=162 busy=0 rx=0
199 * ACS: 1: min_nf=-114 interference_factor=0.00621118 nf=-114 time=161 busy=0 rx=1
200 * ACS: 2: min_nf=-114 interference_factor=0.00621118 nf=-114 time=161 busy=0 rx=1
201 * ACS: 3: min_nf=-114 interference_factor=0.00621118 nf=-114 time=161 busy=0 rx=1
202 * ACS: 4: min_nf=-114 interference_factor=0.0493827 nf=-114 time=162 busy=0 rx=8
203 * ACS: 5: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=162 busy=0 rx=0
206 * ACS: 1: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=161 busy=0 rx=0
207 * ACS: 2: min_nf=-114 interference_factor=2.51189e-23 nf=-113 time=161 busy=0 rx=0
208 * ACS: 3: min_nf=-114 interference_factor=2.51189e-23 nf=-113 time=161 busy=0 rx=0
209 * ACS: 4: min_nf=-114 interference_factor=0.0432099 nf=-114 time=162 busy=0 rx=7
210 * ACS: 5: min_nf=-114 interference_factor=0.0925926 nf=-114 time=162 busy=0 rx=15
213 * ACS: 1: min_nf=-114 interference_factor=0.0621118 nf=-113 time=161 busy=0 rx=10
214 * ACS: 2: min_nf=-114 interference_factor=0.00621118 nf=-114 time=161 busy=0 rx=1
215 * ACS: 3: min_nf=-114 interference_factor=2.51189e-23 nf=-113 time=162 busy=0 rx=0
216 * ACS: 4: min_nf=-114 interference_factor=2.51189e-23 nf=-113 time=162 busy=0 rx=0
217 * ACS: 5: min_nf=-114 interference_factor=0.00617284 nf=-113 time=162 busy=0 rx=1
220 * ACS: 1: min_nf=-114 interference_factor=0.0745342 nf=-114 time=161 busy=0 rx=12
221 * ACS: 2: min_nf=-114 interference_factor=0.0555556 nf=-114 time=162 busy=0 rx=9
222 * ACS: 3: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=162 busy=0 rx=0
223 * ACS: 4: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=162 busy=0 rx=0
224 * ACS: 5: min_nf=-114 interference_factor=1.58489e-23 nf=-114 time=162 busy=0 rx=0
274 { 7035, 7055, 219 }, { 7075, 7095, 227}, { -1, -1, -1 }
284 { 6915, 6975, 199 }, { 6995, 7055, 215 }, { -1, -1, -1 }
290 { 6755, 6895, 175 }, { 6915, 7055, 207 }, { -1, -1, -1 }
294 { -1, -1, -1 }
298 { -1, -1, -1 }
318 if (dl_list_empty(&chan->survey_list))
321 dl_list_for_each_safe(survey, tmp, &chan->survey_list,
323 dl_list_del(&survey->list);
334 for (i = 0; i < mode->num_channels; i++) {
335 chan = &mode->channels[i];
337 if (chan->flag & HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED)
340 dl_list_init(&chan->survey_list);
341 chan->flag |= HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED;
342 chan->min_nf = 0;
343 chan->punct_bitmap = 0;
352 for (i = 0; i < iface->num_hw_features; i++)
353 acs_cleanup_mode(&iface->hw_features[i]);
355 iface->chans_surveyed = 0;
356 iface->acs_num_completed_scans = 0;
357 iface->acs_num_retries = 0;
375 if (survey->filled & SURVEY_HAS_CHAN_TIME_BUSY)
376 busy = survey->channel_time_busy;
377 else if (survey->filled & SURVEY_HAS_CHAN_TIME_RX)
378 busy = survey->channel_time_rx;
384 total = survey->channel_time;
386 if (survey->filled & SURVEY_HAS_CHAN_TIME_TX) {
387 busy -= survey->channel_time_tx;
388 total -= survey->channel_time_tx;
392 factor = pow(10, survey->nf / 5.0L) +
394 pow(2, pow(10, (long double) survey->nf / 10.0L) -
410 if (dl_list_empty(&chan->survey_list) ||
411 (chan->flag & HOSTAPD_CHAN_DISABLED))
414 chan->interference_factor = 0;
416 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
427 iface->lowest_nf);
428 chan->interference_factor += int_factor;
430 i, chan->min_nf, int_factor,
431 survey->nf, (unsigned long) survey->channel_time,
432 (unsigned long) survey->channel_time_busy,
433 (unsigned long) survey->channel_time_rx);
437 chan->interference_factor /= count;
446 while (bw_desc[bw][i].first != -1) {
447 if (chan->freq == bw_desc[bw][i].first)
456 static int acs_get_bw_center_chan(int freq, enum bw_type bw)
460 while (bw_desc[bw][i].first != -1) {
461 if (freq >= bw_desc[bw][i].first &&
462 freq <= bw_desc[bw][i].last)
473 if (!(survey->filled & SURVEY_HAS_NF)) {
475 "ACS: Survey for freq %d is missing noise floor",
476 survey->freq);
480 if (!(survey->filled & SURVEY_HAS_CHAN_TIME)) {
482 "ACS: Survey for freq %d is missing channel time",
483 survey->freq);
487 if (!(survey->filled & SURVEY_HAS_CHAN_TIME_BUSY) &&
488 !(survey->filled & SURVEY_HAS_CHAN_TIME_RX)) {
490 "ACS: Survey for freq %d is missing RX and busy time (at least one is required)",
491 survey->freq);
502 int ret = -1;
504 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
513 if (ret == -1)
519 chan->chan);
531 for (i = 0; i < mode->num_channels; i++) {
532 chan = &mode->channels[i];
533 if (!(chan->flag & HOSTAPD_CHAN_DISABLED) &&
547 for (i = 0; i < iface->num_hw_features; i++) {
548 mode = &iface->hw_features[i];
560 return !dl_list_empty(&chan->survey_list) &&
561 !(chan->flag & HOSTAPD_CHAN_DISABLED) &&
569 if (!iface->conf->acs_ch_list.num)
572 return freq_range_list_includes(&iface->conf->acs_ch_list, chan->chan);
579 if (!iface->conf->acs_freq_list.num)
582 return freq_range_list_includes(&iface->conf->acs_freq_list,
583 chan->freq);
593 for (i = 0; i < mode->num_channels; i++) {
594 chan = &mode->channels[i];
599 if ((chan->flag & HOSTAPD_CHAN_RADAR) &&
600 iface->conf->acs_exclude_dfs)
609 if (chan->max_tx_power < iface->conf->min_tx_power)
612 if ((chan->flag & HOSTAPD_CHAN_INDOOR_ONLY) &&
613 iface->conf->country[2] == 0x4f)
617 chan->chan, chan->freq);
622 chan->interference_factor);
633 for (i = 0; i < iface->num_hw_features; i++) {
634 mode = &iface->hw_features[i];
642 acs_find_chan_mode(struct hostapd_hw_modes *mode, int freq)
647 for (i = 0; i < mode->num_channels; i++) {
648 chan = &mode->channels[i];
650 if (chan->flag & HOSTAPD_CHAN_DISABLED)
653 if (chan->freq == freq)
662 acs_find_mode(struct hostapd_iface *iface, int freq)
668 for (i = 0; i < iface->num_hw_features; i++) {
669 mode = &iface->hw_features[i];
671 chan = acs_find_chan_mode(mode, freq);
673 return mode->mode;
682 acs_find_chan(struct hostapd_iface *iface, int freq)
688 for (i = 0; i < iface->num_hw_features; i++) {
689 mode = &iface->hw_features[i];
691 chan = acs_find_chan_mode(mode, freq);
724 * Select commonly used channels 1, 6, 11 by default even if a neighboring
740 struct hostapd_config *conf = iface->conf;
749 if (!conf->punct_acs_threshold || conf->punct_bitmap)
752 if (is_24ghz_mode(mode->mode) || bw < 80)
755 threshold = factor * conf->punct_acs_threshold / 100;
763 adj_freq = chan->freq + (i - index_primary) * 20;
765 adj_freq = chan->freq - (index_primary - i) * 20;
769 chan->punct_bitmap = 0;
776 if (adj_chan->interference_factor > threshold)
777 chan->punct_bitmap |= BIT(i);
780 if (!is_punct_bitmap_valid(bw, (chan->freq - first_chan->freq) / 20,
781 chan->punct_bitmap))
782 chan->punct_bitmap = 0;
791 const char *bw320_str[] = { "320 MHz", "320 MHz-1", "320 MHz-2" };
792 int conf_bw320_offset = hostapd_get_bw320_offset(iface->conf);
795 switch (conf_bw320_offset) {
817 chan->chan, bw320_str[conf_bw320_offset]);
841 if (is_24ghz_mode(mode->mode))
842 secondary_channel = iface->conf->secondary_channel;
844 for (i = 0; i < mode->num_channels; i++) {
848 chan = &mode->channels[i];
863 if ((chan->flag & HOSTAPD_CHAN_RADAR) &&
864 iface->conf->acs_exclude_dfs)
873 if (chan->max_tx_power < iface->conf->min_tx_power)
876 if ((chan->flag & HOSTAPD_CHAN_INDOOR_ONLY) &&
877 iface->conf->country[2] == 0x4f)
880 if (!chan_bw_allowed(chan, bw, secondary_channel != -1, 1)) {
883 chan->chan, bw);
889 if (mode->mode == HOSTAPD_MODE_IEEE80211A &&
890 ((iface->conf->ieee80211n &&
891 iface->conf->secondary_channel) ||
892 is_6ghz_freq(chan->freq)) &&
896 chan->chan);
900 if (mode->mode == HOSTAPD_MODE_IEEE80211A &&
901 (iface->conf->ieee80211ac || iface->conf->ieee80211ax ||
902 iface->conf->ieee80211be)) {
903 if (hostapd_get_oper_chwidth(iface->conf) ==
908 chan->chan);
912 if (hostapd_get_oper_chwidth(iface->conf) ==
917 chan->chan);
922 if (mode->mode == HOSTAPD_MODE_IEEE80211A &&
923 iface->conf->ieee80211be) {
924 if (hostapd_get_oper_chwidth(iface->conf) ==
933 factor = chan->interference_factor;
939 adj_chan = acs_find_chan(iface, chan->freq +
947 chan->chan, adj_chan->chan, bw);
954 factor += adj_chan->interference_factor;
958 if (!best || adj_chan->interference_factor <
959 best->interference_factor)
965 chan->chan);
971 if (iface->current_mode &&
972 iface->current_mode->mode == HOSTAPD_MODE_IEEE80211A &&
976 best->chan, chan->chan,
977 chan->interference_factor,
978 best->interference_factor);
980 index_primary = (chan->freq - best->freq) / 20;
987 if (is_24ghz_mode(mode->mode)) {
990 adj_chan = acs_find_chan(iface, chan->freq +
991 freq_offset - 5);
994 adj_chan->interference_factor;
998 adj_chan = acs_find_chan(iface, chan->freq +
999 freq_offset - 10);
1002 adj_chan->interference_factor;
1006 adj_chan = acs_find_chan(iface, chan->freq +
1010 adj_chan->interference_factor;
1014 adj_chan = acs_find_chan(iface, chan->freq +
1018 adj_chan->interference_factor;
1030 if (iface->conf->acs_chan_bias) {
1031 for (k = 0; k < iface->conf->num_acs_chan_bias; k++) {
1032 bias = &iface->conf->acs_chan_bias[k];
1033 if (bias->channel == chan->chan)
1037 } else if (is_24ghz_mode(mode->mode) &&
1038 is_common_24ghz_chan(chan->chan)) {
1039 tmp_bias.channel = chan->chan;
1045 factor *= bias->bias;
1048 chan->chan, factor, bias->bias);
1052 chan->chan, factor);
1060 (*ideal_chan)->punct_bitmap = 0;
1067 if (iface->conf->ieee80211be)
1082 hostapd_set_and_check_bw320_offset(iface->conf, ideal_bw320_offset);
1087 * At this point it's assumed chan->interference_factor has been computed.
1089 * option (survey, BSS, spectral, ...). chan->interference factor must be
1103 if (is_6ghz_op_class(iface->conf->op_class)) {
1104 bw = op_class_to_bandwidth(iface->conf->op_class);
1109 if (iface->conf->ieee80211n &&
1110 iface->conf->secondary_channel)
1113 if (iface->conf->ieee80211ac || iface->conf->ieee80211ax ||
1114 iface->conf->ieee80211be) {
1115 switch (hostapd_get_oper_chwidth(iface->conf)) {
1138 for (i = 0; i < iface->num_hw_features; i++) {
1139 mode = &iface->hw_features[i];
1148 ideal_chan->chan, ideal_chan->freq, ideal_factor);
1151 if (iface->conf->punct_acs_threshold)
1153 ideal_chan->punct_bitmap);
1170 if (!iface->conf->secondary_channel ||
1171 acs_find_mode(iface, iface->freq) != HOSTAPD_MODE_IEEE80211A)
1177 for (i = 0; bw_desc[ACS_BW40][i].first != -1; i++) {
1178 if (iface->freq == bw_desc[ACS_BW40][i].first)
1179 iface->conf->secondary_channel = 1;
1180 else if (iface->freq == bw_desc[ACS_BW40][i].last)
1181 iface->conf->secondary_channel = -1;
1192 switch (hostapd_get_oper_chwidth(iface->conf)) {
1194 if (iface->conf->secondary_channel &&
1195 iface->freq >= 2400 && iface->freq < 2500)
1196 center = iface->conf->channel +
1197 2 * iface->conf->secondary_channel;
1198 else if (iface->conf->secondary_channel)
1199 center = acs_get_bw_center_chan(iface->freq, ACS_BW40);
1201 center = iface->conf->channel;
1204 center = acs_get_bw_center_chan(iface->freq, ACS_BW80);
1207 center = acs_get_bw_center_chan(iface->freq, ACS_BW160);
1210 switch (hostapd_get_bw320_offset(iface->conf)) {
1212 center = acs_get_bw_center_chan(iface->freq,
1216 center = acs_get_bw_center_chan(iface->freq,
1234 hostapd_set_oper_centr_freq_seg0_idx(iface->conf, center);
1240 wpa_printf(MSG_DEBUG, "ACS: Trying survey-based ACS");
1242 if (!iface->chans_surveyed) {
1244 return -1;
1249 return -1;
1263 * place to fallback to BSS-based ACS */
1265 return -1;
1283 err = -1;
1287 iface->conf->channel = ideal_chan->chan;
1288 iface->freq = ideal_chan->freq;
1290 iface->conf->punct_bitmap = ideal_chan->punct_bitmap;
1293 if (iface->conf->ieee80211ac || iface->conf->ieee80211ax ||
1294 iface->conf->ieee80211be) {
1302 "ACS: Could not (err: %d) select hw_mode for freq=%d channel=%d",
1303 err, iface->freq, iface->conf->channel);
1304 err = -1;
1311 * hostapd_setup_interface_complete() will return -1 on failure,
1330 iface->scan_cb = NULL;
1331 iface->acs_num_retries = 0;
1334 iface->conf->acs_num_scans);
1336 err = hostapd_drv_get_survey(iface->bss[0], 0);
1342 if (++iface->acs_num_completed_scans < iface->conf->acs_num_scans) {
1344 if (err && err != -EBUSY) {
1362 int *freq)
1367 for (i = 0; i < mode->num_channels; i++) {
1368 chan = &mode->channels[i];
1369 if ((chan->flag & HOSTAPD_CHAN_DISABLED) ||
1370 ((chan->flag & HOSTAPD_CHAN_RADAR) &&
1371 iface->conf->acs_exclude_dfs))
1380 if (chan->max_tx_power < iface->conf->min_tx_power)
1383 if ((chan->flag & HOSTAPD_CHAN_INDOOR_ONLY) &&
1384 iface->conf->country[2] == 0x4f)
1387 *freq++ = chan->freq;
1390 return freq;
1397 int i, *freq, ret;
1404 for (i = 0; i < iface->num_hw_features; i++) {
1405 mode = &iface->hw_features[i];
1407 num_channels += mode->num_channels;
1412 return -1;
1414 freq = params.freqs;
1416 for (i = 0; i < iface->num_hw_features; i++) {
1417 mode = &iface->hw_features[i];
1419 freq = acs_request_scan_add_freqs(iface, mode, freq);
1422 *freq = 0;
1424 if (params.freqs == freq) {
1427 return -1;
1430 if (!iface->acs_num_retries)
1432 iface->acs_num_completed_scans + 1,
1433 iface->conf->acs_num_scans);
1436 "ACS: Re-try scanning attempt %d (%d / %d)",
1437 iface->acs_num_retries,
1438 iface->acs_num_completed_scans + 1,
1439 iface->conf->acs_num_scans);
1441 ret = hostapd_driver_scan(iface->bss[0], ¶ms);
1444 if (ret == -EBUSY) {
1445 iface->acs_num_retries++;
1446 if (iface->acs_num_retries >= ACS_SCAN_RETRY_MAX_COUNT) {
1448 "ACS: Failed to request initial scan (all re-attempts failed)");
1450 return -1;
1454 "Failed to request acs scan ret=%d (%s) - try to scan after %d seconds",
1455 ret, strerror(-ret), ACS_SCAN_RETRY_INTERVAL);
1465 return -1;
1468 iface->scan_cb = acs_scan_complete;
1480 "ACS: Failed to request re-try of initial scan");
1492 if (iface->drv_flags & WPA_DRIVER_FLAGS_ACS_OFFLOAD) {
1495 err = hostapd_drv_do_acs(iface->bss[0]);
1505 if (!iface->current_mode &&
1506 iface->conf->hw_mode != HOSTAPD_MODE_IEEE80211ANY)
1515 wpa_msg(iface->bss[0]->msg_ctx, MSG_INFO, ACS_EVENT_STARTED);