diff options
author | Michael Buesch <mb@bu3sch.de> | 2008-04-25 15:10:54 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-05-07 15:02:20 -0400 |
commit | e40ac414c0130358f9eb068f4993a37f013621be (patch) | |
tree | 7b48b167b7b58891e871e297bee5670649faf7bd /drivers/net | |
parent | f93d65feb3dc48fe5e285fa5a35dacea3601835f (diff) |
b43: Don't disable IRQs in mac_suspend
This patch removes the IRQ-disable from mac_suspend.
The main advantage of this is to get rid of the IRQ-sync call in mac_suspend.
We need to remove the MAC suspend bit from the IRQ service mask, as otherwise
the IRQ handler would race with us.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/b43/b43.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/b43/main.c | 13 |
2 files changed, 1 insertions, 15 deletions
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h index 37783cdd301a..7d034df250bd 100644 --- a/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h | |||
@@ -410,8 +410,7 @@ enum { | |||
410 | #define B43_IRQ_TIMEOUT 0x80000000 | 410 | #define B43_IRQ_TIMEOUT 0x80000000 |
411 | 411 | ||
412 | #define B43_IRQ_ALL 0xFFFFFFFF | 412 | #define B43_IRQ_ALL 0xFFFFFFFF |
413 | #define B43_IRQ_MASKTEMPLATE (B43_IRQ_MAC_SUSPENDED | \ | 413 | #define B43_IRQ_MASKTEMPLATE (B43_IRQ_TBTT_INDI | \ |
414 | B43_IRQ_TBTT_INDI | \ | ||
415 | B43_IRQ_ATIM_END | \ | 414 | B43_IRQ_ATIM_END | \ |
416 | B43_IRQ_PMQ | \ | 415 | B43_IRQ_PMQ | \ |
417 | B43_IRQ_MAC_TXERR | \ | 416 | B43_IRQ_MAC_TXERR | \ |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index e3d8555d4a99..cf546e367d3e 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -2322,11 +2322,6 @@ void b43_mac_enable(struct b43_wldev *dev) | |||
2322 | b43_read32(dev, B43_MMIO_MACCTL); | 2322 | b43_read32(dev, B43_MMIO_MACCTL); |
2323 | b43_read32(dev, B43_MMIO_GEN_IRQ_REASON); | 2323 | b43_read32(dev, B43_MMIO_GEN_IRQ_REASON); |
2324 | b43_power_saving_ctl_bits(dev, 0); | 2324 | b43_power_saving_ctl_bits(dev, 0); |
2325 | |||
2326 | /* Re-enable IRQs. */ | ||
2327 | spin_lock_irq(&dev->wl->irq_lock); | ||
2328 | b43_interrupt_enable(dev, dev->irq_savedstate); | ||
2329 | spin_unlock_irq(&dev->wl->irq_lock); | ||
2330 | } | 2325 | } |
2331 | } | 2326 | } |
2332 | 2327 | ||
@@ -2340,14 +2335,6 @@ void b43_mac_suspend(struct b43_wldev *dev) | |||
2340 | B43_WARN_ON(dev->mac_suspended < 0); | 2335 | B43_WARN_ON(dev->mac_suspended < 0); |
2341 | 2336 | ||
2342 | if (dev->mac_suspended == 0) { | 2337 | if (dev->mac_suspended == 0) { |
2343 | /* Mask IRQs before suspending MAC. Otherwise | ||
2344 | * the MAC stays busy and won't suspend. */ | ||
2345 | spin_lock_irq(&dev->wl->irq_lock); | ||
2346 | tmp = b43_interrupt_disable(dev, B43_IRQ_ALL); | ||
2347 | spin_unlock_irq(&dev->wl->irq_lock); | ||
2348 | b43_synchronize_irq(dev); | ||
2349 | dev->irq_savedstate = tmp; | ||
2350 | |||
2351 | b43_power_saving_ctl_bits(dev, B43_PS_AWAKE); | 2338 | b43_power_saving_ctl_bits(dev, B43_PS_AWAKE); |
2352 | b43_write32(dev, B43_MMIO_MACCTL, | 2339 | b43_write32(dev, B43_MMIO_MACCTL, |
2353 | b43_read32(dev, B43_MMIO_MACCTL) | 2340 | b43_read32(dev, B43_MMIO_MACCTL) |