linux/net/mac80211
Johannes Berg 667503ddcb cfg80211: fix locking
Over time, a lot of locking issues have crept into
the smarts of cfg80211, so e.g. scan completion can
race against a new scan, IBSS join can race against
leaving an IBSS, etc.

Introduce a new per-interface lock that protects
most of the per-interface data that we need to keep
track of, and sprinkle assertions about that lock
everywhere. Some things now need to be offloaded to
work structs so that we don't require being able to
sleep in functions the drivers call. The exception
to that are the MLME callbacks (rx_auth etc.) that
currently only mac80211 calls because it was easier
to do that there instead of in cfg80211, and future
drivers implementing those calls will, if they ever
exist, probably need to use a similar scheme like
mac80211 anyway...

In order to be able to handle _deauth and _disassoc
properly, introduce a cookie passed to it that will
determine locking requirements.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-07-10 15:02:32 -04: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
aes_cmac.c mac80211: 802.11w - Add BIP (AES-128-CMAC) 2009-01-29 16:00:02 -05:00
aes_cmac.h mac80211: 802.11w - Add BIP (AES-128-CMAC) 2009-01-29 16:00:02 -05:00
agg-rx.c mac80211: Add a timeout for frames in the RX reorder buffer 2009-05-06 15:15:04 -04:00
agg-tx.c mac80211: Fix the way ADDBA request count being modified 2009-06-10 13:28:38 -04:00
cfg.c cfg80211: fix locking 2009-07-10 15:02:32 -04:00
cfg.h [MAC80211]: rename ieee80211_cfg.h to cfg.h 2007-10-10 16:52:34 -07:00
debugfs_key.c mac80211: 802.11w - Use BIP (AES-128-CMAC) 2009-01-29 16:00:03 -05:00
debugfs_key.h mac80211: 802.11w - Use BIP (AES-128-CMAC) 2009-01-29 16:00:03 -05:00
debugfs_netdev.c mac80211: rework MLME for multiple authentications 2009-07-10 15:02:30 -04:00
debugfs_netdev.h mac80211: revamp virtual interface handling 2008-07-14 14:30:07 -04:00
debugfs_sta.c mac80211: improve per-sta debugfs 2009-07-10 14:57:54 -04:00
debugfs_sta.h mac80211: RCU-ify STA info structure access 2008-03-06 15:30:46 -05:00
debugfs.c mac80211: add queue debugfs file 2009-06-15 15:05:57 -04:00
debugfs.h
driver-ops.h cfg80211: add rfkill support 2009-06-03 14:06:14 -04:00
event.c cfg80211: use proper allocation flags 2009-07-10 15:01:49 -04:00
ht.c cfg80211: clean up includes 2009-04-22 16:57:17 -04:00
ibss.c mac80211: push rx status into skb->cb 2009-07-10 14:57:54 -04:00
ieee80211_i.h cfg80211: fix locking 2009-07-10 15:02:32 -04:00
iface.c mac80211: rework MLME for multiple authentications 2009-07-10 15:02:30 -04:00
Kconfig cfg80211: implement iwpower 2009-07-10 15:01:51 -04:00
key.c mac80211: fix todo lock 2009-07-10 15:01:48 -04:00
key.h nl80211: Add RSC configuration for new keys 2009-05-13 15:44:39 -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: push rx status into skb->cb 2009-07-10 14:57:54 -04:00
Makefile mac80211: split IBSS/managed code 2009-02-27 14:51:42 -05:00
mesh_hwmp.c mac80211: fix allocation in mesh_queue_preq 2009-07-07 12:55:27 -04:00
mesh_pathtbl.c mac80211: mesh portal functionality support 2008-09-24 16:18:02 -04:00
mesh_plink.c mac80211: cancel/restart all timers across suspend/resume 2009-05-20 14:46:25 -04:00
mesh.c mac80211: push rx status into skb->cb 2009-07-10 14:57:54 -04:00
mesh.h mac80211: push rx status into skb->cb 2009-07-10 14:57:54 -04: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 cfg80211: fix locking 2009-07-10 15:02:32 -04:00
pm.c mac80211: cancel/restart all timers across suspend/resume 2009-05-20 14:46:25 -04:00
rate.c mac80211: rate control status only for controlled packets 2009-03-27 20:13:15 -04:00
rate.h mac80211: rate control status only for controlled packets 2009-03-27 20:13:15 -04:00
rc80211_minstrel_debugfs.c mac80211: correct warnings in minstrel rate control algorithm 2008-10-27 17:46:11 -04:00
rc80211_minstrel.c mac80211: minstrel: avoid accessing negative indices in rix_to_ndx() 2009-07-07 12:55:28 -04:00
rc80211_minstrel.h minstrel: improve performance for non-MRR drivers 2008-10-31 19:00:36 -04:00
rc80211_pid_algo.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-05-18 21:08:20 -07:00
rc80211_pid_debugfs.c mac80211/drivers: rewrite the rate control API 2008-10-31 19:00:23 -04:00
rc80211_pid.h mac80211/drivers: rewrite the rate control API 2008-10-31 19:00:23 -04:00
rx.c mac80211: rework MLME for multiple authentications 2009-07-10 15:02:30 -04:00
scan.c mac80211: rework MLME for multiple authentications 2009-07-10 15:02:30 -04:00
spectmgmt.c mac80211: move channel switch code 2009-05-20 14:46:25 -04:00
sta_info.c mac80211: extend sta kdoc - explain when they are added 2009-06-03 14:06:15 -04:00
sta_info.h mac80211: improve per-sta debugfs 2009-07-10 14:57:54 -04:00
tkip.c mac80211: add driver ops wrappers 2009-05-06 15:14:37 -04:00
tkip.h mac80211: tkip.c consolidate tkip IV writing in helper 2008-06-14 12:18:13 -04:00
tx.c net: convert remaining non-symbolic return values in ndo_start_xmit() functions 2009-07-05 19:23:38 -07:00
util.c mac80211: disconnect when user changes channel 2009-06-15 15:05:58 -04:00
wep.c mac80211: refactor the WEP code to be directly usable 2009-07-10 15:02:31 -04:00
wep.h mac80211: refactor the WEP code to be directly usable 2009-07-10 15:02:31 -04:00
wext.c cfg80211: implement get_wireless_stats 2009-07-10 15:01:52 -04:00
wme.c mac80211: do not pass PS frames out of mac80211 again 2009-06-10 13:28:37 -04:00
wme.h mac80211: fix aggregation for hardware with ampdu queues 2009-02-27 14:51:42 -05:00
wpa.c cfg80211: use proper allocation flags 2009-07-10 15:01:49 -04:00
wpa.h mac80211: 802.11w - Add BIP (AES-128-CMAC) 2009-01-29 16:00:02 -05:00