ath9k: fix a soft lockup on smp systems
[openwrt/svn-archive/archive.git] / package / mac80211 / patches / 512-ath9k_channelbw_debugfs.patch
index 7feed482bf21f7f2964886dbc4349c7854533a1a..15111e9b827fd2678b71254cc6ad12bc5c264de3 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/ath9k.h
 +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -641,6 +641,7 @@ struct ath_softc {
+@@ -656,6 +656,7 @@ struct ath_softc {
        struct ieee80211_hw *hw;
        struct device *dev;
  
@@ -8,8 +8,8 @@
        struct survey_info *cur_survey;
        struct survey_info survey[ATH9K_NUM_CHANNELS];
  
-@@ -709,6 +710,7 @@ struct ath_softc {
-       struct dfs_pattern_detector *dfs_detector;
+@@ -731,6 +732,7 @@ struct ath_softc {
+ #endif
  };
  
 +int ath9k_config(struct ieee80211_hw *hw, u32 changed);
@@ -18,7 +18,7 @@
  
 --- a/drivers/net/wireless/ath/ath9k/debug.c
 +++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -1580,6 +1580,50 @@ static const struct file_operations fops
+@@ -1578,6 +1578,50 @@ static const struct file_operations fops
        .owner = THIS_MODULE
  };
  
@@ -51,7 +51,7 @@
 +              return -EINVAL;
 +
 +      sc->chan_bw = chan_bw;
-+      if (!(sc->sc_flags & SC_OP_INVALID))
++      if (!test_bit(SC_OP_INVALID, &sc->sc_flags))
 +              ath9k_config(sc->hw, IEEE80211_CONF_CHANGE_CHANNEL);
 +
 +      return count;
@@ -69,7 +69,7 @@
  int ath9k_init_debug(struct ath_hw *ah)
  {
        struct ath_common *common = ath9k_hw_common(ah);
-@@ -1646,5 +1690,8 @@ int ath9k_init_debug(struct ath_hw *ah)
+@@ -1652,5 +1696,8 @@ int ath9k_init_debug(struct ath_hw *ah)
        debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
                            &fops_eeprom);
  
@@ -80,7 +80,7 @@
  }
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1122,7 +1122,7 @@ static void ath9k_disable_ps(struct ath_
+@@ -1120,7 +1120,7 @@ static void ath9k_disable_ps(struct ath_
        ath_dbg(common, PS, "PowerSave disabled\n");
  }
  
@@ -89,7 +89,7 @@
  {
        struct ath_softc *sc = hw->priv;
        struct ath_hw *ah = sc->sc_ah;
-@@ -1173,9 +1173,11 @@ static int ath9k_config(struct ieee80211
+@@ -1174,9 +1174,11 @@ static int ath9k_config(struct ieee80211
  
        if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) {
                struct ieee80211_channel *curchan = hw->conf.channel;
  
                if (ah->curchan)
                        old_pos = ah->curchan - &ah->channels[0];
-@@ -1218,7 +1220,23 @@ static int ath9k_config(struct ieee80211
+@@ -1219,7 +1221,23 @@ static int ath9k_config(struct ieee80211
                        memset(&sc->survey[pos], 0, sizeof(struct survey_info));
                }