Build failures with the brcmfmac driver

Henry Ptasinski henryp at broadcom.com
Thu Sep 23 23:45:08 UTC 2010


On 09/23/2010 04:35 PM, Greg KH wrote:
> On Thu, Sep 23, 2010 at 04:18:47PM -0700, Greg KH wrote:
>> Are you all crazy to enable "treat warnings like errors"?

Yes. :-)

> Ok, I've removed that, and the other -W options from the makefiles and
> now at least it builds the .o files.
>
> But now I've duplicated the big issue with the way the code is
> structured:
> 	ERROR: "si_pmu_regcontrol" [drivers/staging/brcm80211/brcm80211.ko] undefined!
> 	ERROR: "bcmsdh_reg_read" [drivers/staging/brcm80211/brcm80211.ko] undefined!
> 	ERROR: "sb_iscoreup" [drivers/staging/brcm80211/brcm80211.ko] undefined!
> 	ERROR: "bcmsdh_intr_enable" [drivers/staging/brcm80211/brcm80211.ko] undefined!
> 	ERROR: "bcmsdh_cfg_write" [drivers/staging/brcm80211/brcm80211.ko] undefined!
> 	ERROR: "si_pci_down" [drivers/staging/brcm80211/brcm80211.ko] undefined!
> 	ERROR: "si_pci_fixcfg" [drivers/staging/brcm80211/brcm80211.ko] undefined!
>
> and so on.
>
> It turns out, you are linking .o files that are built with different -D
> options, into two different .ko objects right?

Right.

> Bad things happen as the code isn't really set up to do this properly.

Absolutely.

> So, for now, you should change the Kconfig file to only allow the
> selection of one of the kernel drivers at once.  Not the "real" fix, but
> it should be good enough for the moment.

I was just working on that.  See below for rough cut at new Kconfig. 
One issue I'm seeing: make oldconfig just blows through the choices.  Is 
there any way to get it to stop for user input?  Or is the choice only 
available when doing make menuconfig?  Other approaches to make the two 
exclusive?

> Unless you have a better idea?

Longer term, cleanout utils and anything that's left becomes a separate 
module that's only compiled once?  Other suggestions?

> Oh, ideally we will just get rid of the #define mess, but as you have 2
> drivers depending on two different set of options, it's not going to be
> a simple task unwinding it...

Nohee is working on cleaning out lots of the #ifdefs, and removing the 
duplicate files.

- Henry


diff --git a/drivers/staging/brcm80211/Kconfig 
b/drivers/staging/brcm80211/Kconfig
index ee321bd..57d2d1b 100644
--- a/drivers/staging/brcm80211/Kconfig
+++ b/drivers/staging/brcm80211/Kconfig
@@ -1,15 +1,33 @@
  menuconfig BRCM80211
-       tristate "Broadcom 802.11 WLAN driver for bcm43xx chips"
-       depends on PCI && WLAN
-       select WIRELESS_EXT
-       select WEXT_PRIV
-       default N
+       tristate "Broadcom IEEE802.11n WLAN drivers"
+       depends on WLAN
+
+choice
+       prompt "Broadcom IEEE802.11n driver style"
+       depends on BRCM80211
         help
-         If built as a module, it will be called brcm80211.ko.
+       Select the appropriate driver style from the list below.

  config BRCM80211_PCI
-       bool "Broadcom 802.11 WLAN NIC driver"
-       depends on BRCM80211
-       default y
+       bool "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
+       depends on PCI
+       depends on BRCM80211 && MAC80211
+       select FW_LOADER
+       ---help---
+         This module adds support for PCIe wireless adapters based on 
Broadcom
+         IEEE802.11n SoftMAC chipsets.  If you choose to build a 
module, it'll
+         be called brcm80211.ko.

-source "drivers/staging/brcm80211/brcmfmac/Kconfig"
+config BRCMFMAC
+       bool "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
+       depends on MMC
+       depends on BRCM80211 && CFG80211
+       select FW_LOADER
+       select WIRELESS_EXT
+       select WEXT_PRIV
+       ---help---
+         This module adds support for embedded wireless adapters based on
+         Broadcom IEEE802.11n FullMAC chipsets.  This driver uses the 
kernel's
+         wireless extensions subsystem.  If you choose to build a module,
+         it'll be called brcmfmac.ko.
+endchoice




More information about the devel mailing list