I've got a BCM4313 in this Lenovo G580, and through various things I've got two drivers installed. wl and bcma.

The problem is bcma is terrible, the connection is slow and frequently drops. Using wl I have a great connection. However, the drivers load randomly, so sometimes bcma loads at boot, sometimes bcma, and I have no idea what I can do to stop bcma loading. I've tried adding it to the blacklist in /etc/modprobe.d/, but it's not making any difference.

Can anyone help either a) remove bcma (the driver that loads for that module is bcma-pci-bridge), or b) make sure wl is the one that loads.

Here is my lspci -vv :

Code:
02:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)
   Subsystem: Broadcom Corporation Device 0587
   Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
   Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
   Latency: 0, Cache Line Size: 64 bytes
   Interrupt: pin A routed to IRQ 17
   Region 0: Memory at f0500000 (64-bit, non-prefetchable) [size=16K]
   Capabilities: <access denied>
   Kernel driver in use: bcma-pci-bridge
   Kernel modules: wl, bcma