歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 3.2.2內核編譯BCM4312驅動解決辦法

Linux 3.2.2內核編譯BCM4312驅動解決辦法

日期:2017/2/28 15:57:48   编辑:Linux教程

新升級linux到3.2.2 發現編譯bcm4312驅動出錯 錯誤信息如下:

CC [M] /home/liu/document/hybrid-portsrc_x86_32-v5_100_82_112/src/wl/sys/wl_linux.o
/home/liu/document/hybrid-portsrc_x86_32-v5_100_82_112/src/wl/sys/wl_linux.c:388:2: 錯誤:初始值設定項裡有未知的字段‘ndo_set_multicast_list’
/home/liu/document/hybrid-portsrc_x86_32-v5_100_82_112/src/wl/sys/wl_linux.c:388:2: 警告:從不兼容的指針類型初始化 [默認啟用]
/home/liu/document/hybrid-portsrc_x86_32-v5_100_82_112/src/wl/sys/wl_linux.c:388:2: 警告:(在‘wl_netdev_ops.ndo_validate_addr’的初始化附近) [默認啟用]
make[2]: *** [/home/liu/document/hybrid-portsrc_x86_32-v5_100_82_112/src/wl/sys/wl_linux.o] 錯誤 1
make[1]: *** [_module_/home/liu/document/hybrid-portsrc_x86_32-v5_100_82_112] 錯誤 2
make[1]: 離開目錄“/usr/src/kernels/3.2.2-1.fc16.i686.PAE”
make: *** [all] 錯誤 2

對比之前3.1.9的內核文件 /lib/modules/3.1.9-1.fc16.i686.PAE/source/include/linux/netdevice.h 和3.2.2中的文件,

發現結構體net_device_ops中少了ndo_set-multicast_list成員。

把驅動中388行注解掉,重新編譯,提示:


/home/liu/document/hybrid-portsrc_x86/src/wl/sys/wl_linux.c:1730:1: 警告:‘wl_set_multicast_list’定義後未使用 [-Wunused-function]
CC [M] /home/liu/document/hybrid-portsrc_x86/src/wl/sys/wl_iw.o
CC [M] /home/liu/document/hybrid-portsrc_x86/src/wl/sys/wl_cfg80211.o
LD [M] /home/liu/document/hybrid-portsrc_x86/wl.o
Building modules, stage 2.
Wireless Extension is the only possible API for this kernel version
Using Wireless Extension API
MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /home/liu/document/hybrid-portsrc_x86/wl.o
see include/linux/module.h for more information
CC /home/liu/document/hybrid-portsrc_x86/wl.mod.o
LD [M] /home/liu/document/hybrid-portsrc_x86/wl.ko
make[1]: 離開目錄“/usr/src/kernels/3.2.2-1.fc16.i686.PAE”

掛載好驅動後,無線網工作正常。

再次google後發現 ndo_set_multicast_list 被ndo_set_rx_mode替換(在以下網站提到http://www.mindwerks.net/2011/11/wireless-bcm4312-3-2-kernel/,但是個人並沒有找到更多關於替換的信息,在內核源碼中也沒有找到,找到的交流交流)

根據網站的信息,將ndo_set_multicast_list 替換成ndo_set_rx_mode 同樣編譯通過,並且沒有警告信息。

Copyright © Linux教程網 All Rights Reserved