提交 e21a1d8b 编写于 作者: S Sujith Manoharan 提交者: John W. Linville

ath9k: Clear offchannel state properly

When a pending roc or scan operation is cancelled,
the offchannel operation is cleared, but the offchannel
state in the main scheduler is not cleared. This causes
problems since an active GO will try to process a stale
offchannel request that was deferred earlier. Fix this
by clearing the state when there is no pending offchannel
(roc/scan) operation.
Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 89b6e35c
...@@ -900,6 +900,11 @@ void ath_offchannel_next(struct ath_softc *sc) ...@@ -900,6 +900,11 @@ void ath_offchannel_next(struct ath_softc *sc)
sc->offchannel.state = ATH_OFFCHANNEL_ROC_START; sc->offchannel.state = ATH_OFFCHANNEL_ROC_START;
ath_chanctx_offchan_switch(sc, sc->offchannel.roc_chan); ath_chanctx_offchan_switch(sc, sc->offchannel.roc_chan);
} else { } else {
spin_lock_bh(&sc->chan_lock);
sc->sched.offchannel_pending = false;
sc->sched.wait_switch = false;
spin_unlock_bh(&sc->chan_lock);
ath_chanctx_switch(sc, ath_chanctx_get_oper_chan(sc, false), ath_chanctx_switch(sc, ath_chanctx_get_oper_chan(sc, false),
NULL); NULL);
sc->offchannel.state = ATH_OFFCHANNEL_IDLE; sc->offchannel.state = ATH_OFFCHANNEL_IDLE;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册