The wireshark experiment I ran earlier is worth considering again.
 Wireshark
saw block 110413 sent, but the receive tasklet saw a stale block, 107223.
In the data file, block 110413 appears where block 110412 should be in
addition
to appearing in its proper spot.  The receive tasklet saw data for block
110412, so the data was good at that point.  Next, a tasklet sees stale
data.

Let's suppose the hardware failed to increment RXDP or saw the block as self
linked due to some caching issue and so reset RXDP to itself.  The hardware
overwrites block 110412 with data for 110413.  That still doesn't explain
how
a tasklet next sees stale data, since it checks RXDP to make sure it
doesn't look at blocks the hardware may be using.

So one possibility is that the value if RXDP as seen by the receive tasklet
does not match what the hardware believes.  Maybe the value is incremented
non-atomically and the tasklet sees an intermediate state or the register
value is wrong for an instant.  I wonder what the tasklet does in this case.
Maybe it loops over the entire queue until it gets to the self-linked end.

I think I should run a similar experiment and have the receive tasklet
dump information about the receive buffers and RXDP if it ever sees a block
that's not within 500 blocks of what it expects to see.

bob

====================

Jun  4 14:40:35 ugg kernel: [238080.728324] ATH 0 block 110410 110411
Jun  4 14:40:35 ugg kernel: [238080.728376] MACI 0 block 110410 110411
Jun  4 14:40:35 ugg kernel: [238080.728453] MACO 0 block 110410 110411
Jun  4 14:40:35 ugg kernel: [238080.728817] ATH 0 block 110412 0
Jun  4 14:40:35 ugg kernel: [238080.728875] MACI 0 block 110412 0
Jun  4 14:40:35 ugg kernel: [238080.728978] MACO 0 block 110412 0
Jun  4 14:40:35 ugg kernel: [238080.730060] ATH 0 block 107223 0
Jun  4 14:40:35 ugg kernel: [238080.730120] MACI 0 block 107223 0

No MACO is printed, so the block 107223 skb was dropped.

Jun  4 14:40:35 ugg kernel: [238080.730962] ATH 0 block 110415 0
Jun  4 14:40:35 ugg kernel: [238080.731022] MACI 0 block 110415 0
Jun  4 14:40:35 ugg kernel: [238080.731105] MACO 0 block 110415 0

Later, block 110413/110414 is retransmitted.

Jun  4 14:40:35 ugg kernel: [238080.765530] ATH 0 block 110458 110459
Jun  4 14:40:35 ugg kernel: [238080.765591] MACI 0 block 110458 110459
Jun  4 14:40:35 ugg kernel: [238080.765694] MACO 0 block 110458 110459
Jun  4 14:40:35 ugg kernel: [238080.767955] ATH 0 block 110413 110414
Jun  4 14:40:35 ugg kernel: [238080.768045] MACI 0 block 110413 110414
Jun  4 14:40:35 ugg kernel: [238080.768129] MACO 0 block 110413 110414
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to