diff options
author | Michael Buesch <mb@bu3sch.de> | 2009-09-11 17:04:04 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-09-23 11:35:44 -0400 |
commit | 176e9f6a4cf4b1bf66d18243ede0938a35c81541 (patch) | |
tree | 6cf1f0afdafb61e329b5d74426a83eb4ac3ca744 /drivers/net/wireless | |
parent | a8696c800b8154e27b359866f7b837079cdb513a (diff) |
b43: Fix IRQ sync for SDIO
synchronize_irq is meaningless for SDIO. sdio_release_irq will
sync the IRQ thread for us.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/b43/main.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 5b0aeff01dbf..7d22dadfd890 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -3854,10 +3854,15 @@ redo: | |||
3854 | b43_read32(dev, B43_MMIO_GEN_IRQ_MASK); /* Flush */ | 3854 | b43_read32(dev, B43_MMIO_GEN_IRQ_MASK); /* Flush */ |
3855 | spin_unlock_irq(&wl->hardirq_lock); | 3855 | spin_unlock_irq(&wl->hardirq_lock); |
3856 | } | 3856 | } |
3857 | /* Synchronize the interrupt handlers. Unlock to avoid deadlocks. */ | 3857 | /* Synchronize and free the interrupt handlers. Unlock to avoid deadlocks. */ |
3858 | orig_dev = dev; | 3858 | orig_dev = dev; |
3859 | mutex_unlock(&wl->mutex); | 3859 | mutex_unlock(&wl->mutex); |
3860 | synchronize_irq(dev->dev->irq); | 3860 | if (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) { |
3861 | b43_sdio_free_irq(dev); | ||
3862 | } else { | ||
3863 | synchronize_irq(dev->dev->irq); | ||
3864 | free_irq(dev->dev->irq, dev); | ||
3865 | } | ||
3861 | mutex_lock(&wl->mutex); | 3866 | mutex_lock(&wl->mutex); |
3862 | dev = wl->current_dev; | 3867 | dev = wl->current_dev; |
3863 | if (!dev) | 3868 | if (!dev) |
@@ -3874,10 +3879,6 @@ redo: | |||
3874 | dev_kfree_skb(skb_dequeue(&wl->tx_queue)); | 3879 | dev_kfree_skb(skb_dequeue(&wl->tx_queue)); |
3875 | 3880 | ||
3876 | b43_mac_suspend(dev); | 3881 | b43_mac_suspend(dev); |
3877 | if (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) | ||
3878 | b43_sdio_free_irq(dev); | ||
3879 | else | ||
3880 | free_irq(dev->dev->irq, dev); | ||
3881 | b43_leds_exit(dev); | 3882 | b43_leds_exit(dev); |
3882 | b43dbg(wl, "Wireless interface stopped\n"); | 3883 | b43dbg(wl, "Wireless interface stopped\n"); |
3883 | 3884 | ||