On Saturday 28 July 2007 05:36:04 Larry Finger wrote: > Michael, > > I was in the right area with my previous fix to the "irq 11: nobody cared" > message. I think for shared interrupts, skipping out if the status is not > BCM43xx_STAT_STARTED is too severe. I added a message printing out the status > whenever it skipped out, and found many thousands of interrupts with the > status equal to BCM43xx_STAT_INITIALIZED. The patch below makes the necessary > change and modifies a couple of asserts that depend on it. > > This patch has been tested on BCM4306 and BCM4318 with shared interrupts, > and BCM4311 without. > > Thanks, > > Larry > ---- > > > Index: wireless-mb/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c > =================================================================== > --- wireless-mb.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c > +++ wireless-mb/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c > @@ -1374,7 +1374,7 @@ static void bcm43xx_interrupt_tasklet(st > > spin_lock_irqsave(&dev->wl->irq_lock, flags); > > - assert(bcm43xx_status(dev) == BCM43xx_STAT_STARTED); > + assert(bcm43xx_status(dev) >= BCM43xx_STAT_INITIALIZED); > > reason = dev->irq_reason; > for (i = 0; i < ARRAY_SIZE(dma_reason); i++) { > @@ -1512,7 +1512,7 @@ static irqreturn_t bcm43xx_interrupt_han > > spin_lock(&dev->wl->irq_lock); > > - if (bcm43xx_status(dev) < BCM43xx_STAT_STARTED) > + if (bcm43xx_status(dev) < BCM43xx_STAT_INITIALIZED) > goto out; > reason = bcm43xx_read32(dev, BCM43xx_MMIO_GEN_IRQ_REASON); > if (reason == 0xffffffff) /* shared IRQ */ > @@ -1522,7 +1522,7 @@ static irqreturn_t bcm43xx_interrupt_han > if (!reason) > goto out; > > - assert(bcm43xx_status(dev) == BCM43xx_STAT_STARTED); > + assert(bcm43xx_status(dev) >= BCM43xx_STAT_INITIALIZED); > > dev->dma_reason[0] = bcm43xx_read32(dev, BCM43xx_MMIO_DMA0_REASON) > & 0x0001DC00; > > That's not the right bugfix. If the interface is not STAT_STARTED, it should _not_ generate IRQs. The bug is elsewhere in the init routines. Please find out which IRQ bits are generated for these spurious IRQs. -- Greetings Michael. - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html