[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-mobile
Subject:    Re: RT2860 NDIS needs rate.bin, where is it?
From:       Sam Leffler <sam () freebsd ! org>
Date:       2009-03-24 19:29:31
Message-ID: 49C9349B.4080707 () freebsd ! org
[Download RAW message or body]

Paul B. Mahol wrote:
> On 3/24/09, Jack Twilley <jmt@twilley.org> wrote:
>   
>> Paul B. Mahol wrote:
>>     
>>> On 3/24/09, Jack Twilley <jmt@twilley.org> wrote:
>>>       
>>>> Paul B. Mahol wrote:
>>>>         
>>>>> On 3/23/09, Jack Twilley <jmt@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"?
>   

It looks very much like the driver is using ZwCreateFile+ZwReadFile to 
collect the contents of rate.bin.  You can try implementing them (google 
points directly at the msdn entries) but you'll still need the .bin file.

Seems like a better solution is to just bring over the 2860 support from 
obsd.  Several people started that before but lost interest.  If 
anyone's motivated they can contact me directly.

    Sam


_______________________________________________
freebsd-mobile@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
To unsubscribe, send any mail to "freebsd-mobile-unsubscribe@freebsd.org"
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic