b43 and BCM4312 802.11a/b/g slow combination?

Hi,

On the b43 website I found support for BCM4312 802.11a/b/g:

PCI-ID State Chip Modes PHY version Driver
14e4:4312 supported (802.11g only) BCM4312 a/b/g G b43

My laptop has opensuse 11.2:

uname -a
Linux a3800 2.6.31.12-0.1-desktop #1 SMP PREEMPT 2010-01-27 08:20:11 +0100 x86_64 x86_64 x86_64 GNU/Linux

lspci -vvnn
30:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11a/b/g [14e4:4312] (rev 02)
        Subsystem: Hewlett-Packard Company Broadcom 802.11a/b/g WLAN [103c:1371]

b43 does work, but the rate is 1~5Mbit/s and thats way to slow… On opensuse 10.3 with wl module it was a solid 48~54Mbit/s
Changing the rate with “iwconfig wlan0 rate 54M” does not speed things up. (iwconfig shows 54M after the command, but up/downloads are not faster)

Loaded modules:

lsmod | grep b43
b43                   175096  0
mac80211              257120  1 b43
cfg80211              123296  2 b43,mac80211
ssb                    63672  1 b43
pcmcia                 47292  2 b43,ssb
pcmcia_core            50084  5 b43,ssb,yenta_socket,pcmcia,rsrc_nonstatic

dmesg
   26.920232] BIOS EDD facility v0.16 2004-Jun-25, 1 devices found                                                                                          
   28.138781] Bluetooth: L2CAP ver 2.13                                                                                                                     
   28.138789] Bluetooth: L2CAP socket layer initialized                                                                                                     
   28.691436] Bluetooth: BNEP (Ethernet Emulation) ver 1.3                                                                                                  
   28.691446] Bluetooth: BNEP filters: protocol multicast                                                                                                   
   28.766578] Bridge firewalling registered                                                                                                                 
   28.817647] Bluetooth: SCO (Voice Link) ver 0.6                                                                                                           
   28.817657] Bluetooth: SCO socket layer initialized                                                                                                       
   28.940066] Bluetooth: RFCOMM TTY layer initialized                                                                                                       
   28.940079] Bluetooth: RFCOMM socket layer initialized                                                                                                    
   28.940085] Bluetooth: RFCOMM ver 1.11                                                                                                                    
   32.726272] tg3 0000:10:00.0: PME# disabled                                                                                                               
   32.726558]   alloc irq_desc for 27 on node 0                                                                                                             
   32.726565]   alloc kstat_irqs on node 0                                                                                                                  
   32.726596] tg3 0000:10:00.0: irq 27 for MSI/MSI-X                                                                                                        
   32.781579] ADDRCONF(NETDEV_UP): eth0: link is not ready                                                                                                  
   32.803078] b43 ssb0:0: firmware: requesting b43/ucode13.fw                                                                                               
   32.881423] b43 ssb0:0: firmware: requesting b43/b0g0initvals13.fw                                                                                        
   33.054049] b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10)                                                                             
   33.097566] Registered led device: b43-phy0::tx                                                                                                           
   33.098430] Registered led device: b43-phy0::rx                                                                                                           
   33.098986] Registered led device: b43-phy0::radio                                                                                                        
   33.109753] ADDRCONF(NETDEV_UP): wlan0: link is not ready                                                                                                 
   33.172619] NET: Registered protocol family 17                                                                                                            
   49.797545] wlan0: authenticate with AP 00:14:6c:9a:b6:c4                                                                                                 
   49.799121] wlan0: authenticated                                                                                                                          
   49.799128] wlan0: associate with AP 00:14:6c:9a:b6:c4                                                                                                    
   49.802435] wlan0: RX AssocResp from 00:14:6c:9a:b6:c4 (capab=0x411 status=0 aid=1)                                                                       
   49.802440] wlan0: associated                                                                                                                             
   49.803700] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
   60.772030] wlan0: no IPv6 routers present
   61.424081] RPC: Registered udp transport module.
   61.424097] RPC: Registered tcp transport module.
   61.438982] Slow work thread pool: Starting up
   61.439309] Slow work thread pool: Ready
   61.439377] FS-Cache: Loaded
   61.462107] FS-Cache: Netfs 'nfs' registered for caching

What can I do to speed things up?
I tried the Broadcom wl module, but it was very unstable (on/off all the time) and slow speed.
I tried ndiswrapper, it has stable connection and proper 54Mbit/s speed but it makes my system freeze at boot 2 out of 3 times…

Any help is much appreciated!

On 03/21/2010 09:36 AM, Fire11 wrote:
>
> What can I do to speed things up?
> I tried the Broadcom wl module, but it was very unstable (on/off all
> the time) and slow speed.
> I tried ndiswrapper, it has stable connection and proper 54Mbit/s speed
> but it makes my system freeze at boot 2 out of 3 times…
>
> Any help is much appreciated!

The ndiswrapper experience is typical. With it, you are letting a Windows driver
run unchecked in the inner-most ring of the computer. The freezes you see would
be “Blue Screens of Death” on Windows.

There is a patch that improves transmit performance of your device that is in
later kernels. It has not been backported to the 11.2 kernel as 2.6.31 is no
longer maintained as a “stable” kernel. To get the benefits of this patch,
please get the 2.6.33 kernel from the Factory repo, or the compat-wireless
package from Packman.

Thanks for the reply.

Installing a newer kernel into opensuse would not be so easy so I want to go for the compat-wireless package.

I do have the packman repository, but in yast I do not find the package?

does the broadcom-wl package from packman not work with your device?

Hi caf4926, yes and no.
The connection can be made but it is unstable.

I just tried compat-wireless patch but after that i was unable to logon in KDE4! :open_mouth:

Found the package at:
Index of /repositories/home:/broumbroum23/openSUSE_11.2_oss

On 03/21/2010 11:36 AM, Fire11 wrote:
>
> Hi caf4926, yes and no.
> The connection can be made but it is unstable.
>
> I just tried compat-wireless patch but after that i was unable to
> logon in KDE4! :open_mouth:
>
> Found the package at:
> ‘Index of /repositories/home:/broumbroum23/openSUSE_11.2_oss’
> (http://tinyurl.com/yzxwzm8)

I think you picked the wrong package. You need the one that matches your kernel
as shown by ‘uname -r’.

For the record, the BCM4312 802.11a/b/g device has the same b/g part as a
BCM4311. It works with b43 since 2.6.24. It is the BCM4312 802.11b/g that needs
wl or b43 from 2.6.32, or later. Confusing enough?

Also for the record my wireless is:

04:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g [14e4:4315] (rev 01)
Subsystem: Broadcom Corporation Device [14e4:04b5]
Kernel driver in use: wl

I tried the newer kernel and it works, but not as well as with the Packman broadcom-wl packages

broadcom-wl-5.60.48.36-7.pm.13.1.x86_64
broadcom-wl-kmp-default-5.60.48.36_2.6.31.12_0.1-7.pm.13.1.x86_64

Actually my wireless works better than my eth0

07:00.0 Ethernet controller [0200]: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express [14e4:1713] (rev 02)
Subsystem: Lenovo IdeaPad S10e [17aa:3a23]
Kernel driver in use: tg3

Well, it seems more easy to boot with kernel 2.6.33 than I thought it would be.

now booted with:

uname -r
2.6.33-6-desktop

I did not change anything else and it seems that there is no improvement in performance! :’(
I don’t know what to try next…

This is the repo I was using
Index of /repositories/Kernel:/HEAD/openSUSE_11.2

Hi caf4926,

I tried that repository kernel-2.6.33-34 but rolled back to 2.6.33-6-desktop from: Index of /factory/repo/oss

Earlier I mentioned no improvement with this kernel but I was wrong! The performance is 2~10x better:

  • download > 1,5~2,0 Mbyte/s (+/-15Mbit/s)
  • upload > 1.0~1,5 Mbyte/s (+/-11Mbit/s)

Hopefully it does not break any other functionality (3 modules are not loaded at boot)

Sticking to this kernel for now, thanks lwfinger and caf4926!