Linux 3.2.2内核编译BCM4312驱动解决办法

新升级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] 错误 1make[1]: *** [_module_/home/liu/document/hybrid-portsrc_x86_32-v5_100_82_112] 错误 2make[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 versionUsing Wireless Extension API MODPOST 1 modulesWARNING: modpost: missing MODULE_LICENSE() in /home/liu/document/hybrid-portsrc_x86/wl.osee 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.komake[1]: 离开目录“/usr/src/kernels/3.2.2-1.fc16.i686.PAE”

挂载好驱动后,无线网工作正常。

再次google后发现 ndo_set_multicast_list 被ndo_set_rx_mode替换(在以下网站提到,但是个人并没有找到更多关于替换的信息,在内核源码中也没有找到,找到的交流交流)

根据网站的信息,,将ndo_set_multicast_list 替换成ndo_set_rx_mode 同样编译通过,并且没有警告信息。

想象困难做出的反应,不是逃避或绕开它们,

Linux 3.2.2内核编译BCM4312驱动解决办法

相关文章:

你感兴趣的文章:

标签云: