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) ||
335 (chan->flag & HOSTAPD_CHAN_DISABLED))
338 chan->interference_factor = 0;
340 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
352 chan->interference_factor += int_factor;
354 i, chan->min_nf, int_factor,
361 chan->interference_factor /= count;
365 static int acs_usable_ht40_chan(struct hostapd_channel_data *chan)
372 if (chan->chan == allowed[i])
379 static int acs_usable_vht80_chan(struct hostapd_channel_data *chan)
385 if (chan->chan == allowed[i])
415 static int acs_survey_list_is_sufficient(struct hostapd_channel_data *chan)
420 dl_list_for_each(survey, &chan->survey_list, struct freq_survey, list)
435 chan->chan);
445 struct hostapd_channel_data *chan;
449 chan = &iface->current_mode->channels[i];
450 if (!(chan->flag & HOSTAPD_CHAN_DISABLED) &&
451 acs_survey_list_is_sufficient(chan))
460 static int acs_usable_chan(struct hostapd_channel_data *chan)
462 return !dl_list_empty(&chan->survey_list) &&
463 !(chan->flag & HOSTAPD_CHAN_DISABLED) &&
464 acs_survey_list_is_sufficient(chan);
469 struct hostapd_channel_data *chan)
474 return freq_range_list_includes(&iface->conf->acs_ch_list, chan->chan);
482 struct hostapd_channel_data *chan;
485 chan = &iface->current_mode->channels[i];
487 if (!acs_usable_chan(chan))
490 if (!is_in_chanlist(iface, chan))
494 chan->chan, chan->freq);
496 acs_survey_chan_interference_factor(iface, chan);
499 chan->interference_factor);
507 struct hostapd_channel_data *chan;
511 chan = &iface->current_mode->channels[i];
513 if (chan->flag & HOSTAPD_CHAN_DISABLED)
516 if (chan->freq == freq)
517 return chan;
531 static int is_common_24ghz_chan(int chan)
533 return chan == 1 || chan == 6 || chan == 11;
555 * At this point it's assumed chan->interface_factor has been computed.
557 * option (survey, BSS, spectral, ...). chan->interference factor must be
563 struct hostapd_channel_data *chan, *adj_chan, *ideal_chan = NULL,
597 chan = &iface->current_mode->channels[i];
599 if (chan->flag & HOSTAPD_CHAN_DISABLED)
602 if (!is_in_chanlist(iface, chan))
610 !acs_usable_ht40_chan(chan)) {
612 chan->chan);
619 !acs_usable_vht80_chan(chan)) {
621 chan->chan);
626 if (acs_usable_chan(chan))
627 factor = chan->interference_factor;
631 adj_chan = acs_find_chan(iface, chan->freq + (j * 20));
643 chan->chan);
651 adj_chan = acs_find_chan(iface, chan->freq +
659 adj_chan = acs_find_chan(iface, chan->freq +
667 adj_chan = acs_find_chan(iface, chan->freq +
675 adj_chan = acs_find_chan(iface, chan->freq +
691 if (bias->channel == chan->chan)
696 is_common_24ghz_chan(chan->chan)) {
697 tmp_bias.channel = chan->chan;
706 chan->chan, factor, bias->bias);
710 chan->chan, factor);
713 if (acs_usable_chan(chan) &&
716 ideal_chan = chan;
721 rand_chan = chan;
726 ideal_chan->chan, ideal_chan->freq, ideal_factor);
808 iface->conf->channel = ideal_chan->chan;
867 struct hostapd_channel_data *chan;
878 chan = &iface->current_mode->channels[i];
879 if (chan->flag & HOSTAPD_CHAN_DISABLED)
882 if (!is_in_chanlist(iface, chan))
885 *freq++ = chan->freq;