ath9k: merge a fix for queue start/stop handling (fixes #18164, #18130)
[openwrt/staging/wigyori.git] / package / kernel / mac80211 / patches / 521-ath9k_cur_txpower.patch
index 2aaee2f3933dbe50d81c4b0061e00f6e589f8dc6..638e7746642d59be22e000e05065457428996909 100644 (file)
@@ -1,18 +1,23 @@
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1263,6 +1263,8 @@ int ath9k_config(struct ieee80211_hw *hw
-                       return -EINVAL;
-               }
+@@ -326,8 +326,12 @@ static int ath_reset_internal(struct ath
+           sc->cur_chan->offchannel)
+               ath9k_mci_set_txpower(sc, true, false);
  
-+              hw->cur_power_level = sc->curtxpow / 2;
+-      if (!ath_complete_reset(sc, true))
++      if (!ath_complete_reset(sc, true)) {
+               r = -EIO;
++              goto out;
++      }
 +
-               /*
-                * The most recent snapshot of channel->noisefloor for the old
-                * channel is only available after the hardware reset. Copy it to
-@@ -1299,6 +1301,7 @@ int ath9k_config(struct ieee80211_hw *hw
-               sc->config.txpowlimit = 2 * conf->power_level;
++      sc->hw->cur_power_level = sc->curtxpow / 2;
+ out:
+       spin_unlock_bh(&sc->sc_pcu_lock);
+@@ -1473,6 +1477,7 @@ static int ath9k_config(struct ieee80211
+               sc->cur_chan->txpower = 2 * conf->power_level;
                ath9k_cmn_update_txpow(ah, sc->curtxpow,
-                                      sc->config.txpowlimit, &sc->curtxpow);
+                                      sc->cur_chan->txpower, &sc->curtxpow);
 +              hw->cur_power_level = sc->curtxpow / 2;
        }