linux/drivers/net/wireless
Johannes Berg 6ab10ff873 iwlwifi: handle unicast PS buffering
Using the new mac80211 functionality, this makes
iwlwifi handle unicast PS buffering correctly.
The device works like this:

 * when a station goes to sleep, the microcode notices
   this and marks the station as asleep
 * when the station is marked asleep, the microcode
   refuses to transmit to the station and rejects all
   frames queued to it with the failure status code
   TX_STATUS_FAIL_DEST_PS (a previous patch handled
   this correctly)
 * when we need to send frames to the station _although_
   it is asleep, we need to tell the ucode how many,
   and this is asynchronous with sending so we cannot
   just send the frames, we need to wait for all other
   frames to be flushed, and then update the counter
   before sending out the poll response frames. This
   is handled partially in the driver and partially in
   mac80211.

In order to do all this correctly, we need to
 * keep track of how many frames are pending for each
   associated client station (avoid doing it for other
   stations to avoid the atomic ops)
 * tell mac80211 that we driver-block the PS status
   while there are still frames pending on the queues,
   and once they are all rejected (due to the dest sta
   being in PS) unblock mac80211

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-11-18 17:09:08 -05:00
..
ath ath5k: allow setting txpower to 0 2009-11-16 14:17:14 -05:00
b43 b43-pio: Fix RX error path for rev>=8 devices 2009-11-11 15:23:49 -05:00
b43legacy b43legacy: Remove deprecated 'qual' from returned RX status 2009-11-06 16:49:09 -05:00
hostap wireless: remove WLAN_80211 and WLAN_PRE80211 from Kconfig 2009-10-30 16:50:35 -04:00
ipw2x00 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2009-11-18 10:55:32 -08:00
iwlwifi iwlwifi: handle unicast PS buffering 2009-11-18 17:09:08 -05:00
iwmc3200wifi iwmc3200wifi: declare MODULE_FIRMWARE 2009-11-11 15:23:52 -05:00
libertas libertas: declare MODULE_FIRMWARE 2009-11-11 15:23:53 -05:00
libertas_tf libertas_tf_usb: declare MODULE_FIRMWARE 2009-11-11 15:23:53 -05:00
orinoco orinoco: declare MODULE_FIRMWARE 2009-11-11 15:23:53 -05:00
p54 drivers/net/wireless/p54: remove exceptional & on function name 2009-11-18 10:48:56 -08:00
prism54 prism54: declare MODULE_FIRMWARE 2009-11-11 15:23:54 -05:00
rt2x00 rt2800: do not enable tbtt unless we are in a beacon mode 2009-11-16 14:17:13 -05:00
rtl818x drivers/net/wireless/rtl818x: remove exceptional & on function name 2009-11-18 10:48:57 -08:00
wl12xx wl12xx: declare MODULE_FIRMWARE 2009-11-11 15:23:54 -05:00
zd1211rw zd1211rw: declare MODULE_FIRMWARE 2009-11-11 15:23:55 -05:00
adm8211.c drivers/net/adm8211.c: remove exceptional & on function name 2009-11-18 10:48:52 -08:00
adm8211.h mac80211: fix ADM8211_SYNCTL_RFtype define 2009-10-07 16:33:51 -04:00
airo_cs.c
airo.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-10-29 21:28:59 -07:00
airo.h
at76c50x-usb.c at76c50x-usb: Supply additional parameters to at76_start_monitor scan request 2009-11-11 17:09:17 -05:00
at76c50x-usb.h
atmel_cs.c
atmel_pci.c
atmel.c atmel: declare MODULE_FIRMWARE 2009-11-11 15:23:49 -05:00
atmel.h
Kconfig wireless: airo_cs needs WEXT_SPY 2009-10-30 16:50:38 -04:00
mac80211_hwsim.c mac80211_hwsim: Send ACK frames on the hwsim0 interface 2009-11-02 15:43:27 -05:00
Makefile netwave: move driver to staging 2009-10-30 16:50:34 -04:00
mwl8k.c mwl8k: declare MODULE_FIRMWARE 2009-11-11 15:23:53 -05:00
ray_cs.c drivers/net/wireless: correct check on CCS_START_NETWORK 2009-11-11 15:23:55 -05:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: handle NL80211_AUTHTYPE_AUTOMATIC 2009-11-16 14:17:13 -05:00
wl3501_cs.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
wl3501.h
zd1201.c zd1201: declare MODULE_FIRMWARE 2009-11-11 15:23:54 -05:00
zd1201.h