Question

I have got CENTOS 6.3 installed. My machine is Dell Studio. I have the following wireless broadcom model.

[root@treasure hybrid_wl]# lspci | grep -i wireless
03:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)

I got the source code of this driver from http://www.broadcom.com/support/802.11/linux_sta.php.

My machine kernel is

[root@treasure hybrid_wl]# uname -r
2.6.32-358.18.1.el6.x86_64

While building the package from http://www.broadcom.com/support/802.11/linux_sta.php. I get the following error.

KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
make[1]: Entering directory `/usr/src/kernels/2.6.32-358.18.1.el6.x86_64'
CFG80211 API is prefered for this kernel version
Using CFG80211 API
  CC [M]  /home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.o
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:79: warning: ‘enum tx_power_setting’ declared inside parameter list
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:79: warning: its scope is only this definition or declaration, which is probably not what you want
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1092: warning: ‘enum tx_power_setting’ declared inside parameter list
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1092: error: parameter 2 (‘type’) has incomplete type
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_cfg80211_set_tx_power’:
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1103: error: ‘TX_POWER_AUTOMATIC’ undeclared (first use in this function)
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1103: error: (Each undeclared identifier is reported only once
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1103: error: for each function it appears in.)
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1105: error: ‘TX_POWER_LIMITED’ undeclared (first use in this function)
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1111: error: ‘TX_POWER_FIXED’ undeclared (first use in this function)
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: At top level:
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1594: warning: initialization from incompatible pointer type
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1596: warning: initialization from incompatible pointer type
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1597: warning: initialization from incompatible pointer type
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1598: warning: initialization from incompatible pointer type
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1599: warning: initialization from incompatible pointer type
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_inform_single_bss’:
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:1764: error: too few arguments to function ‘ieee80211_channel_to_frequency’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_bss_roaming_done’:
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 2 of ‘cfg80211_roamed’ from incompatible pointer type
include/net/cfg80211.h:3124: note: expected ‘struct ieee80211_channel *’ but argument is of type ‘u8 *’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 4 of ‘cfg80211_roamed’ makes pointer from integer without a cast
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 5 of ‘cfg80211_roamed’ makes integer from pointer without a cast
include/net/cfg80211.h:3124: note: expected ‘size_t’ but argument is of type ‘u8 *’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: warning: passing argument 6 of ‘cfg80211_roamed’ makes pointer from integer without a cast
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2090: error: too few arguments to function ‘cfg80211_roamed’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c: In function ‘wl_bss_connect_done’:
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 2 of ‘cfg80211_roamed’ from incompatible pointer type
include/net/cfg80211.h:3124: note: expected ‘struct ieee80211_channel *’ but argument is of type ‘u8 *’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 4 of ‘cfg80211_roamed’ makes pointer from integer without a cast
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 5 of ‘cfg80211_roamed’ makes integer from pointer without a cast
include/net/cfg80211.h:3124: note: expected ‘size_t’ but argument is of type ‘u8 *’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: warning: passing argument 6 of ‘cfg80211_roamed’ makes pointer from integer without a cast
include/net/cfg80211.h:3124: note: expected ‘const u8 *’ but argument is of type ‘s32’
/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: error: too few arguments to function ‘cfg80211_roamed’
make[2]: *** [/home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.o] Error 1
make[1]: *** [_module_/home/joshis1/hybrid_wl] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.18.1.el6.x86_64'
make: *** [all] Error 2

How can I solve this? What am I missing? I have updated the Broadcom support group email id also, here linux-wlan-client-support-list@broadcom.com. Broadcom is a leading company, and I expect them to help here. I have emailed them also. Broadcom can share their solution here only, so that the world can get a benefit from it.

To Broadcom, I have posted this on stack overflow, since every one can get an advantage of it. At the moment, I am unable to use WIFI on my laptop. I am stuck with the wired connection . Please help me so that I can get the WIFI working. When nothing was building, I tried the following with the latest release.

make API=WEXT (deprecated) ----> I am following the readme file.

This detects the wifi networks available, but it is unable to connect to the AP. Looks like this needs Wireless extension tools.

Do, I need to install anything for it. Or do you say, don't use the deprecated build rule, instead fix the build error? Whatever is your suggestion on it?

suggestion, I can follow on it.

Was it helpful?

Solution

The key is here: /home/joshis1/hybrid_wl/src/wl/sys/wl_cfg80211_hybrid.c:2122: error: too few arguments to function ‘cfg80211_roamed’

If you check wl_cfg80211_hybrid.c ~line 2122

cfg80211_roamed(ndev,
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39)
                    NULL,
#endif
    (u8 *)&wl->bssid,  conn_info->req_ie, conn_info->req_ie_len,
    conn_info->resp_ie, conn_info->resp_ie_len,        GFP_KERNEL);
    WL_DBG(("roaming result\n"));
}

Although I'm running RHEL6.5 with 2.6.32 it's running a version of net/cfg80211.h that expects the extra argument so I needed to change the line to: #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32) - or just remove the if/endif completely. Unfortunate it doesn't stop there,that's about a dozen KERNEL_VERSION if's in wl_cfg80211_hybrid.c which need to be changed.

Once complete (you can test but running 'make' and going back and fixing the errors) it does compile and install fine. I'm running it now with WPA etc.. as expected. It seems it's just RedHat bringing in some cfg80211 from a more recent kernel into 2.6.32 that confuses the module.

OTHER TIPS

I had the exact same problem with a friend's CentOS 6.4 Acer laptop (BCM 43227 WiFi) last week. The Broadcom driver would build only with API=WEXT option (otherwise, same error messages as you quoted), but then it worked only with "open" WiFi networks, not WPA/WPA2 (don't know about WEP). In /var/log/wpa_supplicant.log I got error message association request to the driver failed when trying to connect to WPA network and NetworkManager would just keep asking for the password.

Besides compiling the Broadcom driver directly, I also tried building RPM packages as suggested by ELRepo wl-kmod Howto (via CentOS wiki), but that failed as well (the Broadcom file names were different then the RPM expected).

I looked at the computer again this weekend and realized the RPM files linked in the ELRepo Howto had changed and the document itself was updated on 26th of September. So I tried again with the newer RPMs, following the instructions exactly and this time it worked. Got an RPM file which installed wl.ko kernel module. Loaded it via modprobe wl, after that NetworkManager found my WPA2 wifi and connected on first try.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top