linux/drivers/net/wireless/iwlwifi
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
..
iwl3945-base.c mac80211: QoS related cleanups 2008-05-07 15:02:26 -04:00
iwl4965-base.c mac80211: QoS related cleanups 2008-05-07 15:02:26 -04:00
iwl-3945-commands.h iwlwifi: iwl3945 remove 4965 commands 2008-03-25 16:41:54 -04:00
iwl-3945-core.h iwlwifi: add struct iwl_cfg 2008-03-07 16:03:00 -05:00
iwl-3945-debug.h iwlwifi: update copyright year 2008-03-13 19:32:32 -04:00
iwl-3945-hw.h iwlwifi: 3945 remove unused SCD definitions 2008-05-07 15:02:20 -04:00
iwl-3945-io.h iwlwifi: update copyright year 2008-03-13 19:32:32 -04:00
iwl-3945-led.c iwlwifi: Add led support 2008-03-27 16:03:16 -04:00
iwl-3945-led.h iwlwifi: Add led support 2008-03-27 16:03:16 -04:00
iwl-3945-rs.c iwlwifi: remove includes to net/ieee80211.h 2008-05-07 15:02:15 -04:00
iwl-3945-rs.h iwlwifi: move rate registration to module load 2008-04-01 17:13:19 -04:00
iwl-3945.c iwlwifi: define ANA_PLL values in iwl-csr.h 2008-05-07 15:02:11 -04:00
iwl-3945.h iwlwifi: remove support for Narrow Channel (10Mhz) 2008-05-07 15:02:16 -04:00
iwl-4965-hw.h iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-4965-rs.c mac80211: proper STA info locking 2008-05-14 16:29:34 -04:00
iwl-4965-rs.h iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-4965.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-5000-hw.h iwlwifi-5000: update the byte count in SCD 2008-05-07 15:02:25 -04:00
iwl-5000.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-calib.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-calib.h iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-commands.h iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-core.c wireless: fix "iwlwifi: unify init driver flow" 2008-05-14 16:29:31 -04:00
iwl-core.h iwlwifi: wrapping nic configuration in iwl core handler 2008-05-07 15:02:22 -04:00
iwl-csr.h iwlwifi-5000: Add HW REV of 5000 HW family 2008-05-07 15:02:25 -04:00
iwl-debug.h iwlwifi: Add debugfs to iwl core 2008-03-25 16:41:47 -04:00
iwl-debugfs.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-dev.h iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-eeprom.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-eeprom.h iwlwifi-5000: add nic config handler for 5000 HW 2008-05-07 15:02:25 -04:00
iwl-fh.h iwlwifi: move Flow Handlers define to iwl-fh.h 2008-05-07 15:02:20 -04:00
iwl-hcmd.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-helpers.h iwlwifi: update copyright year 2008-03-13 19:32:32 -04:00
iwl-io.h iwlwifi: improve NIC i/o debug prints information 2008-03-27 16:03:17 -04:00
iwl-led.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-led.h iwlwifi: Add led support 2008-03-27 16:03:16 -04:00
iwl-power.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-power.h iwlwifi: rename iwl-4965-commands to iwl-commands.h 2008-05-07 15:02:26 -04:00
iwl-prph.h iwlwifi: clean up register names and defines 2008-05-07 15:02:19 -04:00
iwl-rfkill.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-rfkill.h iwlwifi: make Makefile more concise 2008-04-16 15:59:59 -04:00
iwl-spectrum.h iwlwifi: update copyright year 2008-03-13 19:32:32 -04:00
iwl-sta.c iwlwifi: rename iwl-4965.h to iwl-dev.h 2008-05-07 15:02:26 -04:00
iwl-sta.h iwlwifi: iwl-sta redundant includes clean up 2008-05-07 15:02:20 -04:00
Kconfig iwlwifi-5000: add run time calibrations for 5000 2008-05-07 15:02:24 -04:00
Makefile iwlwifi-5000: adding initial recognition for the 5000 family 2008-05-07 15:02:22 -04:00