ath9k: Fix offchannel operation
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Fri, 5 Sep 2014 04:20:56 +0000 (09:50 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 9 Sep 2014 19:27:22 +0000 (15:27 -0400)
When multiple channel contexts are active, an offchannel
request will not be handled immediately, but will be
queued to be handled later. But, currently, the channel definition
is not copied to the local offchannel state. This
breaks operation like scanning when MCC is active.

Fix this by storing the offchannel parameters properly.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/channel.c

index e73d305ea1e4311a64624e1ada66c4ba87ddc74a..a31f526ba852c1aa4c515509d24a39e32a8e8b25 100644 (file)
@@ -588,7 +588,11 @@ static void ath_chanctx_switch(struct ath_softc *sc, struct ath_chanctx *ctx,
        if (test_bit(ATH_OP_MULTI_CHANNEL, &common->op_flags) &&
            (sc->cur_chan != ctx) && (ctx == &sc->offchannel.chan)) {
                sc->sched.offchannel_pending = true;
+               if (chandef)
+                       ctx->chandef = *chandef;
                spin_unlock_bh(&sc->chan_lock);
+               ath_dbg(common, CHAN_CTX,
+                       "Set offchannel_pending to true\n");
                return;
        }