Skip to content

Commit

Permalink
b43: Fix IRQ sync for SDIO
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Michael Buesch authored and John W. Linville committed Sep 23, 2009
1 parent a8696c8 commit 176e9f6
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions drivers/net/wireless/b43/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3854,10 +3854,15 @@ static struct b43_wldev * b43_wireless_core_stop(struct b43_wldev *dev)
b43_read32(dev, B43_MMIO_GEN_IRQ_MASK); /* Flush */
spin_unlock_irq(&wl->hardirq_lock);
}
/* Synchronize the interrupt handlers. Unlock to avoid deadlocks. */
/* Synchronize and free the interrupt handlers. Unlock to avoid deadlocks. */
orig_dev = dev;
mutex_unlock(&wl->mutex);
synchronize_irq(dev->dev->irq);
if (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) {
b43_sdio_free_irq(dev);
} else {
synchronize_irq(dev->dev->irq);
free_irq(dev->dev->irq, dev);
}
mutex_lock(&wl->mutex);
dev = wl->current_dev;
if (!dev)
Expand All @@ -3874,10 +3879,6 @@ static struct b43_wldev * b43_wireless_core_stop(struct b43_wldev *dev)
dev_kfree_skb(skb_dequeue(&wl->tx_queue));

b43_mac_suspend(dev);
if (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO)
b43_sdio_free_irq(dev);
else
free_irq(dev->dev->irq, dev);
b43_leds_exit(dev);
b43dbg(wl, "Wireless interface stopped\n");

Expand Down

0 comments on commit 176e9f6

Please sign in to comment.