Lines Matching refs:chan

248 static void acs_clean_chan_surveys(struct hostapd_channel_data *chan)
252 if (dl_list_empty(&chan->survey_list))
255 dl_list_for_each_safe(survey, tmp, &chan->survey_list,
266 struct hostapd_channel_data *chan;
269 chan = &iface->current_mode->channels[i];
271 if (chan->flag & HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED)
272 acs_clean_chan_surveys(chan);
274 dl_list_init(&chan->survey_list);
275 chan->flag |= HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED;
276 chan->min_nf = 0;
327 struct hostapd_channel_data *chan)
334 if (dl_list_empty(&chan->survey_list))
337 if (chan->flag & HOSTAPD_CHAN_DISABLED)
340 chan->interference_factor = 0;
342 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
354 chan->interference_factor += int_factor;
356 i, chan->min_nf, int_factor,
364 chan->interference_factor /= count;
368 static int acs_usable_ht40_chan(struct hostapd_channel_data *chan)
375 if (chan->chan == allowed[i])
382 static int acs_usable_vht80_chan(struct hostapd_channel_data *chan)
388 if (chan->chan == allowed[i])
418 static int acs_survey_list_is_sufficient(struct hostapd_channel_data *chan)
423 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
438 chan->chan);
448 struct hostapd_channel_data *chan;
452 chan = &iface->current_mode->channels[i];
453 if (chan->flag & HOSTAPD_CHAN_DISABLED)
456 if (!acs_survey_list_is_sufficient(chan))
467 static int acs_usable_chan(struct hostapd_channel_data *chan)
469 if (dl_list_empty(&chan->survey_list))
471 if (chan->flag & HOSTAPD_CHAN_DISABLED)
473 if (!acs_survey_list_is_sufficient(chan))
480 struct hostapd_channel_data *chan)
485 return freq_range_list_includes(&iface->conf->acs_ch_list, chan->chan);
493 struct hostapd_channel_data *chan;
496 chan = &iface->current_mode->channels[i];
498 if (!acs_usable_chan(chan))
501 if (!is_in_chanlist(iface, chan))
505 chan->chan, chan->freq);
507 acs_survey_chan_interference_factor(iface, chan);
510 chan->interference_factor);
518 struct hostapd_channel_data *chan;
522 chan = &iface->current_mode->channels[i];
524 if (chan->flag & HOSTAPD_CHAN_DISABLED)
527 if (chan->freq == freq)
528 return chan;
542 static int is_common_24ghz_chan(int chan)
544 return chan == 1 || chan == 6 || chan == 11;
566 * At this point it's assumed chan->interface_factor has been computed.
568 * option (survey, BSS, spectral, ...). chan->interference factor must be
574 struct hostapd_channel_data *chan, *adj_chan, *ideal_chan = NULL,
609 chan = &iface->current_mode->channels[i];
611 if (chan->flag & HOSTAPD_CHAN_DISABLED)
614 if (!is_in_chanlist(iface, chan))
622 !acs_usable_ht40_chan(chan)) {
624 chan->chan);
631 !acs_usable_vht80_chan(chan)) {
633 chan->chan);
638 if (acs_usable_chan(chan))
639 factor = chan->interference_factor;
643 adj_chan = acs_find_chan(iface, chan->freq + (j * 20));
655 chan->chan);
663 adj_chan = acs_find_chan(iface, chan->freq +
671 adj_chan = acs_find_chan(iface, chan->freq +
679 adj_chan = acs_find_chan(iface, chan->freq +
687 adj_chan = acs_find_chan(iface, chan->freq +
703 if (bias->channel == chan->chan)
708 is_common_24ghz_chan(chan->chan)) {
709 tmp_bias.channel = chan->chan;
718 chan->chan, factor, bias->bias);
722 chan->chan, factor);
725 if (acs_usable_chan(chan) &&
728 ideal_chan = chan;
733 rand_chan = chan;
738 ideal_chan->chan, ideal_chan->freq, ideal_factor);
823 iface->conf->channel = ideal_chan->chan;
882 struct hostapd_channel_data *chan;
893 chan = &iface->current_mode->channels[i];
894 if (chan->flag & HOSTAPD_CHAN_DISABLED)
897 if (!is_in_chanlist(iface, chan))
900 *freq++ = chan->freq;