RT2860 NDIS needs rate.bin, where is it?
Paul B. Mahol
onemda at gmail.com
Tue Mar 24 11:59:58 PDT 2009
On 3/24/09, Jack Twilley <jmt at twilley.org> wrote:
> Paul B. Mahol wrote:
>> On 3/24/09, Jack Twilley <jmt at twilley.org> wrote:
>>> Paul B. Mahol wrote:
>>>> On 3/23/09, Jack Twilley <jmt at twilley.org> wrote:
>>>>> NDIS finally works again in 8.0-CURRENT so I thought I'd try to get my
>>>>> RT2860 wireless working. I built the rt2860_sys.ko using ndisgen and
>>>>> copied rt2860.bin into /compat/ndis and kldloaded the new module. NDIS
>>>>> complains that it can't open /compat/ndis/rate.bin with errno 2. I
>>>>> don't have a rate.bin to give it, there wasn't one in the Windows
>>>>> bundle
>>>>> or the Linux one though it is referenced in the Linux driver source
>>>>> code. I tried copying rt2860.bin to rate.bin but that didn't work.
>>>>>
>>>>> I tried starting wpa_supplicant anyway, and got this:
>>>>>
>>>>> Starting wpa_supplicant.
>>>>> ioctl[SIOCG80211, op 98, len 32]: Invalid argument
>>>>> ELOOP: remaining socket: sock=5 eloop_data=0x28407140
>>>>> user_data=0x2840e040 handler=0x8069f40
>>>>> /etc/rc.d/wpa_supplicant: WARNING: failed to start wpa_supplicant
>>>> Please, tell me that you start wpa_supplicant with -Dndis flag.
>>>>
>>> I ran 'sh -x /etc/rc.d/wpa_supplicant start ndis0' to see how the script
>>> was starting the program. Here is the original command line:
>>>
>>> /usr/sbin/wpa_supplicant -s -B -i ndis0 -c /etc/wpa_supplicant.conf -D
>>> bsd -P /var/run/wpa_supplicant/ndis0.pid
>>>
>>> I replaced '-D bsd' with '-D ndis' and still got a return code of 255.
>>> I double-checked to ensure the module was loaded, and adding '-dd' did
>>> not increase the debug output.
>>>
>>> I also read the /etc/rc.d/wpa_supplicant script to see how it detected
>>> whether or not to use '-D ndis'. Turns out it calls a function named
>>> 'is_ndis_interface()' which checks a sysctl named
>>> 'net.wlan.${1#wlan}.%parent' but there is no 'net.wlan.ndis0.%parent',
>>> nor is there any 'net.wlan.ndis0' keys. There *is* 'net.ndis.0.%parent'
>>> which is set to pci1 and 'net.ndis.0.%driver' which is set to ndis --
>>> the latter sounds like a possibly sensible test for '-D ndis' if you ask
>>> me.
>>>
>>> Anyway, the fact that the sysctl wasn't present makes me think the
>>> failure to load /compat/ndis/rate.bin might have caused 'ndis_attach()'
>>> to not call 'ndis_create_sysctls()', or 'ndis_attach_pci()' to not call
>>> 'ndis_attach()', or so on -- but I can't tell where 'NdisOpenFile()'
>>> gets called so I'm not sure.
>>>
>>> Does this sound reasonable? What do you think?
>>
>> Probably, in my case net.wlan.0.%parent is ndis0
>>
>> What is displayed on kldload and device attach on console?
>> Try it with sysctl debug.ndis=1.
>>
>>
>
> Here is dmesg output from 'kldload rt2860_sys.ko' after running 'sysctl
> debug.ndis=1':
>
> no match for ZwWriteFile
> no match for ZwCreateFile
> no match for ZwReadFile
> ndis0: <802.11n Wireless LAN Card> mem 0xfbef0000-0xfbefffff irq 19 at
> device0.0 on pci1
> ndis0: [ITHREAD]
> ndis0: NDIS API version: 5.0
> NDIS: open file /compat/ndis/rate.bin failed: 2
> attach done.
> halting done.
>
> /var/log/messages doesn't have anything new to add -- an unknown USB
> device is detected but that's the camera so I'm not worried.
Perhaps rate.bin is already in that firmware. But I dont understand
why "dummy called" is not displayed. Either required functions are not
implemented or already present one are wrongly implemented.
What about of "ktrace kldload ./rt2860_sys.ko"?
--
Paul
More information about the freebsd-mobile
mailing list