Lines Matching refs:chan

249 static void acs_clean_chan_surveys(struct hostapd_channel_data *chan)
253 if (dl_list_empty(&chan->survey_list))
256 dl_list_for_each_safe(survey, tmp, &chan->survey_list,
267 struct hostapd_channel_data *chan;
270 chan = &iface->current_mode->channels[i];
272 if (chan->flag & HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED)
273 acs_clean_chan_surveys(chan);
275 dl_list_init(&chan->survey_list);
276 chan->flag |= HOSTAPD_CHAN_SURVEY_LIST_INITIALIZED;
277 chan->min_nf = 0;
328 struct hostapd_channel_data *chan)
335 if (dl_list_empty(&chan->survey_list) ||
336 (chan->flag & HOSTAPD_CHAN_DISABLED))
339 chan->interference_factor = 0;
341 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
353 chan->interference_factor += int_factor;
355 i, chan->min_nf, int_factor,
362 chan->interference_factor /= count;
366 static int acs_usable_ht40_chan(const struct hostapd_channel_data *chan)
373 if (chan->chan == allowed[i])
380 static int acs_usable_vht80_chan(const struct hostapd_channel_data *chan)
386 if (chan->chan == allowed[i])
393 static int acs_usable_vht160_chan(const struct hostapd_channel_data *chan)
399 if (chan->chan == allowed[i])
429 static int acs_survey_list_is_sufficient(struct hostapd_channel_data *chan)
434 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
449 chan->chan);
459 struct hostapd_channel_data *chan;
463 chan = &iface->current_mode->channels[i];
464 if (!(chan->flag & HOSTAPD_CHAN_DISABLED) &&
465 acs_survey_list_is_sufficient(chan))
474 static int acs_usable_chan(struct hostapd_channel_data *chan)
476 return !dl_list_empty(&chan->survey_list) &&
477 !(chan->flag & HOSTAPD_CHAN_DISABLED) &&
478 acs_survey_list_is_sufficient(chan);
483 struct hostapd_channel_data *chan)
488 return freq_range_list_includes(&iface->conf->acs_ch_list, chan->chan);
496 struct hostapd_channel_data *chan;
499 chan = &iface->current_mode->channels[i];
501 if (!acs_usable_chan(chan))
504 if (!is_in_chanlist(iface, chan))
508 chan->chan, chan->freq);
510 acs_survey_chan_interference_factor(iface, chan);
513 chan->interference_factor);
521 struct hostapd_channel_data *chan;
525 chan = &iface->current_mode->channels[i];
527 if (chan->flag & HOSTAPD_CHAN_DISABLED)
530 if (chan->freq == freq)
531 return chan;
545 static int is_common_24ghz_chan(int chan)
547 return chan == 1 || chan == 6 || chan == 11;
569 * At this point it's assumed chan->interface_factor has been computed.
571 * option (survey, BSS, spectral, ...). chan->interference factor must be
577 struct hostapd_channel_data *chan, *adj_chan, *ideal_chan = NULL,
619 chan = &iface->current_mode->channels[i];
625 if (!chan_pri_allowed(chan))
628 if (!is_in_chanlist(iface, chan))
631 if (!chan_bw_allowed(chan, bw, 1, 1)) {
634 chan->chan, bw);
643 !acs_usable_ht40_chan(chan)) {
645 chan->chan);
653 !acs_usable_vht80_chan(chan)) {
656 chan->chan);
662 !acs_usable_vht160_chan(chan)) {
665 chan->chan);
671 if (acs_usable_chan(chan))
672 factor = chan->interference_factor;
676 adj_chan = acs_find_chan(iface, chan->freq + (j * 20));
683 chan->chan, adj_chan->chan, bw);
695 chan->chan);
703 adj_chan = acs_find_chan(iface, chan->freq +
711 adj_chan = acs_find_chan(iface, chan->freq +
719 adj_chan = acs_find_chan(iface, chan->freq +
727 adj_chan = acs_find_chan(iface, chan->freq +
743 if (bias->channel == chan->chan)
748 is_common_24ghz_chan(chan->chan)) {
749 tmp_bias.channel = chan->chan;
758 chan->chan, factor, bias->bias);
762 chan->chan, factor);
765 if (acs_usable_chan(chan) &&
768 ideal_chan = chan;
773 rand_chan = chan;
778 ideal_chan->chan, ideal_chan->freq, ideal_factor);
864 iface->conf->channel = ideal_chan->chan;
923 struct hostapd_channel_data *chan;
934 chan = &iface->current_mode->channels[i];
935 if (chan->flag & HOSTAPD_CHAN_DISABLED)
938 if (!is_in_chanlist(iface, chan))
941 *freq++ = chan->freq;