Procházet zdrojové kódy

ath9k: Fix offchannel operation

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>
Sujith Manoharan před 11 roky
rodič
revize
da0162f3f0
1 změnil soubory, kde provedl 4 přidání a 0 odebrání
  1. 4 0
      drivers/net/wireless/ath/ath9k/channel.c

+ 4 - 0
drivers/net/wireless/ath/ath9k/channel.c

@@ -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) &&
 	if (test_bit(ATH_OP_MULTI_CHANNEL, &common->op_flags) &&
 	    (sc->cur_chan != ctx) && (ctx == &sc->offchannel.chan)) {
 	    (sc->cur_chan != ctx) && (ctx == &sc->offchannel.chan)) {
 		sc->sched.offchannel_pending = true;
 		sc->sched.offchannel_pending = true;
+		if (chandef)
+			ctx->chandef = *chandef;
 		spin_unlock_bh(&sc->chan_lock);
 		spin_unlock_bh(&sc->chan_lock);
+		ath_dbg(common, CHAN_CTX,
+			"Set offchannel_pending to true\n");
 		return;
 		return;
 	}
 	}