* [PATCH] b43: Fix IRQ sync for SDIO
@ 2009-09-11 21:04 Michael Buesch
0 siblings, 0 replies; only message in thread
From: Michael Buesch @ 2009-09-11 21:04 UTC (permalink / raw)
To: John W. Linville; +Cc: Broadcom Wireless, linux-wireless, Albert Herranz
synchronize_irq is meaningless for SDIO. sdio_release_irq will
sync the IRQ thread for us.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
---
Index: wireless-testing/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/main.c 2009-09-11 22:50:17.000000000 +0200
+++ wireless-testing/drivers/net/wireless/b43/main.c 2009-09-11 22:52:25.000000000 +0200
@@ -3854,10 +3854,15 @@ redo:
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)
@@ -3874,10 +3879,6 @@ redo:
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");
--
Greetings, Michael.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-09-11 21:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-11 21:04 [PATCH] b43: Fix IRQ sync for SDIO Michael Buesch
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.