--- a/src/ap/acs.c +++ b/src/ap/acs.c @@ -302,18 +302,12 @@ static void acs_fail(struct hostapd_ifac static long double acs_survey_interference_factor(struct freq_survey *survey, s8 min_nf) { - long double factor, busy, total; + long double factor, busy = 0, total; if (survey->filled & SURVEY_HAS_CHAN_TIME_BUSY) busy = survey->channel_time_busy; else if (survey->filled & SURVEY_HAS_CHAN_TIME_RX) busy = survey->channel_time_rx; - else { - /* This shouldn't really happen as survey data is checked in - * acs_sanity_check() */ - wpa_printf(MSG_ERROR, "ACS: Survey data missing"); - return 0; - } total = survey->channel_time; @@ -415,20 +409,19 @@ static int acs_usable_vht160_chan(const static int acs_survey_is_sufficient(struct freq_survey *survey) { if (!(survey->filled & SURVEY_HAS_NF)) { + survey->nf = -95; wpa_printf(MSG_INFO, "ACS: Survey is missing noise floor"); - return 0; } if (!(survey->filled & SURVEY_HAS_CHAN_TIME)) { + survey->channel_time = 0; wpa_printf(MSG_INFO, "ACS: Survey is missing channel time"); - return 0; } if (!(survey->filled & SURVEY_HAS_CHAN_TIME_BUSY) && !(survey->filled & SURVEY_HAS_CHAN_TIME_RX)) { wpa_printf(MSG_INFO, "ACS: Survey is missing RX and busy time (at least one is required)"); - return 0; } return 1;