[rt2x00-users] [PATCH] mac80211: when receiving DTIM disable power-save mode only if it was enabled

Ronald Wahl ronald.wahl at raritan.com
Tue Mar 20 00:37:20 EST 2012


When receiving DTIM we currently disable power save mode in the
hardware unconditionally, i.e. also when the hardware was not sleeping.
This causes trouble with at least one wireless chipset (Ralink RT3572).
When the hardware is not sleeping and we send a wakeup command (e.g.
this happens after a scan) then a significant decrease of the link
quality or a disconnect may occur.
Disabling power save mode only when it was enabled prevents this issue.

Signed-off-by: Ronald Wahl <ronald.wahl at raritan.com>
---
Index: linux/net/mac80211/mlme.c
===================================================================
--- linux/net/mac80211/mlme.c	(revision 213137)
+++ linux/net/mac80211/mlme.c	(working copy)
@@ -1922,9 +1922,11 @@
 	if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) {
 		if (directed_tim) {
 			if (local->hw.conf.dynamic_ps_timeout > 0) {
-				local->hw.conf.flags &= ~IEEE80211_CONF_PS;
-				ieee80211_hw_config(local,
-						    IEEE80211_CONF_CHANGE_PS);
+				if (local->hw.conf.flags & IEEE80211_CONF_PS) {
+					local->hw.conf.flags &= ~IEEE80211_CONF_PS;
+					ieee80211_hw_config(local,
+							    IEEE80211_CONF_CHANGE_PS);
+				}
 				ieee80211_send_nullfunc(local, sdata, 0);
 			} else {
 				local->pspolling = true;



More information about the users mailing list