[PATCH] b43: A fix for DMA transmission sequence errors

Rafał Miłecki zajec5 at gmail.com
Sat Mar 23 13:26:51 EDT 2013


2013/3/23 Chris Vine <chris at cvine.freeserve.co.uk>:
> On Sat, 23 Mar 2013 11:35:17 +0100
> Michael Büsch <m at bues.ch> wrote:
>> On Sat, 23 Mar 2013 00:27:30 +0100
>> Rafał Miłecki <zajec5 at gmail.com> wrote:
>>
>> > Today I've plugged my 14e4:4315 and (unfortunately?) it's working
>> > pretty well. I hoped to reproduce some problems but failed to do
>> > so. I was transmitting for an hour with average speed 11MiB/s and
>> > didn't notice any DMA issues.
>> >
>> > I was using iperf with interval of 60 seconds and only 3 results
>> > showed some problems (8.5MiB/s, 2.5MiB/s, 4.5MiB/s). No
>> > disconnections however and no DMA errors. I just got "Group
>> > rekeying completed..." in wpa_supplicant.
>> >
>> > So as I can't reproduce this, I can't find any other fix for this
>> > issue, and there's no reason to stop this workaround. I'll just
>> > apply it and test over weekend to check for any regressions, but
>> > they are highly unlikely.
>>
>> I don't really believe in this being a firmware bug.
>>
>> Some b43 DMA engines (all?) have some alignment and
>> page-boundary-crossing constraints. I would rather guess that on some
>> kernels with some options turned on, alignment and/or boundary
>> constraints are violated every now and then. (and thus the packet
>> never reaches the firmware).
>>
>> I don't remember the details, though. Too long since I worked on that.
>> But a few sanity checks could probably be added to the code to check
>> this hypothesis.
>>
>> Does the failing kernel/machine have any special things w.r.t. memory?
>> Like iommu, hugepages, whetever...
>
> For what it is worth, this happens to me on both home compiled and
> distributor kernels (ubuntu and slackware): in fact, any 32-bit kernel
> that I have tried it on.
>
> And it does not happen with the wl driver on the same kernels.  So if
> this is right, the wl driver must be doing something that the b43 driver
> does not with respect to alignment: and you might well be right about
> that.

Could you try changing
B43_DMA32_RINGMEMSIZE
from 4096 to 8192 in dma.h?

-- 
Rafał



More information about the b43-dev mailing list