Subject: Re: [PATCH] rtlwifi: Add more checks for get_btc_status callback

From: Larry Finger <[email-masked]>
Date: Thu, 06 Nov 2014 17:30:15 -0600

On 11/06/2014 04:52 PM, Murilo Opsfelder Araujo wrote:
> On 11/06/2014 09:40 AM, Murilo Opsfelder Araujo wrote:
>> On 11/05/2014 04:12 PM, Larry Finger wrote:
>>> On 11/05/2014 03:16 AM, Mike Galbraith wrote:
>>>> On Wed, 2014-10-29 at 23:30 -0500, Larry Finger wrote:
>>>>> On 10/29/2014 06:28 PM, Murilo Opsfelder Araujo wrote:
>>>>>> This is a complement of commit 08054200117a95afc14c3d2ed3a38bf4e345bf78
>>>>>> "rtlwifi: Add check for get_btc_status callback".
>>>>>>
>>>>>> With this patch, next-20141029 at least does not panic with rtl8192se
>>>>>> device.
>>>>>>
>>>>>
>>>>> This patch is OK, but as noted it is not complete.
>>>>>
>>>>> I have patches to fix all the kernel panics for rtl8192se AND
>>>>> rtl8192ce. There
>>>>> are missing parts, but I would prefer submitting mine, which would
>>>>> conflict with
>>>>> this one. For that reason, NACK for this one, and please apply the
>>>>> set I am
>>>>> submitting now.
>>>>
>>>> It's all in there now, but my RTL8191SEvB is still dead.  Squabbling
>>>> with it isn't going all that well either.
>>>>
>>>> As soon as 38506ece rtlwifi: rtl_pci: Start modification for new drivers
>>>> is applied, explosions appear.  Subsequently applying...
>>>>
>>>> 08054200 rtlwifi: Add check for get_btc_status callback
>>>> c0386f15 rtlwifi: rtl8192ce: rtl8192de: rtl8192se: Fix handling for
>>>> missing get_btc_status
>>>> 50147969 rtlwifi: rtl8192se: Fix duplicate calls to
>>>> ieee80211_register_hw()
>>>> 30c5ccc6 rtlwifi: rtl8192se: Add missing section to read descriptor
>>>> setting
>>>> 75a916e1 rtlwifi: rtl8192se: Fix firmware loading
>>>>
>>>> ...fixes that mess up, but leaves the interface dead in the same manner
>>>> as if nothing has been reverted.  So it _seems_ the bustage lurks in
>>>> 38506ece somewhere.  Too bad it's non-dinky, and written in wifi-ese :)
>>>
>>> Yes, I am aware that rtl8192se is failing, and now that I am back from
>>> vacation, I am working on the problem. If you want to use the driver
>>> with kernel 3.18, clone the repo at
>>> http://github.com/lwfinger/rtlwifi_new.git and build and install either
>>> the master or kernel_version branches. Both work.
>>>
>>> I am in the process of trying to find what the crucial difference is
>>> between that repo and the kernel version.
>>>
>>> Larry
>>>
>>>
>> I'm sending to everyone so others can jump in as well.
>>
>> Here are the steps I've followed.
>>
>> Installed and booted my kernel:
>>
>> $ sudo dpkg -i linux-image-3.18.0-rc3-next-20141105-panda_3.18.0-rc3-next-20141105-panda-1_amd64.deb linux-headers-3.18.0-rc3-next-20141105-panda_3.18.0-rc3-next-20141105-panda-1_amd64.deb
>>
>> Built modules from Larry's github repository.
>>
>> $ cd rtlwifi_new
>> $ make
>> $ sudo make install
>>
>> $ sudo modprobe -rv rtl8192se
>> rmmod rtl8192se
>> rmmod rtl_pci
>> rmmod rtlwifi
>> rmmod mac80211
>> rmmod cfg80211
>>
>> The module does not load:
>>
>> $ sudo modprobe -v rtl8192se
>> insmod /lib/modules/3.18.0-rc3-next-20141105-panda/kernel/net/wireless/cfg80211.ko
>> insmod /lib/modules/3.18.0-rc3-next-20141105-panda/kernel/net/mac80211/mac80211.ko
>> insmod /lib/modules/3.18.0-rc3-next-20141105-panda/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
>> insmod /lib/modules/3.18.0-rc3-next-20141105-panda/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
>> insmod /lib/modules/3.18.0-rc3-next-20141105-panda/extra/rtl8192se.ko
>> ERROR: could not insert 'rtl8192se': Invalid argument
>>
>> And /var/log/messages showed:
>>
>> Nov  5 22:28:01 laptop kernel: [  301.276806] rtl8192se: disagrees about version of symbol rtl_process_phyinfo
>> Nov  5 22:28:01 laptop kernel: [  301.276812] rtl8192se: Unknown symbol rtl_process_phyinfo (err -22)
>> Nov  5 22:28:01 laptop kernel: [  301.276864] rtl8192se: disagrees about version of symbol rtl_get_tcb_desc
>> Nov  5 22:28:01 laptop kernel: [  301.276866] rtl8192se: Unknown symbol rtl_get_tcb_desc (err -22)
>>
>
> Here is what I did in order to get the rtl8192se from Larry's repo to
> work:
>
> $ cd rtlwifi_new
> $ make
>
> $ sudo modprobe -rv rtl8192se
> rmmod rtl8192se
> rmmod rtl_pci
> rmmod rtlwifi
> rmmod mac80211
> rmmod cfg80211
>
> $ sudo modprobe -v cfg80211
> insmod /lib/modules/3.18.0-rc3-next-20141106-panda/kernel/net/wireless/cfg80211.ko
>
> $ sudo modprobe -v mac80211
> insmod /lib/modules/3.18.0-rc3-next-20141106-panda/kernel/net/mac80211/mac80211.ko
>
> $ sudo insmod ./rtlwifi.ko
> $ sudo insmod ./rtl_pci.ko
> $ sudo insmod ./rtl8192se/rtl8192se.ko
>
> Cascardo helped me to investigate this and the issue was that modprobe
> was loading the core rtl drivers from the next-20141105 and the
> rtl8192se from Larry's repo.  Thus, rtl8192se didn't have all its
> required symbols at loading time.
>
> Loading the drivers in reverse order using insmod did the trick.
>
> Larry, your rtl8192se from rtlwifi_new repository is working pretty
> fine on my hardware.  I'm looking forward to see that code landing
> linux 3.18.

I am happy that it is working now; however, if you had done "sudo make install", 
the new drivers would have been in the proper directories, and you would not 
have gotten the incorrect symbol errors, or need to use the insmod commands that 
you post.

Larry