Finally I was able to replace the b43 driver with a native one from Broadcom. It took a while to get it right but the reward is appealing: my signal quality has dramatically improved since then!
Here were the steps that I took, it look rather similar to this guide (in fact I followed his instructions!): http://djkaos.wordpress.com/2008/10/25/installing-broadcom-80211-linux-sta-driver/
1) Get the stock kernel header: http://mirror-fpt-telecom.fpt.net/slackware/slackware-12.2/slackware/k/kernel-source-220.127.116.11_smp-noarch-1.tgz
You can get it via slackpkg install though.
2) Creat a directory with any name (Broadcom for example). Depending on your system download 32 or 64 bit package
from http://www.broadcom.com/support/802.11/linux_sta.php to the newly-created dir.
3) Go to a terminal to the dir with package.
4) tar -xvzf hybrid-portsrc-.tar.gz
Replace version with one you have
5) make -C /lib/modules/`uname -r`/build M=`pwd`
if There were no errors
6) Unload Modules from memory
rmmod ndiswrapper b43 ssb bcm43xx b43legacy
7) For WPA
8)Check if Compiled Module is working
Now Probably a new interface will be there for wireless (wlan0 or eth-1)
To check it run
Mine’s on eth1, not wlan0. This is important to know though.
B) Getting it to work with Wicd
I couldn’t get my wifi to work with Wicd in my first attempt because Wicd didn’t detect the connection. Obviously I needed to take one further step of changing the wireless interface from the default wlan0 to eth1 according to the scanning result above. Go to Wicd’s Preferences and change yours.
C) Getting it to work at boot:
1)cp wl.ko /lib/modules/18.104.22.168-smp/kernel/net/wireless/
5)Add following Lines to /etc/rc.local (in openSuse /etc/rc/rc.d/boot.local)
6)Blacklist the b43 module family:
Add the foolowing Lines to /etc/modprobe.d/blacklist