ath9k: fix tx queueing issues after background scans
[openwrt/staging/dedeckeh.git] / package / kernel / mac80211 / patches / 512-ath9k_channelbw_debugfs.patch
index 87aaf3061c1417ab6669aa6ba2bf08dd6d961c41..c805e2aa2e7ba581be251fad1590e839ba091bce 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/ath9k.h
 +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -697,6 +697,7 @@ struct ath_softc {
+@@ -701,6 +701,7 @@ struct ath_softc {
        struct ieee80211_hw *hw;
        struct device *dev;
  
@@ -8,17 +8,9 @@
        struct survey_info *cur_survey;
        struct survey_info survey[ATH9K_NUM_CHANNELS];
  
-@@ -901,6 +902,7 @@ struct fft_sample_ht20 {
-       u8 data[SPECTRAL_HT20_NUM_BINS];
- } __packed;
-+int ath9k_config(struct ieee80211_hw *hw, u32 changed);
- void ath9k_tasklet(unsigned long data);
- int ath_cabq_update(struct ath_softc *);
 --- a/drivers/net/wireless/ath/ath9k/debug.c
 +++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -1793,6 +1793,50 @@ static const struct file_operations fops
+@@ -1918,6 +1918,50 @@ static const struct file_operations fops
        .owner = THIS_MODULE
  };
  
@@ -52,7 +44,7 @@
 +
 +      sc->chan_bw = chan_bw;
 +      if (!test_bit(SC_OP_INVALID, &sc->sc_flags))
-+              ath9k_config(sc->hw, IEEE80211_CONF_CHANGE_CHANNEL);
++              ath9k_ops.config(sc->hw, IEEE80211_CONF_CHANGE_CHANNEL);
 +
 +      return count;
 +}
@@ -69,7 +61,7 @@
  int ath9k_init_debug(struct ath_hw *ah)
  {
        struct ath_common *common = ath9k_hw_common(ah);
-@@ -1812,6 +1856,8 @@ int ath9k_init_debug(struct ath_hw *ah)
+@@ -1937,6 +1981,8 @@ int ath9k_init_debug(struct ath_hw *ah)
  
        debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
                            &fops_eeprom);
        debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1150,7 +1150,7 @@ int ath9k_spectral_scan_config(struct ie
-       return 0;
- }
+@@ -1199,8 +1199,10 @@ static int ath9k_config(struct ieee80211
  
--static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
-+int ath9k_config(struct ieee80211_hw *hw, u32 changed)
- {
-       struct ath_softc *sc = hw->priv;
-       struct ath_hw *ah = sc->sc_ah;
-@@ -1206,9 +1206,11 @@ static int ath9k_config(struct ieee80211
+       if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) {
                struct ieee80211_channel *curchan = hw->conf.chandef.chan;
-               enum nl80211_channel_type channel_type =
-                       cfg80211_get_chandef_type(&conf->chandef);
 +              struct ath9k_channel *hchan;
                int pos = curchan->hw_value;
                int old_pos = -1;
-               unsigned long flags;
 +              u32 oldflags;
+               unsigned long flags;
  
                if (ah->curchan)
-                       old_pos = ah->curchan - &ah->channels[0];
-@@ -1244,7 +1246,23 @@ static int ath9k_config(struct ieee80211
+@@ -1237,7 +1239,23 @@ static int ath9k_config(struct ieee80211
                        memset(&sc->survey[pos], 0, sizeof(struct survey_info));
                }