Lines Matching refs:chan
248 static void acs_clean_chan_surveys(struct hostapd_channel_data *chan) in acs_clean_chan_surveys() argument
252 if (dl_list_empty(&chan->survey_list)) in acs_clean_chan_surveys()
255 dl_list_for_each_safe(survey, tmp, &chan->survey_list, in acs_clean_chan_surveys()
266 struct hostapd_channel_data *chan; in acs_cleanup() local
269 chan = &iface->current_mode->channels[i]; in acs_cleanup()
271 if (chan->flag & HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED) in acs_cleanup()
272 acs_clean_chan_surveys(chan); in acs_cleanup()
274 dl_list_init(&chan->survey_list); in acs_cleanup()
275 chan->flag |= HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED; in acs_cleanup()
276 chan->min_nf = 0; in acs_cleanup()
327 struct hostapd_channel_data *chan) in acs_survey_chan_interference_factor() argument
334 if (dl_list_empty(&chan->survey_list)) in acs_survey_chan_interference_factor()
337 if (chan->flag & HOSTAPD_CHAN_DISABLED) in acs_survey_chan_interference_factor()
340 chan->interference_factor = 0; in acs_survey_chan_interference_factor()
342 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list) in acs_survey_chan_interference_factor()
354 chan->interference_factor += int_factor; in acs_survey_chan_interference_factor()
356 i, chan->min_nf, int_factor, in acs_survey_chan_interference_factor()
364 chan->interference_factor /= count; in acs_survey_chan_interference_factor()
368 static int acs_usable_ht40_chan(struct hostapd_channel_data *chan) in acs_usable_ht40_chan() argument
375 if (chan->chan == allowed[i]) in acs_usable_ht40_chan()
382 static int acs_usable_vht80_chan(struct hostapd_channel_data *chan) in acs_usable_vht80_chan() argument
388 if (chan->chan == allowed[i]) in acs_usable_vht80_chan()
418 static int acs_survey_list_is_sufficient(struct hostapd_channel_data *chan) in acs_survey_list_is_sufficient() argument
423 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list) in acs_survey_list_is_sufficient()
438 chan->chan); in acs_survey_list_is_sufficient()
448 struct hostapd_channel_data *chan; in acs_surveys_are_sufficient() local
452 chan = &iface->current_mode->channels[i]; in acs_surveys_are_sufficient()
453 if (chan->flag & HOSTAPD_CHAN_DISABLED) in acs_surveys_are_sufficient()
456 if (!acs_survey_list_is_sufficient(chan)) in acs_surveys_are_sufficient()
467 static int acs_usable_chan(struct hostapd_channel_data *chan) in acs_usable_chan() argument
469 if (dl_list_empty(&chan->survey_list)) in acs_usable_chan()
471 if (chan->flag & HOSTAPD_CHAN_DISABLED) in acs_usable_chan()
473 if (!acs_survey_list_is_sufficient(chan)) in acs_usable_chan()
480 struct hostapd_channel_data *chan) in is_in_chanlist() argument
485 return freq_range_list_includes(&iface->conf->acs_ch_list, chan->chan); in is_in_chanlist()
493 struct hostapd_channel_data *chan; in acs_survey_all_chans_intereference_factor() local
496 chan = &iface->current_mode->channels[i]; in acs_survey_all_chans_intereference_factor()
498 if (!acs_usable_chan(chan)) in acs_survey_all_chans_intereference_factor()
501 if (!is_in_chanlist(iface, chan)) in acs_survey_all_chans_intereference_factor()
505 chan->chan, chan->freq); in acs_survey_all_chans_intereference_factor()
507 acs_survey_chan_interference_factor(iface, chan); in acs_survey_all_chans_intereference_factor()
510 chan->interference_factor); in acs_survey_all_chans_intereference_factor()
518 struct hostapd_channel_data *chan; in acs_find_chan() local
522 chan = &iface->current_mode->channels[i]; in acs_find_chan()
524 if (chan->flag & HOSTAPD_CHAN_DISABLED) in acs_find_chan()
527 if (chan->freq == freq) in acs_find_chan()
528 return chan; in acs_find_chan()
542 static int is_common_24ghz_chan(int chan) in is_common_24ghz_chan() argument
544 return chan == 1 || chan == 6 || chan == 11; in is_common_24ghz_chan()
574 struct hostapd_channel_data *chan, *adj_chan, *ideal_chan = NULL, in acs_find_ideal_chan() local
608 chan = &iface->current_mode->channels[i]; in acs_find_ideal_chan()
610 if (chan->flag & HOSTAPD_CHAN_DISABLED) in acs_find_ideal_chan()
613 if (!is_in_chanlist(iface, chan)) in acs_find_ideal_chan()
621 !acs_usable_ht40_chan(chan)) { in acs_find_ideal_chan()
623 chan->chan); in acs_find_ideal_chan()
630 !acs_usable_vht80_chan(chan)) { in acs_find_ideal_chan()
632 chan->chan); in acs_find_ideal_chan()
637 if (acs_usable_chan(chan)) in acs_find_ideal_chan()
638 factor = chan->interference_factor; in acs_find_ideal_chan()
642 adj_chan = acs_find_chan(iface, chan->freq + (j * 20)); in acs_find_ideal_chan()
654 chan->chan); in acs_find_ideal_chan()
662 adj_chan = acs_find_chan(iface, chan->freq + in acs_find_ideal_chan()
670 adj_chan = acs_find_chan(iface, chan->freq + in acs_find_ideal_chan()
678 adj_chan = acs_find_chan(iface, chan->freq + in acs_find_ideal_chan()
686 adj_chan = acs_find_chan(iface, chan->freq + in acs_find_ideal_chan()
702 if (bias->channel == chan->chan) in acs_find_ideal_chan()
707 is_common_24ghz_chan(chan->chan)) { in acs_find_ideal_chan()
708 tmp_bias.channel = chan->chan; in acs_find_ideal_chan()
717 chan->chan, factor, bias->bias); in acs_find_ideal_chan()
721 chan->chan, factor); in acs_find_ideal_chan()
724 if (acs_usable_chan(chan) && in acs_find_ideal_chan()
727 ideal_chan = chan; in acs_find_ideal_chan()
732 rand_chan = chan; in acs_find_ideal_chan()
737 ideal_chan->chan, ideal_chan->freq, ideal_factor); in acs_find_ideal_chan()
822 iface->conf->channel = ideal_chan->chan; in acs_study()
881 struct hostapd_channel_data *chan; in acs_request_scan() local
892 chan = &iface->current_mode->channels[i]; in acs_request_scan()
893 if (chan->flag & HOSTAPD_CHAN_DISABLED) in acs_request_scan()
896 if (!is_in_chanlist(iface, chan)) in acs_request_scan()
899 *freq++ = chan->freq; in acs_request_scan()