浏览代码

ath9k: Make sure we have current channel in ah_curchan before rf disable/enable

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Vasanthakumar Thiagarajan 16 年之前
父节点
当前提交
159cd468bc
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      drivers/net/wireless/ath/ath9k/main.c

+ 6 - 0
drivers/net/wireless/ath/ath9k/main.c

@@ -1123,6 +1123,9 @@ void ath_radio_enable(struct ath_softc *sc)
 	ath9k_ps_wakeup(sc);
 	ath9k_ps_wakeup(sc);
 	ath9k_hw_configpcipowersave(ah, 0);
 	ath9k_hw_configpcipowersave(ah, 0);
 
 
+	if (!ah->curchan)
+		ah->curchan = ath_get_curchannel(sc, sc->hw);
+
 	spin_lock_bh(&sc->sc_resetlock);
 	spin_lock_bh(&sc->sc_resetlock);
 	r = ath9k_hw_reset(ah, ah->curchan, false);
 	r = ath9k_hw_reset(ah, ah->curchan, false);
 	if (r) {
 	if (r) {
@@ -1175,6 +1178,9 @@ void ath_radio_disable(struct ath_softc *sc)
 	ath_stoprecv(sc);		/* turn off frame recv */
 	ath_stoprecv(sc);		/* turn off frame recv */
 	ath_flushrecv(sc);		/* flush recv queue */
 	ath_flushrecv(sc);		/* flush recv queue */
 
 
+	if (!ah->curchan)
+		ah->curchan = ath_get_curchannel(sc, sc->hw);
+
 	spin_lock_bh(&sc->sc_resetlock);
 	spin_lock_bh(&sc->sc_resetlock);
 	r = ath9k_hw_reset(ah, ah->curchan, false);
 	r = ath9k_hw_reset(ah, ah->curchan, false);
 	if (r) {
 	if (r) {