[PATCH] b43: Mask out unwanted bits of RX slot address

Rafał Miłecki zajec5 at gmail.com
Sat Aug 13 18:13:40 EDT 2011


W dniu 12 sierpnia 2011 12:15 użytkownik David Woodhouse
<dwmw2 at infradead.org> napisał:
> On some 64-bit DMA engines (my BCM4331, at least) with a ring buffer
> that is not aligned to 8KiB, we often see bit 12 spuriously being set in
> the B43_DMA64_RXSTATUS register. This will happen the first time the
> ring fills and loops back to zero:
>
> [35755.186080] Read RXSTATUS 3f0 (makes offs 3f0, divided by 10 gives slot 3f
> [35755.288366] Read RXSTATUS 1000 (makes offs 1000, divided by 10 gives slot 100
> [35755.291007] ------------[ cut here ]------------
> [35755.291041] WARNING: at drivers/net/wireless/b43/dma.c:1700 b43_dma_rx+0x5e/0x2df [b43]()
>  ...
> [35766.745374] b43-phy41 debug: DMA RX: Dropping poisoned buffer.

Interesting... below is the dump from ndiswrapper on BCM4331:

R 4 1431.714843 2 0xb0600230 0x10000fb0 0x0 0
R 4 1431.740035 2 0xb0600230 0x10000fc0 0x0 0
R 4 1431.740050 2 0xb0600230 0x10000fc0 0x0 0
R 4 1431.850216 2 0xb0600230 0x10000fd0 0x0 0
R 4 1431.850229 2 0xb0600230 0x10000fd0 0x0 0
R 4 1431.882151 2 0xb0600230 0x10000fe0 0x0 0
R 4 1431.882164 2 0xb0600230 0x10000fe0 0x0 0
R 4 1431.885822 2 0xb0600230 0x10000ff0 0x0 0
R 4 1431.885835 2 0xb0600230 0x10000ff0 0x0 0
R 4 1431.896775 2 0xb0600230 0x10000000 0x0 0
R 4 1431.896790 2 0xb0600230 0x10000000 0x0 0
R 4 1431.915842 2 0xb0600230 0x10000010 0x0 0
R 4 1431.915857 2 0xb0600230 0x10000010 0x0 0
R 4 1431.917399 2 0xb0600230 0x10000020 0x0 0
R 4 1431.917413 2 0xb0600230 0x10000020 0x0 0

Broadcom uses bigger ring and they don't suffer from 0x1000 being ever
set. I've filled the ring few times, 0x1000 was never set on going
back to slot 0.

-- 
Rafał



More information about the b43-dev mailing list