1234567891011121314151617181920212223242526272829303132333435363738 |
- From: Sujith Manoharan <[email protected]>
- 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 <[email protected]>
- ---
- --- 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:
|