aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorKalle Valo <kalle.valo@nokia.com>2009-02-10 10:09:31 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-02-13 13:45:17 -0500
commit572e00122190e3064fa19bd9780b146d2d0f1905 (patch)
treeae8423958dd012af1dca83718b3035f2e75c53ec /net/mac80211/ieee80211_i.h
parent1fb3606bc5864c64c78ce4e1751e5382a9a5aa84 (diff)
mac80211: use ps-poll when dynamic power save mode is disabled
When a directed tim bit is set, mac80211 currently disables power save ands sends a null frame to the AP. But if dynamic power save is disabled, mac80211 will not enable power save ever gain. Fix this by adding ps-poll functionality to mac80211. When a directed tim bit is set, mac80211 sends a ps-poll frame to the AP and checks for the more data bit in the returned data frames. Using ps-poll is slower than waking up with null frame, but it's saves more power in cases where the traffic is low. Userspace can control if either ps-poll or null wakeup method is used by enabling and disabling dynamic power save. Signed-off-by: Kalle Valo <kalle.valo@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 5a1f19ad43c8..67bd5220cf40 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -728,6 +728,7 @@ struct ieee80211_local {
728 unsigned int wmm_acm; /* bit field of ACM bits (BIT(802.1D tag)) */ 728 unsigned int wmm_acm; /* bit field of ACM bits (BIT(802.1D tag)) */
729 729
730 bool powersave; 730 bool powersave;
731 bool pspolling;
731 struct work_struct dynamic_ps_enable_work; 732 struct work_struct dynamic_ps_enable_work;
732 struct work_struct dynamic_ps_disable_work; 733 struct work_struct dynamic_ps_disable_work;
733 struct timer_list dynamic_ps_timer; 734 struct timer_list dynamic_ps_timer;
@@ -921,6 +922,8 @@ u32 ieee80211_sta_get_rates(struct ieee80211_local *local,
921 enum ieee80211_band band); 922 enum ieee80211_band band);
922void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, 923void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
923 u8 *ssid, size_t ssid_len); 924 u8 *ssid, size_t ssid_len);
925void ieee80211_send_pspoll(struct ieee80211_local *local,
926 struct ieee80211_sub_if_data *sdata);
924 927
925/* scan/BSS handling */ 928/* scan/BSS handling */
926int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, 929int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata,