Can't understand the errors when compiling the driver

Hello forum,

I have a realtek 8188CE card. When I was on opensuse 12.3 I had random dc problem till I downloaded the source code and compiled the driver myself.

Then I upgraded the OS to 13.1. The system still seems to be stable during about 2 months use. However I think I am having the old dc problem again randomly.

I don’t know if after upgrading the OS one must re-compile the drivers. Anyway I am doing it. However, I got these errors when doing the command “make”:

make -C /lib/modules/3.11.6-4-desktop/build M=/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013 modules
make[1]: Entering directory `/usr/src/linux-3.11.6-4-obj/x86_64/desktop'
  CC [M]  /home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.o
In file included from /home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:39:0:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/pci.h:247:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtl_pci_probe’
 int __devinit rtl_pci_probe(struct pci_dev *pdev,
               ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c: In function ‘rtl_action_proc’:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:885:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
       rx_status.freq = hw->conf.channel->center_freq;
                                ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:886:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
       rx_status.band = hw->conf.channel->band;
                                ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c: In function ‘rtl_send_smps_action’:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:1451:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
   info->band = hw->conf.channel->band;
                        ^
make[4]: *** [/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.o] Error 1
make[3]: *** [_module_/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/linux-3.11.6-4-obj/x86_64/desktop'
make: *** [all] Error 2


Is that some packages are missing? Thanks !

On 02/01/2014 04:46 AM, bonedriven wrote:
>
> Hello forum,
>
> I have a realtek 8188CE card. When I was on opensuse 12.3 I had random
> dc problem till I downloaded the source code and compiled the driver
> myself.
>
> Then I upgraded the OS to 13.1. The system still seems to be stable
> during about 2 months use. However I think I am having the old dc
> problem again randomly.
>
> I don’t know if after upgrading the OS one must re-compile the drivers.
> Anyway I am doing it. However, I got these errors when doing the command
> “make”:
>
>
> Code:
> --------------------
> make -C /lib/modules/3.11.6-4-desktop/build M=/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013 modules
> make[1]: Entering directory `/usr/src/linux-3.11.6-4-obj/x86_64/desktop’

CC [M] /home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.o
In file included from /home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:39:0:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/pci.h:247:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘rtl_pci_probe’
int __devinit rtl_pci_probe(struct pci_dev *pdev,
^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c: In function ‘rtl_action_proc’:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:885:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.freq = hw->conf.channel->center_freq;
^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:886:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
rx_status.band = hw->conf.channel->band;
^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c: In function ‘rtl_send_smps_action’:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:1451:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
info->band = hw->conf.channel->band;
^
make[4]: *** [/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.o] Error 1
make[3]: *** [module/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/linux-3.11.6-4-obj/x86_64/desktop’
> make: *** [all] Error 2

No packages are missing. The kernel is very careful about making the various
ABIs unchanging so that an application from an old version of Linux still works
on a newer one. The same is not true for the APIs. After all, the kernel is a
closed system, and the rule is that anyone that changes an API needs to fix it
for all built-in drivers. The vendor or the user needs to change it for all
out-of-kernel drivers. To use the vendor’s driver, you will need to make these
changes yourself. The one with __devinit is easy - that compiler directive was
deleted and needs to be removed from the source. The one with “channel” missing
is more complicated, but you can change the code to look like this in every such
place:

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0))
if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) {
#else
if (IEEE80211_BAND_2GHZ == hw->conf.channel->band) {
#endif

In other words, wherever the code refers to “hw->conf.channel->band”, it needs
to be changed to “hw->conf.chandef.chan->band”.

Hello lwfinger, thanks again for looking into my problem. You may think too high of my computer knowledge, :P.
I don’t think I follow what you meant (but other people may benefit from your explanation there). So it means that I
should have lost the driver that I had compiled on 12.3 after os upgrade?

What do I exactly delete? I still have the error there after I delete the “int __devinit …” line.

The second error seem to be gone after I made the change according to you instructions !:slight_smile: Magic to me !

On 02/01/2014 11:46 AM, bonedriven wrote:
>
> lwfinger;2621270 Wrote:
>>
>>
>> No packages are missing. The kernel is very careful about making the
>> various
>> ABIs unchanging so that an application from an old version of Linux
>> still works
>> on a newer one. The same is not true for the APIs. After all, the kernel
>> is a
>> closed system, and the rule is that anyone that changes an API needs to
>> fix it
>> for all built-in drivers. The vendor or the user needs to change it for
>> all
>> out-of-kernel drivers. To use the vendor’s driver, you will need to make
>> these
>> changes yourself.
>>
>
> Hello lwfinger, thanks again for looking into my problem. You may think
> too high of my computer knowledge, :P.
> I don’t think I follow what you meant (but other people may benefit from
> your explanation there). So it means that I
> should have lost the driver that I had compiled on 12.3 after os
> upgrade?

Unless you are willing to follow all the API changes, the answer is “yes”.

> lwfinger;2621270 Wrote:
>>
>> The one with __devinit is easy - that compiler directive was
>> deleted and needs to be removed from the source.
> What do I exactly delete? I still have the error there after I delete
> the “int __devinit …” line.

Do not delete the line, just the __devinit part. If you look carefully, the
error changed.

> Those errors seem to be gone after I changed them according to you
> instructions !:slight_smile: Magic to me !

Of course - that is the real fix that was applied when the change was made in
mac80211.

Alright, new error now :

make -C /lib/modules/3.11.6-4-desktop/build M=/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013 modules
make[1]: Entering directory `/usr/src/linux-3.11.6-4-obj/x86_64/desktop'
  CC [M]  /home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.o
  CC [M]  /home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/rc.o
  CC [M]  /home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.o
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c: In function ‘rtl_proc_add_one’:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:605:2: error: implicit declaration of function ‘create_proc_entry’ -Werror=implicit-function-declaration]
  rtlpriv->dbg.proc_dir = create_proc_entry(rtlpriv->dbg.proc_name,
  ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:605:24: warning: assignment makes pointer from integer without a cast [enabled by default]
  rtlpriv->dbg.proc_dir = create_proc_entry(rtlpriv->dbg.proc_name,
                        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:614:2: error: implicit declaration of function ‘create_proc_read_entry’ -Werror=implicit-function-declaration]
  entry = create_proc_read_entry("mac-0", S_IFREG | S_IRUGO,
  ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:614:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-0", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:621:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-1", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:628:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-2", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:635:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-3", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:642:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-4", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:649:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-5", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:656:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-6", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:663:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("mac-7", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:670:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-8", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:677:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-9", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:684:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-a", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:691:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-b", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:698:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-c", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:705:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-d", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:712:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-e", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:719:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("bb-f", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:726:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("rf-a", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:733:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("rf-b", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:740:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("cam-1", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:747:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("cam-2", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:754:8: warning: assignment makes pointer from integer without a cast [enabled by default]
  entry = create_proc_read_entry("cam-3", S_IFREG | S_IRUGO,
        ^
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c: In function ‘rtl_proc_add_topdir’:
/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.c:797:15: warning: assignment makes pointer from integer without a cast [enabled by default]
   proc_topdir = create_proc_entry("rtlwifi",
               ^
cc1: some warnings being treated as errors
make[4]: *** [/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/debug.o] Error 1
make[3]: *** [_module_/home/jake/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/linux-3.11.6-4-obj/x86_64/desktop'
make: *** [all] Error 2


I wonder if these errors will ever stop?

Hi Bone,

Grab this and tell me if it compiles cleanly for you and works (I do not have a Realtek) - if it does, I can make a spec file for it and put it up in the build service:
https://onedrive.live.com/redir?resid=E7C6C736855AA79D!107

Thank you very much Miuku. As a noob, I seldom compile stuff. I’ll see when I have the time and report back.