summaryrefslogtreecommitdiff
path: root/package/kernel/mac80211/patches/904-wlcore-AP-don-t-start-mac80211-PS-on-non-peer-HLIDs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/904-wlcore-AP-don-t-start-mac80211-PS-on-non-peer-HLIDs.patch')
-rw-r--r--package/kernel/mac80211/patches/904-wlcore-AP-don-t-start-mac80211-PS-on-non-peer-HLIDs.patch28
1 files changed, 28 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/904-wlcore-AP-don-t-start-mac80211-PS-on-non-peer-HLIDs.patch b/package/kernel/mac80211/patches/904-wlcore-AP-don-t-start-mac80211-PS-on-non-peer-HLIDs.patch
new file mode 100644
index 0000000000..3942f1e5a1
--- /dev/null
+++ b/package/kernel/mac80211/patches/904-wlcore-AP-don-t-start-mac80211-PS-on-non-peer-HLIDs.patch
@@ -0,0 +1,28 @@
+It seems the wl18xx FW sometimes sends spurious changes on the PSM state
+of the broadcast HLID. This causes us to search for a station on a
+non-peer link and fail, causing warnings in our log.
+
+Prevent the driver from considering PSM changes for any non-peer HLIDs.
+
+Signed-off-by: Arik Nemtsov <arik@wizery.com>
+Signed-off-by: Eliad Peller <eliad@wizery.com>
+
+---
+drivers/net/wireless/ti/wlcore/ps.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ti/wlcore/ps.c
++++ b/drivers/net/wireless/ti/wlcore/ps.c
+@@ -280,7 +280,11 @@ void wl12xx_ps_link_start(struct wl1271
+ struct ieee80211_sta *sta;
+ struct ieee80211_vif *vif = wl12xx_wlvif_to_vif(wlvif);
+
+- if (test_bit(hlid, &wl->ap_ps_map))
++ if (WARN_ON_ONCE(wlvif->bss_type != BSS_TYPE_AP_BSS))
++ return;
++
++ if (!test_bit(hlid, wlvif->ap.sta_hlid_map) ||
++ test_bit(hlid, &wl->ap_ps_map))
+ return;
+
+ wl1271_debug(DEBUG_PSM, "start mac80211 PSM on hlid %d pkts %d "