From bb628eb9f0bda030c2cc9e417f52c9a344fc65fc Mon Sep 17 00:00:00 2001 From: Sujith Manoharan Date: Fri, 5 Sep 2014 08:03:13 +0530 Subject: [PATCH] ath9k: Fix offchannel duration calculation Currently, different units are used for handling sc->offchannel.duration. In scan mode, it contains jiffies and in RoC mode, milliseconds is used. This causes confusion since in ath_chanctx_switch(), TU_TO_USEC is used to determine the offchannel duration, resulting in incorrect values. Fix this by using jiffies in both modes. Signed-off-by: Sujith Manoharan Signed-off-by: John W. Linville --- drivers/net/wireless/ath/ath9k/channel.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c index 047a76fe2e7f..7a6ca44d42af 100644 --- a/drivers/net/wireless/ath/ath9k/channel.c +++ b/drivers/net/wireless/ath/ath9k/channel.c @@ -601,7 +601,7 @@ static void ath_chanctx_switch(struct ath_softc *sc, struct ath_chanctx *ctx, if (sc->next_chan == &sc->offchannel.chan) { sc->sched.offchannel_duration = - TU_TO_USEC(sc->offchannel.duration) + + jiffies_to_usecs(sc->offchannel.duration) + sc->sched.channel_switch_time; if (chandef) { @@ -688,7 +688,8 @@ void ath_offchannel_next(struct ath_softc *sc) } else if (sc->offchannel.roc_vif) { vif = sc->offchannel.roc_vif; sc->offchannel.chan.txpower = vif->bss_conf.txpower; - sc->offchannel.duration = sc->offchannel.roc_duration; + sc->offchannel.duration = + msecs_to_jiffies(sc->offchannel.roc_duration); sc->offchannel.state = ATH_OFFCHANNEL_ROC_START; ath_chanctx_offchan_switch(sc, sc->offchannel.roc_chan); } else { @@ -959,8 +960,8 @@ static void ath_offchannel_channel_change(struct ath_softc *sc) break; sc->offchannel.state = ATH_OFFCHANNEL_ROC_WAIT; - mod_timer(&sc->offchannel.timer, jiffies + - msecs_to_jiffies(sc->offchannel.duration)); + mod_timer(&sc->offchannel.timer, + jiffies + sc->offchannel.duration); ieee80211_ready_on_channel(sc->hw); break; case ATH_OFFCHANNEL_ROC_DONE: -- 2.39.5