无法在 Ubuntu 13.10 上编译 RealTek RTL8188CE 驱动程序

Fre*_*Ben 7 compiling realtek drivers

我正在尝试在我的机器上编译 Realtek 驱动程序,但出现以下错误:

make -C /lib/modules/3.11.0-12-generic/build M=/home/david/Downloads/rtl8188ce-linux-driver modules
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-12-generic'
  CC [M]  /home/david/Downloads/rtl8188ce-linux-driver/base.o
/home/david/Downloads/rtl8188ce-linux-driver/base.c: In function ‘rtl_action_proc’:
/home/david/Downloads/rtl8188ce-linux-driver/base.c:885:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
       rx_status.freq = hw->conf.channel->center_freq;
                                ^
/home/david/Downloads/rtl8188ce-linux-driver/base.c:886:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
       rx_status.band = hw->conf.channel->band;
                                ^
/home/david/Downloads/rtl8188ce-linux-driver/base.c: In function ‘rtl_send_smps_action’:
/home/david/Downloads/rtl8188ce-linux-driver/base.c:1451:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
   info->band = hw->conf.channel->band;
                        ^
make[2]: *** [/home/david/Downloads/rtl8188ce-linux-driver/base.o] Error 1
make[1]: *** [_module_/home/david/Downloads/rtl8188ce-linux-driver] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-12-generic'
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Fre*_*Ben 10

显然,自 13.04 以来,Linux 头文件的变化足以破坏这个驱动程序。经过多天的工作,我终于解决了编译问题并使驱动程序正常工作。您可以在我的 Github 存储库中找到固定的驱动程序,以及我对 Realtek 发布的原始版本所做的所有更改的详细信息:https : //github.com/FreedomBen/rtl8188ce-linux-driver

对于那些有兴趣的人来说,最大的变化是删除了create_proc_entry()将调试信息放入/proc目录的其他相关功能。我还没有将代码转换为使用替换函数,所以目前不会报告调试信息。但这不会以任何方式影响驱动程序的性能。

另一大变化是结构调整struct ieee80211_hwstruct ieee80211_conf以及添加struct cfg80211_chan_def它取代了曾经被认为是对channel的成员ieee80211_conf

还有一个cfg80211_get_chandef_type()用于检索通道类型的新辅助函数,而不是旧的直接方法。