diff mbox

[LEDE-DEV] mac80211: backport calculate-min-channel-width fix

Message ID 1484908002-22568-1-git-send-email-koen.vandeputte@ncentric.com
State Changes Requested
Headers show

Commit Message

Koen Vandeputte Jan. 20, 2017, 10:26 a.m. UTC
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---
 .../354-calc-minchannelwidth-correctly.patch       | 57 ++++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 package/kernel/mac80211/patches/354-calc-minchannelwidth-correctly.patch

Comments

Felix Fietkau Jan. 20, 2017, 10:33 a.m. UTC | #1
On 2017-01-20 11:26, Koen Vandeputte wrote:
> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
To get the filenames right, please use import-backports.sh from
package/kernel/mac80211/scripts:

- export the commit from a git tree with git-format-patch -o <dir>
- in the mac80211 build dir unpacked with QUILT=1 switch to the last 3xx
patch
- run import-backports.sh 300 /path/to/patchfile.patch

- Felix
Koen Vandeputte Jan. 20, 2017, 10:36 a.m. UTC | #2
On 2017-01-20 11:33, Felix Fietkau wrote:
> On 2017-01-20 11:26, Koen Vandeputte wrote:
>> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
> To get the filenames right, please use import-backports.sh from
> package/kernel/mac80211/scripts:
>
> - export the commit from a git tree with git-format-patch -o <dir>
> - in the mac80211 build dir unpacked with QUILT=1 switch to the last 3xx
> patch
> - run import-backports.sh 300 /path/to/patchfile.patch
Ok, will do
Thanks
> - Felix
Rafał Miłecki Jan. 20, 2017, 11:25 a.m. UTC | #3
On 20 January 2017 at 11:33, Felix Fietkau <nbd@nbd.name> wrote:
> On 2017-01-20 11:26, Koen Vandeputte wrote:
>> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
> To get the filenames right, please use import-backports.sh from
> package/kernel/mac80211/scripts:
>
> - export the commit from a git tree with git-format-patch -o <dir>
> - in the mac80211 build dir unpacked with QUILT=1 switch to the last 3xx
> patch
> - run import-backports.sh 300 /path/to/patchfile.patch

This is a set of commands I use:
make package/kernel/mac80211/clean
make package/kernel/mac80211/prepare QUILT=1 V=s
cd build_dir/target-*/linux-*/compat-wireless-*/
quilt push $(quilt series | egrep "^3" | tail -n 1)
../../../../package/kernel/mac80211/scripts/import-backports.sh 300
/path/to/commit.patch
quilt push -a
cd ../../../..
make package/kernel/mac80211/update V=s
git status
diff mbox

Patch

diff --git a/package/kernel/mac80211/patches/354-calc-minchannelwidth-correctly.patch b/package/kernel/mac80211/patches/354-calc-minchannelwidth-correctly.patch
new file mode 100644
index 0000000..60e6589
--- /dev/null
+++ b/package/kernel/mac80211/patches/354-calc-minchannelwidth-correctly.patch
@@ -0,0 +1,57 @@ 
+From 96aa2e7cf126773b16c6c19b7474a8a38d3c707e Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Fri, 7 Oct 2016 12:23:49 +0200
+Subject: [PATCH] mac80211: calculate min channel width correctly
+
+In the current minimum chandef code there's an issue in that the
+recalculation can happen after rate control is initialized for a
+station that has a wider bandwidth than the current chanctx, and
+then rate control can immediately start using those higher rates
+which could cause problems.
+
+Observe that first of all that this problem is because we don't
+take non-associated and non-uploaded stations into account. The
+restriction to non-associated is quite pointless and is one of
+the causes for the problem described above, since the rate init
+will happen before the station is set to associated; no frames
+could actually be sent until associated, but the rate table can
+already contain higher rates and that might cause problems.
+
+Also, rejecting non-uploaded stations is wrong, since the rate
+control can select higher rates for those as well.
+
+Secondly, it's then necessary to recalculate the minimal config
+before initializing rate control, so that when rate control is
+initialized, the higher rates are already available. This can be
+done easily by adding the necessary function call in rate init.
+
+Change-Id: Ib9bc02d34797078db55459d196993f39dcd43070
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ net/mac80211/chan.c | 3 ---
+ net/mac80211/rate.c | 2 ++
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+--- a/net/mac80211/chan.c
++++ b/net/mac80211/chan.c
+@@ -231,9 +231,6 @@ ieee80211_get_max_required_bw(struct iee
+ 		    !(sta->sdata->bss && sta->sdata->bss == sdata->bss))
+ 			continue;
+ 
+-		if (!sta->uploaded || !test_sta_flag(sta, WLAN_STA_ASSOC))
+-			continue;
+-
+ 		max_bw = max(max_bw, ieee80211_get_sta_bw(&sta->sta));
+ 	}
+ 	rcu_read_unlock();
+--- a/net/mac80211/rate.c
++++ b/net/mac80211/rate.c
+@@ -40,6 +40,8 @@ void rate_control_rate_init(struct sta_i
+ 
+ 	ieee80211_sta_set_rx_nss(sta);
+ 
++	ieee80211_recalc_min_chandef(sta->sdata);
++
+ 	if (!ref)
+ 		return;
+