int chan_idx;
int chan_is_ht;
struct survey_info *cur_survey;
-@@ -654,6 +655,7 @@ struct ath_softc {
+@@ -655,6 +656,7 @@ struct ath_softc {
u8 ant_tx, ant_rx;
};
+ return -EINVAL;
+
+ sc->chan_bw = chan_bw;
-+ if (!sc->ps_idle)
++ if (!(sc->sc_flags & SC_OP_INVALID))
+ ath9k_config(sc->hw, IEEE80211_CONF_CHANGE_CHANNEL);
+
+ return count;
sc->debug.sampidx = 0;
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1554,7 +1554,7 @@ static void ath9k_disable_ps(struct ath_
+@@ -1564,7 +1564,7 @@ static void ath9k_disable_ps(struct ath_
}
{
struct ath_softc *sc = hw->priv;
struct ath_hw *ah = sc->sc_ah;
-@@ -1606,9 +1606,10 @@ static int ath9k_config(struct ieee80211
+@@ -1616,9 +1616,10 @@ static int ath9k_config(struct ieee80211
if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
struct ieee80211_channel *curchan = hw->conf.channel;
unsigned long flags;
if (ah->curchan)
-@@ -1661,7 +1662,23 @@ static int ath9k_config(struct ieee80211
+@@ -1671,7 +1672,23 @@ static int ath9k_config(struct ieee80211
memset(&sc->survey[pos], 0, sizeof(struct survey_info));
}
return -EINVAL;
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1549,6 +1549,10 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1609,6 +1609,10 @@ int ath9k_hw_reset(struct ath_hw *ah, st
caldata->rtt_hist.num_readings)
allow_fbs = true;