mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
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>
This commit is contained in:
parent
f93d65feb3
commit
e40ac414c0
2 changed files with 1 additions and 15 deletions
|
@ -410,8 +410,7 @@ enum {
|
||||||
#define B43_IRQ_TIMEOUT 0x80000000
|
#define B43_IRQ_TIMEOUT 0x80000000
|
||||||
|
|
||||||
#define B43_IRQ_ALL 0xFFFFFFFF
|
#define B43_IRQ_ALL 0xFFFFFFFF
|
||||||
#define B43_IRQ_MASKTEMPLATE (B43_IRQ_MAC_SUSPENDED | \
|
#define B43_IRQ_MASKTEMPLATE (B43_IRQ_TBTT_INDI | \
|
||||||
B43_IRQ_TBTT_INDI | \
|
|
||||||
B43_IRQ_ATIM_END | \
|
B43_IRQ_ATIM_END | \
|
||||||
B43_IRQ_PMQ | \
|
B43_IRQ_PMQ | \
|
||||||
B43_IRQ_MAC_TXERR | \
|
B43_IRQ_MAC_TXERR | \
|
||||||
|
|
|
@ -2322,11 +2322,6 @@ void b43_mac_enable(struct b43_wldev *dev)
|
||||||
b43_read32(dev, B43_MMIO_MACCTL);
|
b43_read32(dev, B43_MMIO_MACCTL);
|
||||||
b43_read32(dev, B43_MMIO_GEN_IRQ_REASON);
|
b43_read32(dev, B43_MMIO_GEN_IRQ_REASON);
|
||||||
b43_power_saving_ctl_bits(dev, 0);
|
b43_power_saving_ctl_bits(dev, 0);
|
||||||
|
|
||||||
/* Re-enable IRQs. */
|
|
||||||
spin_lock_irq(&dev->wl->irq_lock);
|
|
||||||
b43_interrupt_enable(dev, dev->irq_savedstate);
|
|
||||||
spin_unlock_irq(&dev->wl->irq_lock);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2340,14 +2335,6 @@ void b43_mac_suspend(struct b43_wldev *dev)
|
||||||
B43_WARN_ON(dev->mac_suspended < 0);
|
B43_WARN_ON(dev->mac_suspended < 0);
|
||||||
|
|
||||||
if (dev->mac_suspended == 0) {
|
if (dev->mac_suspended == 0) {
|
||||||
/* Mask IRQs before suspending MAC. Otherwise
|
|
||||||
* the MAC stays busy and won't suspend. */
|
|
||||||
spin_lock_irq(&dev->wl->irq_lock);
|
|
||||||
tmp = b43_interrupt_disable(dev, B43_IRQ_ALL);
|
|
||||||
spin_unlock_irq(&dev->wl->irq_lock);
|
|
||||||
b43_synchronize_irq(dev);
|
|
||||||
dev->irq_savedstate = tmp;
|
|
||||||
|
|
||||||
b43_power_saving_ctl_bits(dev, B43_PS_AWAKE);
|
b43_power_saving_ctl_bits(dev, B43_PS_AWAKE);
|
||||||
b43_write32(dev, B43_MMIO_MACCTL,
|
b43_write32(dev, B43_MMIO_MACCTL,
|
||||||
b43_read32(dev, B43_MMIO_MACCTL)
|
b43_read32(dev, B43_MMIO_MACCTL)
|
||||||
|
|
Loading…
Reference in a new issue