diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2014-09-10 19:15:56 +0530 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-09-11 15:27:39 -0400 |
commit | cbc775db2e17cc24a9d3b2f14570ec7c1e0923af (patch) | |
tree | ed55c3ae814f52ddcccb5c5dc429bf8110e24c85 /drivers/net/wireless/ath | |
parent | 867fa0d49c8f5d3fd5e0138a754321ffa04903aa (diff) |
ath9k: Assign offchannel duration properly
In multi-channel mode, an offchannel request will
be deferred if both contexts are active. The duration
of the offchannel operation is calculated but is
not stored in the scheduler state. Fix this.
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/channel.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c index 522894ba727a..ae575cb44e5a 100644 --- a/drivers/net/wireless/ath/ath9k/channel.c +++ b/drivers/net/wireless/ath/ath9k/channel.c @@ -588,10 +588,15 @@ 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; - sc->sched.wait_switch = true; if (chandef) ctx->chandef = *chandef; + + sc->sched.offchannel_pending = true; + sc->sched.wait_switch = true; + sc->sched.offchannel_duration = + jiffies_to_usecs(sc->offchannel.duration) + + sc->sched.channel_switch_time; + spin_unlock_bh(&sc->chan_lock); ath_dbg(common, CHAN_CTX, "Set offchannel_pending to true\n"); |