kernel-ark/drivers/net/wireless/rt2x00
Ivo van Doorn 980dfcb932 rt2x00: Fix lock dependency errror
This fixes a circular locking dependency in the workqueue handling.
The interface work task uses the mac80211 function
ieee80211_iterate_active_interfaces() which grabs the RTNL lock.

However when the interface is brough down, this happens under the RTNL
lock as well, this causes problems because mac80211 will flush the workqueue
during the ifdown event. This causes mac80211 to wait until the driver has
completed all work which can't finish because it is waiting on the RTNL lock.

This is fixed by moving rt2x00 workqueue tasks on a different workqueue,
this workqueue can be flushed when the ieee80211_hw structure is removed
by the driver (when the driver is unloaded) which does not happen under the
RTNL lock.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-06-27 14:49:52 -04:00
..
Kconfig rt2x00: LEDS build failure 2008-06-13 16:14:51 -04:00
Makefile rt2x00: Cleanup Makefile 2008-02-29 15:37:21 -05:00
rt2x00.h rt2x00: Fix lock dependency errror 2008-06-27 14:49:52 -04:00
rt2x00config.c rt2x00: Reset antenna RSSI after switch 2008-05-28 16:43:45 -04:00
rt2x00debug.c rt2x00: Upgrade queue->lock to use irqsave 2008-03-13 16:02:35 -04:00
rt2x00debug.h rt2x00: Update copyright notice 2008-02-29 15:19:22 -05:00
rt2x00dev.c rt2x00: Fix lock dependency errror 2008-06-27 14:49:52 -04:00
rt2x00dump.h rt2x00: Queue handling overhaul 2008-02-29 15:19:27 -05:00
rt2x00firmware.c rt2x00: Move firmware checksumming to driver 2008-03-13 16:02:36 -04:00
rt2x00leds.c rt2x00: Fix quality/activity led handling 2008-05-01 17:38:39 -04:00
rt2x00leds.h rt2x00: Remove MAC80211_LEDS dependency 2008-04-01 17:14:09 -04:00
rt2x00lib.h rt2x00: Fix quality/activity led handling 2008-05-01 17:38:39 -04:00
rt2x00mac.c rt2x00: Fix lock dependency errror 2008-06-27 14:49:52 -04:00
rt2x00pci.c rt2x00: Restrict DMA to 32-bit addresses. 2008-06-13 16:14:48 -04:00
rt2x00pci.h rt2x00: Fix Descriptor DMA initialization 2008-02-29 15:37:22 -05:00
rt2x00queue.c rt2x00: Upgrade queue->lock to use irqsave 2008-03-13 16:02:35 -04:00
rt2x00queue.h rt2x00: Add dev_flags to rx descriptor 2008-03-25 16:41:58 -04:00
rt2x00reg.h rt2x00: Rate structure overhaul 2008-02-29 15:19:38 -05:00
rt2x00rfkill.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-03-18 00:37:55 -07:00
rt2x00usb.c rt2x00: Don't kill guardian_urb when it wasn't created 2008-06-13 16:14:46 -04:00
rt2x00usb.h rt2x00: Remove async vendor request calls from rt2x00usb 2008-02-29 15:37:24 -05:00
rt61pci.c rt2x00: Don't use pskb_expand_head() 2008-05-12 21:22:17 -04:00
rt61pci.h rt2x00: Fix MAC address defines in rt61pci 2008-02-29 15:37:25 -05:00
rt73usb.c rt2x00: Fix unbalanced mutex locking 2008-06-25 10:56:16 -04:00
rt73usb.h rt2x00: Rename dscape -> mac80211 2008-02-29 15:37:23 -05:00
rt2400pci.c rt2x00: Fix quality/activity led handling 2008-05-01 17:38:39 -04:00
rt2400pci.h rt2x00: Fix rt2400pci signal 2008-03-13 19:32:31 -04:00
rt2500pci.c rt2x00: Fix quality/activity led handling 2008-05-01 17:38:39 -04:00
rt2500pci.h rt2x00: Rename dscape -> mac80211 2008-02-29 15:37:23 -05:00
rt2500usb.c rt2x00: Fix unbalanced mutex locking 2008-06-25 10:56:16 -04:00
rt2500usb.h rt2x00: Rename dscape -> mac80211 2008-02-29 15:37:23 -05:00