diff options
author | Michael Buesch <mb@bu3sch.de> | 2009-09-04 16:51:29 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-09-08 16:31:06 -0400 |
commit | 36dbd9548e92268127b0c31b0e121e63e9207108 (patch) | |
tree | 41d95c5dd824ea43c5f0055bd790b64d7ba8a33a /drivers/net/wireless/b43/dma.c | |
parent | b275f28535fc774325bb8ad5f664e6c44a8fbc9b (diff) |
b43: Use a threaded IRQ handler
Use a threaded IRQ handler to allow locking the mutex and
sleeping while executing an interrupt.
This removes usage of the irq_lock spinlock, but introduces
a new hardirq_lock, which is _only_ used for the PCI/SSB lowlevel
hard-irq handler. Sleeping busses (SDIO) will use mutex instead.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/b43/dma.c')
-rw-r--r-- | drivers/net/wireless/b43/dma.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index 289aaf6dfe79..25ced8bdec8f 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
@@ -1387,7 +1387,6 @@ out_unlock: | |||
1387 | return err; | 1387 | return err; |
1388 | } | 1388 | } |
1389 | 1389 | ||
1390 | /* Called with IRQs disabled. */ | ||
1391 | void b43_dma_handle_txstatus(struct b43_wldev *dev, | 1390 | void b43_dma_handle_txstatus(struct b43_wldev *dev, |
1392 | const struct b43_txstatus *status) | 1391 | const struct b43_txstatus *status) |
1393 | { | 1392 | { |
@@ -1402,7 +1401,7 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev, | |||
1402 | if (unlikely(!ring)) | 1401 | if (unlikely(!ring)) |
1403 | return; | 1402 | return; |
1404 | 1403 | ||
1405 | spin_lock(&ring->lock); /* IRQs are already disabled. */ | 1404 | spin_lock_irq(&ring->lock); |
1406 | 1405 | ||
1407 | B43_WARN_ON(!ring->tx); | 1406 | B43_WARN_ON(!ring->tx); |
1408 | ops = ring->ops; | 1407 | ops = ring->ops; |
@@ -1463,7 +1462,7 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev, | |||
1463 | } | 1462 | } |
1464 | } | 1463 | } |
1465 | 1464 | ||
1466 | spin_unlock(&ring->lock); | 1465 | spin_unlock_irq(&ring->lock); |
1467 | } | 1466 | } |
1468 | 1467 | ||
1469 | void b43_dma_get_tx_stats(struct b43_wldev *dev, | 1468 | void b43_dma_get_tx_stats(struct b43_wldev *dev, |