kernel_optimize_test/drivers/net/wireless
Johannes Berg 07346f81e8 mac80211: proper STA info locking
As discussed earlier, we can unify locking in struct sta_info
and use just a single spinlock protecting all members of the
structure that need protection. Many don't, but one of the
especially bad ones is the 'flags' member that can currently
be clobbered when RX and TX is being processed on different
CPUs at the same time.

Because having four spinlocks for different, mostly exclusive
parts of a single structure is overkill, this patch also kills
the ampdu and mesh plink spinlocks and uses just a single one
for everything. Because none of the spinlocks are nested, this
is safe.

It remains to be seen whether or not we should make the sta
flags use atomic bit operations instead, for now though this
is a safe thing and using atomic operations instead will be
very simple using the new static inline functions this patch
introduces for accessing sta->flags.

Since spin_lock_bh() is used with this lock, there shouldn't
be any contention even if aggregation is enabled at around the
same time as both requires frame transmission/reception which
is in a bh context.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Tomas Winkler <tomasw@gmail.com>
Cc: Ron Rindjunsky <ron.rindjunsky@intel.com>
Cc: Luis Carlos Cobo <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-05-14 16:29:34 -04:00
..
ath5k mac80211: clean up get_tx_stats callback 2008-05-07 15:02:26 -04:00
b43 b43: replace limit_value macro with clamp_val 2008-05-14 16:29:32 -04:00
b43legacy b43legacy: replace limit_value macro with clamp_val 2008-05-14 16:29:33 -04:00
hostap [NET]: Undo code bloat in hot paths due to print_mac(). 2008-04-08 16:50:44 -07:00
iwlwifi mac80211: proper STA info locking 2008-05-14 16:29:34 -04:00
libertas libertas: allow removal of card at any time 2008-05-07 15:02:27 -04:00
p54 wireless: fix warning introduced by "mac80211: QoS related cleanups" 2008-05-07 15:02:27 -04:00
prism54 prism54: prism54_get_encode() test below 0 on unsigned index 2008-04-23 21:25:36 -04:00
rt2x00 rt2x00: Clarify supported chipsets in Kconfig 2008-05-07 15:02:27 -04:00
zd1211rw wireless: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
adm8211.c mac80211: clean up get_tx_stats callback 2008-05-07 15:02:26 -04:00
adm8211.h
airo_cs.c
airo.c wireless: use get/put_unaligned_* helpers 2008-04-29 08:06:27 -07:00
airo.h
airport.c
arlan-main.c
arlan-proc.c arlan: fix warning when PROC_FS=n 2008-03-24 19:25:08 -04:00
arlan.h
atmel_cs.c
atmel_pci.c
atmel.c
atmel.h
hermes_rid.h
hermes.c
hermes.h
i82586.h
i82593.h
ipw2100.c
ipw2100.h
ipw2200.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-04-14 02:30:23 -07:00
ipw2200.h ipw2200 annotations and fixes 2008-03-25 16:41:58 -04:00
Kconfig p54: move to separate directory 2008-04-08 16:44:45 -04:00
Makefile iwlwifi: Allow building iwl3945 without iwl4965. 2008-04-27 15:38:30 -07:00
netwave_cs.c
orinoco_cs.c
orinoco_nortel.c
orinoco_pci.c
orinoco_pci.h
orinoco_plx.c
orinoco_tmd.c
orinoco.c
orinoco.h
ray_cs.c proc: switch /proc/driver/ray_cs/ray_cs to seq_file interface 2008-04-16 15:59:56 -04:00
ray_cs.h
rayctl.h
rndis_wlan.c wireless: rndis_wlan: modparam_workaround_interval is never below 0. 2008-04-23 21:25:36 -04:00
rtl818x.h
rtl8180_dev.c endianness annotations: drivers/net/wireless/rtl8180_dev.c 2008-04-01 17:13:16 -04:00
rtl8180_grf5101.c
rtl8180_grf5101.h
rtl8180_max2820.c
rtl8180_max2820.h
rtl8180_rtl8225.c
rtl8180_rtl8225.h
rtl8180_sa2400.c
rtl8180_sa2400.h
rtl8180.h
rtl8187_dev.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-04-17 23:56:30 -07:00
rtl8187_rtl8225.c
rtl8187_rtl8225.h
rtl8187.h
spectrum_cs.c
strip.c strip: Fix up strip for the new order 2008-04-30 08:29:47 -07:00
wavelan_cs.c wavelan_cs: stop inlining largish static functions 2008-04-08 15:05:57 -04:00
wavelan_cs.h wavelan_cs arm fix 2008-03-24 19:25:07 -04:00
wavelan_cs.p.h wavelan_cs: stop inlining largish static functions 2008-04-08 15:05:57 -04:00
wavelan.c
wavelan.h
wavelan.p.h
wl3501_cs.c
wl3501.h
zd1201.c
zd1201.h