Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Mar 2009 12:29:31 -0700
From:      Sam Leffler <sam@freebsd.org>
To:        "Paul B. Mahol" <onemda@gmail.com>
Cc:        Jack Twilley <jmt@twilley.org>, freebsd-mobile@freebsd.org
Subject:   Re: RT2860 NDIS needs rate.bin, where is it?
Message-ID:  <49C9349B.4080707@freebsd.org>
In-Reply-To: <3a142e750903241159m57464eb7wd50a6e88fd1390c2@mail.gmail.com>
References:  <49C7E0F8.9000701@twilley.org>	<3a142e750903231441g184fa5d1r57515c77d01e6dd4@mail.gmail.com>	<49C82A4B.5090108@twilley.org>	<3a142e750903240022n10d8b8cdy3787cc6b423df3c8@mail.gmail.com>	<49C91475.9080303@twilley.org> <3a142e750903241159m57464eb7wd50a6e88fd1390c2@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49C9349B.4080707>