Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 73454
b: refs/heads/master
c: a19d12d
h: refs/heads/master
v: v3
  • Loading branch information
Stefano Brivio authored and Jeff Garzik committed Nov 10, 2007
1 parent f6721cf commit 59e46f1
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2817ef1a5d9010873692f8353f6320ebecf9b837
refs/heads/master: a19d12d742903c745890c1374d64092595571e40
17 changes: 10 additions & 7 deletions trunk/drivers/net/wireless/b43/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2985,6 +2985,16 @@ static void b43_wireless_core_stop(struct b43_wldev *dev)

if (b43_status(dev) < B43_STAT_STARTED)
return;

/* Disable and sync interrupts. We must do this before than
* setting the status to INITIALIZED, as the interrupt handler
* won't care about IRQs then. */
spin_lock_irqsave(&wl->irq_lock, flags);
dev->irq_savedstate = b43_interrupt_disable(dev, B43_IRQ_ALL);
b43_read32(dev, B43_MMIO_GEN_IRQ_MASK); /* flush */
spin_unlock_irqrestore(&wl->irq_lock, flags);
b43_synchronize_irq(dev);

b43_set_status(dev, B43_STAT_INITIALIZED);

mutex_unlock(&wl->mutex);
Expand All @@ -2995,13 +3005,6 @@ static void b43_wireless_core_stop(struct b43_wldev *dev)

ieee80211_stop_queues(wl->hw); //FIXME this could cause a deadlock, as mac80211 seems buggy.

/* Disable and sync interrupts. */
spin_lock_irqsave(&wl->irq_lock, flags);
dev->irq_savedstate = b43_interrupt_disable(dev, B43_IRQ_ALL);
b43_read32(dev, B43_MMIO_GEN_IRQ_MASK); /* flush */
spin_unlock_irqrestore(&wl->irq_lock, flags);
b43_synchronize_irq(dev);

b43_mac_suspend(dev);
free_irq(dev->dev->irq, dev);
b43dbg(wl, "Wireless interface stopped\n");
Expand Down

0 comments on commit 59e46f1

Please sign in to comment.