Please excuse the cross-posting but this thread started on openwrt-users but the findings are probably more relevant to the developers.
On Tue, 2008-10-21 at 17:46 +0200, Michael Buesch wrote: > > Lookup b43_interrupt_handler() and look for the "reason" variable. > Fairly straightforward, IMO. OK. I've managed to tool up a b43.ko with a printk and this is what I see, before I even pump anything through the wireless link (i.e. up in Master mode, and idle): b43_interrupt_handler: 0xc18a b43_interrupt_handler: 0x418e b43_interrupt_handler: 0xc18a b43_interrupt_handler: 0x418e b43_interrupt_handler: 0xc18a b43_interrupt_handler: 0x418e ... but looking at the IRQ reasons in b43.h I see a "hole". Let's take the first one for example: 0xc18a: 0xc000 = B43_IRQ_DMA | B43_IRQ_TIMER1 0x0100 = B43_IRQ_PIO_WORKAROUND 0x0080 = undefined 0x000a = B43_IRQ_BEACON_TX_OK | B43_IRQ_BEACON The next one: 0x418e: 0x4000 = B43_IRQ_TIMER1 0x0100 = B43_IRQ_PIO_WORKAROUND 0x0080 = undefined 0x000e = B43_IRQ_BEACON_TX_OK | B43_IRQ_TBTT_INDI | B43_IRQ_BEACON I wonder what 0x0080 is. So I tried masking off B43_IRQ_BEACON IRQs and sure no more "noise" but very very few reasons being logged at all, including none during normal tx/rx. Beacons must be in every interrupt. So let's just mask off the B43_IRQ_TX_OK interrupts and send some bulk data (which drives the softirq through the ceiling). The last packets through the router caused the following interrupts: b43_interrupt_handler: 0x458e b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0x458e b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0x458e b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0x458e b43_interrupt_handler: 0xc58a b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0xc58a b43_interrupt_handler: 0xc5ce b43_interrupt_handler: 0x458e b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0xc58a b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0xc5ca b43_interrupt_handler: 0x458e b43_interrupt_handler: 0xc58a b43_interrupt_handler: 0xc58a b43_interrupt_handler: 0xc58a Which are: 0x458e: B43_IRQ_TIMER1 | 0x400 (unknown) | B43_IRQ_PIO_WORKAROUND | 0x80 (unknown) | B43_IRQ_BEACON_TX_OK | B43_IRQ_TBTT_INDI | B43_IRQ_BEACON 0xc5ca: B43_IRQ_DMA | B43_IRQ_TIMER1 | 0x400 (unknown) | B43_IRQ_PIO_WORKAROUND | 0x80 (unknown) | B43_IRQ_PMQ | B43_IRQ_BEACON_TX_OK | B43_IRQ_BEACON 0xc58a: B43_IRQ_DMA | B43_IRQ_TIMER1 | 0x400 (unknown) | B43_IRQ_PIO_WORKAROUND | 0x80 (unknown) | B43_IRQ_BEACON_TX_OK | B43_IRQ_BEACON 0xc5ce: B43_IRQ_DMA | B43_IRQ_TIMER1 | 0x400 (unknown) | B43_IRQ_PIO_WORKAROUND | 0x80 (unknown) | B43_IRQ_PMQ | B43_IRQ_BEACON_TX_OK | B43_IRQ_TBTT_INDI | B43_IRQ_BEACON All packets had two unknown IRQ masks, 0x400 and 0x80. It's also interesting to note that with relation to the issue of the wireless interface all of a sudden stopping it's transmission of data after a certain amount of bulk, which a number of people have reported; it seems to correlate to a: b43-phy7 debug: Updated beacon template at 0x68 event. Is any of this useful? b.
signature.asc
Description: This is a digitally signed message part
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org http://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel