linux-hardened/net/mac80211
Kalle Valo 520eb82076 mac80211: implement dynamic power save
This patch implements dynamic power save for mac80211. Basically it
means enabling power save mode after an idle period. Implementing it
dynamically gives a good compromise of low power consumption and low
latency. Some hardware have support for this in firmware, but some
require the host to do it.

The dynamic power save is implemented by adding an timeout to
ieee80211_subif_start_xmit(). The timeout can be enabled from userspace
with Wireless Extensions. For example, the command below enables the
dynamic power save and sets the time timeout to 500 ms:

iwconfig wlan0 power timeout 500m

Power save now only works with devices which handle power save in firmware.
It's also disabled by default and the heuristics when and how to enable is
considered as a policy decision and will be left for the userspace to handle.
In case the firmware has support for this, drivers can disable this feature
with IEEE80211_HW_NO_STACK_DYNAMIC_PS.

Big thanks to Johannes Berg for the help with the design and code.

Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-19 15:24:00 -05:00
..
aes_ccm.c mac80211: aes_ccm.c remove crypto wrapper and extra args 2008-07-08 14:16:02 -04:00
aes_ccm.h mac80211: pass scratch buffer directly, remove additional pointers 2008-07-08 14:16:02 -04:00
cfg.c mac80211: Send Layer 2 Update frame on reassociation 2008-12-19 15:23:08 -05:00
cfg.h [MAC80211]: rename ieee80211_cfg.h to cfg.h 2007-10-10 16:52:34 -07:00
debugfs.c mac80211: make retry limits part of hw config 2008-10-31 19:00:14 -04:00
debugfs.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
debugfs_key.c mac80211: convert to %pM away from print_mac 2008-10-27 17:06:16 -07:00
debugfs_key.h mac80211: fix key vs. sta locking problems 2008-04-08 16:44:45 -04:00
debugfs_netdev.c mac80211: move bss_conf into vif 2008-10-31 19:00:15 -04:00
debugfs_netdev.h mac80211: revamp virtual interface handling 2008-07-14 14:30:07 -04:00
debugfs_sta.c mac80211: fix a buffer overrun in station debug code 2008-11-10 21:37:39 -08:00
debugfs_sta.h mac80211: RCU-ify STA info structure access 2008-03-06 15:30:46 -05:00
event.c mac80211: convert to %pM away from print_mac 2008-10-27 17:06:16 -07:00
ht.c mac80211: Fix HT channel selection 2008-12-19 15:22:54 -05:00
ieee80211_i.h mac80211: implement dynamic power save 2008-12-19 15:24:00 -05:00
iface.c cfg80211: handle SIOCGIWMODE/SIOCSIWMODE 2008-12-05 09:32:58 -05:00
Kconfig mac80211: make Minstrel the default rate control algorithm 2008-11-26 09:47:03 -05:00
key.c mac80211: convert to %pM away from print_mac 2008-10-27 17:06:16 -07:00
key.h mac80211: Let drivers have access to TKIP key offets for TX and RX MIC 2008-06-27 09:09:17 -04:00
led.c mac80211: rename files 2008-04-08 16:44:45 -04:00
led.h mac80211: rename files 2008-04-08 16:44:45 -04:00
main.c mac80211: implement dynamic power save 2008-12-19 15:24:00 -05:00
Makefile mac80211/cfg80211: check endianness in sparse runs 2008-12-12 14:01:35 -05:00
mesh.c wireless: move mesh config length constant 2008-11-10 15:10:16 -05:00
mesh.h wireless: move mesh config length constant 2008-11-10 15:10:16 -05:00
mesh_hwmp.c net: remove redundant argument comments 2008-11-21 17:15:03 -08:00
mesh_pathtbl.c mac80211: mesh portal functionality support 2008-09-24 16:18:02 -04:00
mesh_plink.c mac80211: convert to %pM away from print_mac 2008-10-27 17:06:16 -07:00
michael.c mac80211: remove ieee80211_get_hdr_info 2008-07-08 14:16:01 -04:00
michael.h mac80211: remove ieee80211_get_hdr_info 2008-07-08 14:16:01 -04:00
mlme.c mac80211: implement dynamic power save 2008-12-19 15:24:00 -05:00
rate.c mac80211/drivers: rewrite the rate control API 2008-10-31 19:00:23 -04:00
rate.h mac80211: remove rate_control_clear 2008-10-31 19:00:37 -04:00
rc80211_minstrel.c wireless: fix a few sparse warnings 2008-11-10 15:10:17 -05:00
rc80211_minstrel.h minstrel: improve performance for non-MRR drivers 2008-10-31 19:00:36 -04:00
rc80211_minstrel_debugfs.c mac80211: correct warnings in minstrel rate control algorithm 2008-10-27 17:46:11 -04:00
rc80211_pid.h mac80211/drivers: rewrite the rate control API 2008-10-31 19:00:23 -04:00
rc80211_pid_algo.c mac80211: Fix pid rate-setting algorithm to allow rate changes 2008-11-26 09:47:20 -05:00
rc80211_pid_debugfs.c mac80211/drivers: rewrite the rate control API 2008-10-31 19:00:23 -04:00
rx.c mac80211: Remove radiotap rate-present flag for HT 2008-12-19 15:23:22 -05:00
scan.c wireless: move mesh config length constant 2008-11-10 15:10:16 -05:00
spectmgmt.c mac80211: move frame TX function 2008-09-11 15:53:39 -04:00
sta_info.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-12-05 22:54:40 -08:00
sta_info.h mac80211: remove more excess kernel-doc 2008-11-21 11:08:15 -05:00
tkip.c mac80211: convert to %pM away from print_mac 2008-10-27 17:06:16 -07:00
tkip.h mac80211: tkip.c consolidate tkip IV writing in helper 2008-06-14 12:18:13 -04:00
tx.c mac80211: implement dynamic power save 2008-12-19 15:24:00 -05:00
util.c mac80211: track master queue status 2008-12-19 15:23:59 -05:00
wep.c mac80211: fix unaligned access in ieee80211_wep_encrypt_data 2008-11-26 09:47:51 -05:00
wep.h mac80211: minor code cleanups 2008-10-31 18:05:59 -04:00
wext.c mac80211: implement dynamic power save 2008-12-19 15:24:00 -05:00
wme.c mac80211: Re-enable aggregation 2008-10-31 19:02:14 -04:00
wme.h mac80211: clean up some comments 2008-09-15 16:48:22 -04:00
wpa.c mac80211: minor code cleanups 2008-10-31 18:05:59 -04:00
wpa.h mac80211: split ieee80211_txrx_data 2008-03-06 15:30:46 -05:00