diff options
author | Felix Fietkau <nbd@nbd.name> | 2016-11-03 11:01:45 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2016-11-03 11:04:30 +0100 |
commit | 4dfc0be07b85d62028175c1406ca585a3c5a0834 (patch) | |
tree | ce3f828f542cc7580a666f07d59e4901c8889a0f | |
parent | a2944a0c09b8486878482590b3409a3c0c710591 (diff) | |
download | mtk-20170518-4dfc0be07b85d62028175c1406ca585a3c5a0834.zip mtk-20170518-4dfc0be07b85d62028175c1406ca585a3c5a0834.tar.gz mtk-20170518-4dfc0be07b85d62028175c1406ca585a3c5a0834.tar.bz2 |
mac80211: fix AP powersave issues introduced in the last wireless-testing update (FS#241)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r-- | package/kernel/mac80211/patches/321-mac80211-fix-broken-AP-mode-handling-of-powersave-cl.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/321-mac80211-fix-broken-AP-mode-handling-of-powersave-cl.patch b/package/kernel/mac80211/patches/321-mac80211-fix-broken-AP-mode-handling-of-powersave-cl.patch new file mode 100644 index 0000000..bbf7918 --- /dev/null +++ b/package/kernel/mac80211/patches/321-mac80211-fix-broken-AP-mode-handling-of-powersave-cl.patch @@ -0,0 +1,27 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Thu, 3 Nov 2016 10:47:21 +0100 +Subject: [PATCH] mac80211: fix broken AP mode handling of powersave clients + +Commit c68df2e7be0c ("mac80211: allow using AP_LINK_PS with +mac80211-generated TIM IE") introduced a logic error, where +__sta_info_recalc_tim turns into a no-op if local->ops->set_tim is not +set. This prevents the beacon TIM bit from being set for all drivers +that do not implement this op (almost all of them), thus thoroughly +essential AP mode powersave functionality. + +Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com> +Fixes: c68df2e7be0c ("mac80211: allow using AP_LINK_PS with mac80211-generated TIM IE") +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/net/mac80211/sta_info.c ++++ b/net/mac80211/sta_info.c +@@ -688,7 +688,7 @@ static void __sta_info_recalc_tim(struct + } + + /* No need to do anything if the driver does all */ +- if (!local->ops->set_tim) ++ if (local->ops->set_tim) + return; + + if (sta->dead) |