39 lines
1.3 KiB
Diff
39 lines
1.3 KiB
Diff
|
From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
|
||
|
Date: Fri, 17 Oct 2014 07:40:26 +0530
|
||
|
Subject: [PATCH] ath9k: Fix RoC expiration
|
||
|
|
||
|
mac80211 has to be notified when a RoC period
|
||
|
expires in the driver. In MCC mode, since the
|
||
|
offchannel/RoC timer is set with the requested
|
||
|
duration, ieee80211_remain_on_channel_expired() needs
|
||
|
to be called when the timer expires.
|
||
|
|
||
|
But, currently it is done after we move back to
|
||
|
the operating channel. This is incorrect - fix this
|
||
|
by calling ieee80211_remain_on_channel_expired() when
|
||
|
the RoC timer expires and in ath_roc_complete() when
|
||
|
the RoC request is aborted.
|
||
|
|
||
|
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
|
||
|
---
|
||
|
|
||
|
--- a/drivers/net/wireless/ath/ath9k/channel.c
|
||
|
+++ b/drivers/net/wireless/ath/ath9k/channel.c
|
||
|
@@ -894,7 +894,7 @@ void ath_roc_complete(struct ath_softc *
|
||
|
|
||
|
sc->offchannel.roc_vif = NULL;
|
||
|
sc->offchannel.roc_chan = NULL;
|
||
|
- if (!abort)
|
||
|
+ if (abort)
|
||
|
ieee80211_remain_on_channel_expired(sc->hw);
|
||
|
ath_offchannel_next(sc);
|
||
|
ath9k_ps_restore(sc);
|
||
|
@@ -1028,6 +1028,7 @@ static void ath_offchannel_timer(unsigne
|
||
|
case ATH_OFFCHANNEL_ROC_WAIT:
|
||
|
ctx = ath_chanctx_get_oper_chan(sc, false);
|
||
|
sc->offchannel.state = ATH_OFFCHANNEL_ROC_DONE;
|
||
|
+ ieee80211_remain_on_channel_expired(sc->hw);
|
||
|
ath_chanctx_switch(sc, ctx, NULL);
|
||
|
break;
|
||
|
default:
|