We found a serious bug in driver b43 in the past 2 days.
The problem is that the number of RX DMA slots (64) is too small for high
throughput on slow systems. After increasing the number, I found that doing a
‘zypper up’ used 109 slots. When the number used is greater than the number
available, the firmware crashes, and the device goes dead.
A patch to increase then number of slots to 256 is being submitted. It will be
backported to all stable kernels, and thus will be available for openSUSE 12.2
and 12.3. It will also be available in the compat-wireless package.
If you generate your own kernel, you can implement this change by editing file
drivers/net/wireless/b43/dma.h, find the line that defines B43_RXRING_SLOTS and
change the value on that line from 64 to 256.
Thanks for reporting this Larry. It explains some of the recent threads that I’ve read lately with users who are affected by this. Interestingly, I don’t appear to be affected by it - does it only impact on particular chipsets using the b43 driver? I’m using this I’m glad that there is a fix for it.
On 02/17/2013 09:56 PM, deano ferrari wrote:
> Thanks for reporting this Larry. It explains some of the recent threads
> that I’ve read lately with users who are affected by this.
> Interestingly, I don’t appear to be affected by it - does it only impact
> on particular chipsets using the b43 driver? I’m using this I’m glad
> that there is a fix for it.
It is more a processor power issue, and should affect all Broadcom chips. I
never saw it on my dual-core laptop. The diagnosis was made on a Linksys WRT54G
running openWRT. I confirmed the diagnosis on an HP Mini 110 netbook. Both
systems have only a single, relatively slow, processor.
Thanks for sharing, Larry. This may be the issue with my son’s netbook. Sometimes networking dies when he’s trying to update. Am I correct in assuming that this could be his problem? Networking stops during updating, son says there’s nothing he can do, but reboot and try again.
On 02/18/2013 04:16 AM, Knurpht wrote:
>
> Thanks for sharing, Larry. This may be the issue with my son’s netbook.
> Sometimes networking dies when he’s trying to update. Am I correct in
> assuming that this could be his problem? Networking stops during
> updating, son says there’s nothing he can do, but reboot and try again.
Yes. Updating with ‘zypper up’ led to my biggest usage of the RX DMA slots,
which was 109 slots, which would certainly have crashed the device when using
the unmodified kernel with only 64 slots available.
The “final” fix is under discussion. I suspect that we will do it in two steps.
The first will change the number of slots from 64 to 128. As that is still quite
close to the number I have seen in use, there will be a second change to detect
the condition and reset the device. Some packets will get lost, but the system
will recover.
The first simple patch will be backported to stable, thus it will automatically
be included in the kernels in 12.3 and 12.2. It will require a manual step for
12.1. The second one would likely first appear in kernel 3.10, and in 13.1.