--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
-@@ -3962,8 +3962,13 @@ redo:
- if (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) {
+@@ -3970,8 +3970,13 @@
+ if (dev->sdev->bus->bustype == SSB_BUSTYPE_SDIO) {
b43_sdio_free_irq(dev);
} else {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ compat_synchronize_threaded_irq(&dev->irq_compat);
+ compat_free_threaded_irq(&dev->irq_compat);
+#else
- synchronize_irq(dev->dev->irq);
- free_irq(dev->dev->irq, dev);
+ synchronize_irq(dev->sdev->irq);
+ free_irq(dev->sdev->irq, dev);
+#endif
}
mutex_lock(&wl->mutex);
dev = wl->current_dev;
-@@ -4003,9 +4008,17 @@ static int b43_wireless_core_start(struc
+@@ -4011,9 +4016,17 @@
goto out;
}
} else {
+ b43_interrupt_thread_handler,
+ IRQF_SHARED, KBUILD_MODNAME, dev);
+#else
- err = request_threaded_irq(dev->dev->irq, b43_interrupt_handler,
+ err = request_threaded_irq(dev->sdev->irq, b43_interrupt_handler,
b43_interrupt_thread_handler,
IRQF_SHARED, KBUILD_MODNAME, dev);
+#endif
if (err) {
- b43err(dev->wl, "Cannot request IRQ-%d\n", dev->dev->irq);
- goto out;
-@@ -4719,6 +4732,10 @@ static int b43_setup_bands(struct b43_wl
+ b43err(dev->wl, "Cannot request IRQ-%d\n",
+ dev->sdev->irq);
+@@ -4728,6 +4741,10 @@
static void b43_wireless_core_detach(struct b43_wldev *dev)
{