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.

Attachment: 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

Reply via email to