kernel-fxtec-pro1x/drivers/net/wireless
Helmut Schaa 69cf36a452 rt2x00: Refactor beacon code to make use of start- and stop_queue
This patch allows to dynamically remove beaconing interfaces without
shutting beaconing down on all interfaces.

The only place to start and stop beaconing are now the start- and
stop_queue callbacks. Hence, we can remove some register writes during
interface bring up (config_intf) and only write the correct sync mode
to the register there.

When multiple beaconing interfaces are present we should enable
beaconing as soon as mac80211 enables beaconing on at least one of
them. The beacon queue gets stopped when the last beaconing
interface was stopped by mac80211. Therefore, introduce another
interface counter to keep track ot the number of enabled beaconing
interfaces and start or stop the beacon queue accordingly.

To allow single interfaces to stop beaconing, add a new driver
callback clear_beacon to clear a single interface's beacon without
affecting the other interfaces. Don't overload the clear_entry callback
for clearing beacons as that would introduce additional overhead
(check for each TX queue) into the clear_entry callback which is used
on the drivers TX/RX hotpaths.

Furthermore, the write beacon callback doesn't need to enable beaconing
anymore but since beaconing should be disabled while a new beacon is
written or cleared we still disable beacon generation and enable it
afterwards again in the driver specific callbacks. However, beacon
related interrupts should not be disabled/enabled here, that's solely
done from the start- and stop queue callbacks. It would be nice to stop
the beacon queue just before the beacon update and enable it afterwards
in rt2x00queue itself instead of the current implementation that relies
on the driver doing the right thing. However, since start- and
stop_queue are mutex protected we cannot use them for atomic beacon
updates.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-01-31 15:06:22 -05:00
..
ath Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-01-28 16:23:14 -05:00
b43 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
b43legacy Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
hostap hostap_cs: fix sleeping function called from invalid context 2011-01-10 15:40:53 -05:00
ipw2x00 ipw2200: Check for -1 INTA in tasklet too. 2011-01-10 15:40:53 -05:00
iwlwifi iwl3945: do not use agn specific IWL_RATE_COUNT 2011-01-31 15:06:21 -05:00
iwmc3200wifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-01-28 16:23:14 -05:00
libertas cfg80211: Extend channel to frequency mapping for 802.11j 2011-01-21 15:34:17 -05:00
libertas_tf
orinoco Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-26 22:37:05 -08:00
p54 p54: fix sequence no. accounting off-by-one error 2011-01-10 15:40:53 -05:00
prism54
rt2x00 rt2x00: Refactor beacon code to make use of start- and stop_queue 2011-01-31 15:06:22 -05:00
rtl818x rtl818x: move rtl8180 and rtl8187 to separate subdirectories 2010-12-22 13:45:32 -05:00
rtlwifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-01-28 16:23:14 -05:00
wl12xx wl12xx: disable auto-arp 2011-01-24 23:44:27 +02:00
wl1251 cfg80211: Extend channel to frequency mapping for 802.11j 2011-01-21 15:34:17 -05:00
zd1211rw Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2011-01-07 16:58:04 -08:00
adm8211.c
adm8211.h
airo.c airo: use simple_write_to_buffer 2011-01-04 14:35:12 -05:00
airo.h
airo_cs.c
at76c50x-usb.c
at76c50x-usb.h
atmel.c
atmel.h
atmel_cs.c
atmel_pci.c
Kconfig rtl8192ce: Add new driver 2010-12-15 16:17:49 -05:00
mac80211_hwsim.c mac80211: track receiver's aggregation reorder buffer size 2011-01-19 11:36:11 -05:00
Makefile rtl8192ce: Add new driver 2010-12-15 16:17:49 -05:00
mwl8k.c cfg80211: Extend channel to frequency mapping for 802.11j 2011-01-21 15:34:17 -05:00
ray_cs.c wireless: ray_cs: use '%pm' format option to print MAC 2010-12-02 15:17:00 -05:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: add support for set_power_mgmt 2010-12-22 15:43:31 -05:00
wl3501.h
wl3501_cs.c
zd1201.c wireless: Remove unnecessary casts of usb_get_intfdata 2010-12-02 15:16:47 -05:00
zd1201.h