aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2018-03-01 14:46:34 +0100
committerRafał Miłecki <rafal@milecki.pl>2018-03-01 15:14:11 +0100
commit81542331cb1827650f3abd69375d964d0ce2d050 (patch)
tree7b2c6fd517d3f32ab5c9a4542fb0ff6d9dd5e274 /package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch
parent1f427bd6166afa2aa11384fa559be9459397a0fe (diff)
downloadupstream-81542331cb1827650f3abd69375d964d0ce2d050.tar.gz
upstream-81542331cb1827650f3abd69375d964d0ce2d050.tar.bz2
upstream-81542331cb1827650f3abd69375d964d0ce2d050.zip
mac80211: reorder patches putting backports first
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch')
-rw-r--r--package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch b/package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch
new file mode 100644
index 0000000000..8c4c724ef7
--- /dev/null
+++ b/package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch
@@ -0,0 +1,53 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Fri, 23 Feb 2018 10:01:53 +0100
+Subject: [PATCH] mac80211: support fast-rx with incompatible PS
+ capabilities when PS is disabled
+
+When powersave is disabled for the interface, we can do fast-rx anyway.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -2658,6 +2658,7 @@ static int ieee80211_set_power_mgmt(stru
+
+ ieee80211_recalc_ps(local);
+ ieee80211_recalc_ps_vif(sdata);
++ ieee80211_check_fast_rx_iface(sdata);
+
+ return 0;
+ }
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -3741,12 +3741,7 @@ void ieee80211_check_fast_rx(struct sta_
+ /* 4-addr is harder to deal with, later maybe */
+ if (sdata->u.mgd.use_4addr)
+ goto clear;
+- /* software powersave is a huge mess, avoid all of it */
+- if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK))
+- goto clear;
+- if (ieee80211_hw_check(&local->hw, SUPPORTS_PS) &&
+- !ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS))
+- goto clear;
++
+ if (sta->sta.tdls) {
+ fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1);
+ fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2);
+@@ -3758,6 +3753,16 @@ void ieee80211_check_fast_rx(struct sta_
+ fastrx.expected_ds_bits =
+ cpu_to_le16(IEEE80211_FCTL_FROMDS);
+ }
++
++ if (!sdata->u.mgd.powersave)
++ break;
++
++ /* software powersave is a huge mess, avoid all of it */
++ if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK))
++ goto clear;
++ if (ieee80211_hw_check(&local->hw, SUPPORTS_PS) &&
++ !ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS))
++ goto clear;
+ break;
+ case NL80211_IFTYPE_AP_VLAN:
+ case NL80211_IFTYPE_AP: