28 lines
976 B
Diff
28 lines
976 B
Diff
|
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)
|