diff options
author | Felix Fietkau <nbd@nbd.name> | 2016-06-15 17:31:48 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2016-06-15 17:31:48 +0200 |
commit | ef74d5cbf8f51cab94b039a66fcc57fefda3b5a3 (patch) | |
tree | 63cb160a7f4cb556968c7c1b5134551454b116ee /package | |
parent | 13b44abcffa9e3534491d413855fd0fc46e756ed (diff) | |
download | upstream-ef74d5cbf8f51cab94b039a66fcc57fefda3b5a3.tar.gz upstream-ef74d5cbf8f51cab94b039a66fcc57fefda3b5a3.tar.bz2 upstream-ef74d5cbf8f51cab94b039a66fcc57fefda3b5a3.zip |
hostapd: implement fallback for incomplete survey data
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package')
-rw-r--r-- | package/network/services/hostapd/patches/470-survey_data_fallback.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/470-survey_data_fallback.patch b/package/network/services/hostapd/patches/470-survey_data_fallback.patch new file mode 100644 index 0000000000..4e40a87558 --- /dev/null +++ b/package/network/services/hostapd/patches/470-survey_data_fallback.patch @@ -0,0 +1,45 @@ +--- a/src/ap/acs.c ++++ b/src/ap/acs.c +@@ -292,18 +292,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; + +@@ -395,20 +389,19 @@ static int acs_usable_vht80_chan(struct + 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; |