Commit 4fadce88 authored by Hancheng Yang's avatar Hancheng Yang Committed by Kalle Valo

wifi: ath9k: reset survey of current channel after a scan started

In the `ath_set_channel()` function, we only reset surveys that are not
from the current channel. This leads to the accumulation of survey data for
the current channel indefinitely. This may not be the most optimal
approach, as we want the ACS to rely on the most recent survey.
So reset the survey data for the current channel at the start of each scan.
Signed-off-by: default avatarHancheng Yang <hyang@freebox.fr>
Acked-by: default avatarToke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20231205170623.3029689-1-hyang@freebox.fr
parent 7133b072
...@@ -2383,7 +2383,22 @@ static void ath9k_sw_scan_start(struct ieee80211_hw *hw, ...@@ -2383,7 +2383,22 @@ static void ath9k_sw_scan_start(struct ieee80211_hw *hw,
{ {
struct ath_softc *sc = hw->priv; struct ath_softc *sc = hw->priv;
struct ath_common *common = ath9k_hw_common(sc->sc_ah); struct ath_common *common = ath9k_hw_common(sc->sc_ah);
struct cfg80211_chan_def *chandef = &sc->cur_chan->chandef;
struct ieee80211_channel *chan = chandef->chan;
int pos = chan->hw_value;
set_bit(ATH_OP_SCANNING, &common->op_flags); set_bit(ATH_OP_SCANNING, &common->op_flags);
/* Reset current survey */
if (!sc->cur_chan->offchannel) {
if (sc->cur_survey != &sc->survey[pos]) {
if (sc->cur_survey)
sc->cur_survey->filled &= ~SURVEY_INFO_IN_USE;
sc->cur_survey = &sc->survey[pos];
}
memset(sc->cur_survey, 0, sizeof(struct survey_info));
sc->cur_survey->filled |= SURVEY_INFO_IN_USE;
}
} }
static void ath9k_sw_scan_complete(struct ieee80211_hw *hw, static void ath9k_sw_scan_complete(struct ieee80211_hw *hw,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment