diff options
author | Vivek Natarajan <vivek.natraj@gmail.com> | 2008-12-23 21:28:34 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-01-29 15:58:48 -0500 |
commit | 869717fbe43eb831cbebd03a9a66a4a4c3b406a9 (patch) | |
tree | 606022280750e9427784a5fcb246ff7ea1e37f24 /net/mac80211/wext.c | |
parent | d063ed0f0cd623b45edc6f4781dda6478c56bb4f (diff) |
mac80211: A couple of fixes to dynamic power save.
a) hw_config() should not be called from siwpower() for the drivers which do not support
dynamic powersave.
b) IEEE80211_HW_NO_STACK_DYNAMIC_PS needs to be verified in set_associated() also before
enabling the power save timers.
Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/wext.c')
-rw-r--r-- | net/mac80211/wext.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c index 011592fd4528..8568f1e7266f 100644 --- a/net/mac80211/wext.c +++ b/net/mac80211/wext.c | |||
@@ -865,9 +865,9 @@ set: | |||
865 | local->powersave = ps; | 865 | local->powersave = ps; |
866 | local->dynamic_ps_timeout = timeout; | 866 | local->dynamic_ps_timeout = timeout; |
867 | 867 | ||
868 | if (sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED) { | 868 | if (!(local->hw.flags & IEEE80211_HW_NO_STACK_DYNAMIC_PS) && |
869 | if (!(local->hw.flags & IEEE80211_HW_NO_STACK_DYNAMIC_PS) && | 869 | (sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED)) { |
870 | local->dynamic_ps_timeout > 0) | 870 | if (local->dynamic_ps_timeout > 0) |
871 | mod_timer(&local->dynamic_ps_timer, jiffies + | 871 | mod_timer(&local->dynamic_ps_timer, jiffies + |
872 | msecs_to_jiffies(local->dynamic_ps_timeout)); | 872 | msecs_to_jiffies(local->dynamic_ps_timeout)); |
873 | else { | 873 | else { |
@@ -875,8 +875,9 @@ set: | |||
875 | conf->flags |= IEEE80211_CONF_PS; | 875 | conf->flags |= IEEE80211_CONF_PS; |
876 | else | 876 | else |
877 | conf->flags &= ~IEEE80211_CONF_PS; | 877 | conf->flags &= ~IEEE80211_CONF_PS; |
878 | ret = ieee80211_hw_config(local, | ||
879 | IEEE80211_CONF_CHANGE_PS); | ||
878 | } | 880 | } |
879 | ret = ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); | ||
880 | } | 881 | } |
881 | 882 | ||
882 | return ret; | 883 | return ret; |