mac80211: add back missing tx power handling fix (#12750)
[openwrt.git] / package / kernel / mac80211 / patches / 300-pending_work.patch
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..71f2af379b8aa3cd29939ae6a0fa0150df16df07 100644 (file)
@@ -0,0 +1,100 @@
+commit 7cbb4c021bfd1e656f5b9953a947ab3c64e4e3b0
+Author: Felix Fietkau <nbd@openwrt.org>
+Date:   Thu Apr 10 10:49:01 2014 +0200
+
+    mac80211: exclude AP_VLAN interfaces from tx power calculation
+    
+    Their power value is initialized to zero. This patch fixes an issue
+    where the configured power drops to the minimum value when AP_VLAN
+    interfaces are created/removed.
+    
+    Cc: stable@vger.kernel.org
+    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+commit 0ca13e26341733bf9577287fb04a3bef0d2f5cc9
+Author: Felix Fietkau <nbd@openwrt.org>
+Date:   Wed Apr 9 00:07:01 2014 +0200
+
+    mac80211: suppress BSS info change notifications for AP_VLAN
+    
+    Fixes warnings on tx power changes
+    
+    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+commit ec998e5991781ecdaad0911dc64f1c8d3749c308
+Author: Felix Fietkau <nbd@openwrt.org>
+Date:   Tue Apr 8 23:42:17 2014 +0200
+
+    ath9k: fix a scheduling while atomic bug in CSA handling
+    
+    Commit "ath9k: prepare for multi-interface CSA support" added a call to
+    ieee80211_iterate_active_interfaces in atomic context (beacon tasklet),
+    which is crashing.
+    Use ieee80211_iterate_active_interfaces_atomic instead.
+    
+    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+commit 93f310a38a1d81a4bc8fcd9bf29628bd721cf2ef
+Author: Felix Fietkau <nbd@openwrt.org>
+Date:   Sun Apr 6 23:35:28 2014 +0200
+
+    ath9k_hw: reduce ANI firstep range for older chips
+    
+    Use 0-8 instead of 0-16, which is closer to the old implementation.
+    Also drop the overwrite of the firstep_low parameter to improve
+    stability.
+    
+    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+
+--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
+@@ -1004,11 +1004,9 @@ static bool ar5008_hw_ani_control_new(st
+       case ATH9K_ANI_FIRSTEP_LEVEL:{
+               u32 level = param;
+-              value = level * 2;
++              value = level;
+               REG_RMW_FIELD(ah, AR_PHY_FIND_SIG,
+                             AR_PHY_FIND_SIG_FIRSTEP, value);
+-              REG_RMW_FIELD(ah, AR_PHY_FIND_SIG_LOW,
+-                            AR_PHY_FIND_SIG_FIRSTEP_LOW, value);
+               if (level != aniState->firstepLevel) {
+                       ath_dbg(common, ANI,
+--- a/drivers/net/wireless/ath/ath9k/beacon.c
++++ b/drivers/net/wireless/ath/ath9k/beacon.c
+@@ -312,10 +312,9 @@ static void ath9k_csa_update_vif(void *d
+ void ath9k_csa_update(struct ath_softc *sc)
+ {
+-      ieee80211_iterate_active_interfaces(sc->hw,
+-                                          IEEE80211_IFACE_ITER_NORMAL,
+-                                          ath9k_csa_update_vif,
+-                                          sc);
++      ieee80211_iterate_active_interfaces_atomic(sc->hw,
++                                                 IEEE80211_IFACE_ITER_NORMAL,
++                                                 ath9k_csa_update_vif, sc);
+ }
+ void ath9k_beacon_tasklet(unsigned long data)
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -152,6 +152,8 @@ static u32 ieee80211_hw_conf_chan(struct
+       list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+               if (!rcu_access_pointer(sdata->vif.chanctx_conf))
+                       continue;
++              if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
++                      continue;
+               power = min(power, sdata->vif.bss_conf.txpower);
+       }
+       rcu_read_unlock();
+@@ -203,7 +205,7 @@ void ieee80211_bss_info_change_notify(st
+ {
+       struct ieee80211_local *local = sdata->local;
+-      if (!changed)
++      if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+               return;
+       drv_bss_info_changed(local, sdata, &sdata->vif.bss_conf, changed);