diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/channel.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/channel.c | 23 | 
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c index 206665059d66..90f5773a1a61 100644 --- a/drivers/net/wireless/ath/ath9k/channel.c +++ b/drivers/net/wireless/ath/ath9k/channel.c @@ -915,18 +915,27 @@ void ath_offchannel_next(struct ath_softc *sc)  	}  } -void ath_roc_complete(struct ath_softc *sc, bool abort) +void ath_roc_complete(struct ath_softc *sc, enum ath_roc_complete_reason reason)  {  	struct ath_common *common = ath9k_hw_common(sc->sc_ah); -	if (abort) +	sc->offchannel.roc_vif = NULL; +	sc->offchannel.roc_chan = NULL; + +	switch (reason) { +	case ATH_ROC_COMPLETE_ABORT:  		ath_dbg(common, CHAN_CTX, "RoC aborted\n"); -	else +		ieee80211_remain_on_channel_expired(sc->hw); +		break; +	case ATH_ROC_COMPLETE_EXPIRE:  		ath_dbg(common, CHAN_CTX, "RoC expired\n"); +		ieee80211_remain_on_channel_expired(sc->hw); +		break; +	case ATH_ROC_COMPLETE_CANCEL: +		ath_dbg(common, CHAN_CTX, "RoC canceled\n"); +		break; +	} -	sc->offchannel.roc_vif = NULL; -	sc->offchannel.roc_chan = NULL; -	ieee80211_remain_on_channel_expired(sc->hw);  	ath_offchannel_next(sc);  	ath9k_ps_restore(sc);  } @@ -1058,7 +1067,7 @@ static void ath_offchannel_timer(unsigned long data)  	case ATH_OFFCHANNEL_ROC_START:  	case ATH_OFFCHANNEL_ROC_WAIT:  		sc->offchannel.state = ATH_OFFCHANNEL_ROC_DONE; -		ath_roc_complete(sc, false); +		ath_roc_complete(sc, ATH_ROC_COMPLETE_EXPIRE);  		break;  	default:  		break;  |