aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/b43/main.c')
-rw-r--r--drivers/net/wireless/b43/main.c13
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