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/pio.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/pio.c')
-rw-r--r-- | drivers/net/wireless/b43/pio.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/net/wireless/b43/pio.c b/drivers/net/wireless/b43/pio.c index 3fd653c78b10..ce6f36eb88ca 100644 --- a/drivers/net/wireless/b43/pio.c +++ b/drivers/net/wireless/b43/pio.c | |||
@@ -570,7 +570,6 @@ out_unlock: | |||
570 | return err; | 570 | return err; |
571 | } | 571 | } |
572 | 572 | ||
573 | /* Called with IRQs disabled. */ | ||
574 | void b43_pio_handle_txstatus(struct b43_wldev *dev, | 573 | void b43_pio_handle_txstatus(struct b43_wldev *dev, |
575 | const struct b43_txstatus *status) | 574 | const struct b43_txstatus *status) |
576 | { | 575 | { |
@@ -584,7 +583,7 @@ void b43_pio_handle_txstatus(struct b43_wldev *dev, | |||
584 | return; | 583 | return; |
585 | B43_WARN_ON(!pack); | 584 | B43_WARN_ON(!pack); |
586 | 585 | ||
587 | spin_lock(&q->lock); /* IRQs are already disabled. */ | 586 | spin_lock_irq(&q->lock); |
588 | 587 | ||
589 | info = IEEE80211_SKB_CB(pack->skb); | 588 | info = IEEE80211_SKB_CB(pack->skb); |
590 | 589 | ||
@@ -604,7 +603,7 @@ void b43_pio_handle_txstatus(struct b43_wldev *dev, | |||
604 | q->stopped = 0; | 603 | q->stopped = 0; |
605 | } | 604 | } |
606 | 605 | ||
607 | spin_unlock(&q->lock); | 606 | spin_unlock_irq(&q->lock); |
608 | } | 607 | } |
609 | 608 | ||
610 | void b43_pio_get_tx_stats(struct b43_wldev *dev, | 609 | void b43_pio_get_tx_stats(struct b43_wldev *dev, |