aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2008-04-25 15:10:54 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-07 15:02:20 -0400
commite40ac414c0130358f9eb068f4993a37f013621be (patch)
tree7b48b167b7b58891e871e297bee5670649faf7bd /drivers/net
parentf93d65feb3dc48fe5e285fa5a35dacea3601835f (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.h3
-rw-r--r--drivers/net/wireless/b43/main.c13
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)