mac80211: add back missing tx power handling fix (#12750)
authorFelix Fietkau <nbd@openwrt.org>
Thu, 10 Apr 2014 08:52:33 +0000 (08:52 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 10 Apr 2014 08:52:33 +0000 (08:52 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 40440

package/kernel/mac80211/patches/300-pending_work.patch
package/kernel/mac80211/patches/520-mac80211_cur_txpower.patch
package/kernel/mac80211/patches/522-mac80211_configure_antenna_gain.patch

index 234006355b892acffd5da5fe75d87f24722d1b65..71f2af379b8aa3cd29939ae6a0fa0150df16df07 100644 (file)
@@ -1,3 +1,16 @@
+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
@@ -67,7 +80,16 @@ Date:   Sun Apr 6 23:35:28 2014 +0200
  void ath9k_beacon_tasklet(unsigned long data)
 --- a/net/mac80211/main.c
 +++ b/net/mac80211/main.c
-@@ -203,7 +203,7 @@ void ieee80211_bss_info_change_notify(st
+@@ -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;
  
index aa460a81c4f46e5fafd17a2cca2ded6c8e048beb..cb3f852498b8f8d4d76f616c2774880e608733ea 100644 (file)
@@ -23,7 +23,7 @@
                *dbm = sdata->vif.bss_conf.txpower;
 --- a/net/mac80211/main.c
 +++ b/net/mac80211/main.c
-@@ -158,6 +158,7 @@ static u32 ieee80211_hw_conf_chan(struct
+@@ -160,6 +160,7 @@ static u32 ieee80211_hw_conf_chan(struct
  
        if (local->hw.conf.power_level != power) {
                changed |= IEEE80211_CONF_CHANGE_POWER;
index c94c1e11149ddac543efcf2c40b97a323b6f78f3..611f76326dde051fa8f0aaa1258d95ea8947ed99 100644 (file)
        u32 offchannel_flag;
  
        offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
-@@ -156,6 +156,12 @@ static u32 ieee80211_hw_conf_chan(struct
+@@ -158,6 +158,12 @@ static u32 ieee80211_hw_conf_chan(struct
        }
        rcu_read_unlock();
  
        if (local->hw.conf.power_level != power) {
                changed |= IEEE80211_CONF_CHANGE_POWER;
                local->hw.cur_power_level = power;
-@@ -584,6 +590,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(
+@@ -586,6 +592,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(
                                         IEEE80211_RADIOTAP_MCS_HAVE_BW;
        local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI |
                                         IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;