Patch "mac80211_hwsim: enforce PS_MANUAL_POLL to be set after PS_ENABLED" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
mac80211_hwsim: enforce PS_MANUAL_POLL to be set after PS_ENABLED
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
mac80211_hwsim-enforce-ps_manual_poll-to-be-set-after-ps_enabled.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Sun Mar 18 16:55:33 CET 2018
From: Adiel Aloni <[email protected]>
Date: Fri, 1 Dec 2017 13:50:53 +0200
Subject: mac80211_hwsim: enforce PS_MANUAL_POLL to be set after PS_ENABLED
From: Adiel Aloni <[email protected]>
[ Upstream commit e16ea4bb516bc21ea2202f2107718b29218bea59 ]
Enforce using PS_MANUAL_POLL in ps hwsim debugfs to trigger a poll, only if PS_ENABLED was set before.
This is required due to commit c9491367b759 ("mac80211: always update the PM state of a peer on MGMT / DATA frames") that enforces the ap to check only mgmt/data frames ps bit, and then update station's power save accordingly.
When sending only ps-poll (control frame) the ap will not be aware that the station entered power save.
Setting ps enable before triggering ps_poll, will send NDP with PM bit enabled first.
--- drivers/net/wireless/mac80211_hwsim.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
drivers/net/wireless/mac80211_hwsim.c +11 -6
@@ -728,16 +728,21 @@ static int hwsim_fops_ps_write(void *dat val != PS_MANUAL_POLL)return -EINVAL ; - old_ps = data->ps; - data->ps = val; - -local_bh_disable ();if (val ==PS_MANUAL_POLL ) { +if (data->ps !=PS_ENABLED ) +return -EINVAL ; +local_bh_disable ();ieee80211_iterate_active_interfaces_atomic ( data->hw,IEEE80211_IFACE_ITER_NORMAL , hwsim_send_ps_poll, data); - data->ps_poll_pending = true; - }else if (old_ps ==PS_DISABLED && val !=PS_DISABLED ) { +local_bh_enable (); +return 0 ; + } + old_ps = data->ps; + data->ps = val; + +local_bh_disable (); +if (old_ps ==PS_DISABLED && val !=PS_DISABLED ) {ieee80211_iterate_active_interfaces_atomic ( data->hw,IEEE80211_IFACE_ITER_NORMAL , hwsim_send_nullfunc_ps, data);
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/mac80211_hwsim-enforce-ps_manual_poll-to-be-set-after-ps_enabled.patch