usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset driver

Valery V.Chikalov valera at chikalov.dp.ua
Sun Apr 29 14:23:45 UTC 2007


Hans Petter Selasky wrote:
> On Sunday 29 April 2007 15:02, Valery V.Chikalov wrote:
>> Kevin Lo wrote:
>>> Valery V.Chikalov wrote:
>>>> The following reply was made to PR usb/107642; it has been noted by
>>>> GNATS.
>>>>
>>>> From: "Valery V.Chikalov" <valera at chikalov.dp.ua>
>>>> To: bug-followup at FreeBSD.org,  valera at chikalov.dp.ua
>>>> Cc:
>>>> Subject: Re: usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB
>>>> chipset driver
>>>> Date: Sun, 22 Apr 2007 11:32:18 +0300
>>>>
>>>>  This is a multi-part message in MIME format.
>>>>  --------------030900090303000507070905
>>>>  Content-Type: text/plain; charset=UTF-8
>>>>  Content-Transfer-Encoding: 7bit
>>>>
>>>>  -----BEGIN PGP SIGNED MESSAGE-----
>>>>  Hash: SHA1
>>>>
>>>>  if_rum(4) for 7.0-CURRENT
>>>>
>>>>  replaced amrr_* functions by "standard" ones already existed in
>>>>  net80211/ieee80211_amrr.c
>>>>
>>>>  -----BEGIN PGP SIGNATURE-----
>>>>  Version: GnuPG v1.4.5 (MingW32)
>>>>  Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>>>>
>>>>  iD8DBQFGKx14760S3kDvEC4RAn8PAKCn990QJE0wZRKcwdxAZ61MY0JRgACeI2W5
>>>>  ZosSlh6pIqi7JdZ5Wi1BUYc=
>>>>  =LvWZ
>>>>  -----END PGP SIGNATURE-----
>>> Hi Valery,
>>>
>>> I guess you wasn't aware that I've already ported rum(4) to FreeBSD.
>>> The patch is available at: http://people.freebsd.org/~kevlo/patch-rum
>>> Maybe you can test my patch? Thanks.
>>>
>>> 	Kevin
>> Hi, Kevin,
>>
>> Your driver not working for me. Fortunately, the errors that I see
>> exactly the same which i fight when I made my driver.
>>
>> $ uname -a
>> FreeBSD tiger.novakom.dp.ua 7.0-CURRENT FreeBSD 7.0-CURRENT #6: Sun Apr
>> 29 13:58:48 EEST 2007
>> root at tiger.novakom.dp.ua:/usr/obj/usr/src/sys/TIGER64  amd64
>>
>> $ sysctl kern.osreldate
>> kern.osreldate: 700037
>>
>> cvsup'ed 29.04.2007
>>
>> kernel with:
>>
>> makeoptions     DEBUG=-g
>>
>> options         KDB
>>
>> options         DDB
>>
>>
>>
>> options         INVARIANTS
>>
>> options         INVARIANT_SUPPORT
>>
>> options         WITNESS
>>
>> At first, when I make kldload if_rum, I get kernel panic.
>> But I cant get saved core, as ddb just hangs during "call doadump"
>>
> 
> I have a solution for all of this locking stuff!
> 
>> So I add
>>
>> #define RUM_LOCK(sc)    do { ((sc) = (sc)); mtx_lock(&Giant); } while
>> (0)
>> #define RUM_UNLOCK(sc)  mtx_unlock(&Giant)
>>
>> in  if_rumvar.h
>>
>> I spend a lot of time in attempts get rid of Giant ant always got only
>> panics.
> 
> You _cannot_ do that with the old USB stack, because you must lock Giant 
> before calling into the usbxxx functions. Then in the USB callback, Giant is 
> locked, and then you cannot lock RUM_LOCK()! That means you will most likely 
> end up with a deadlock pretty soon, if you see that.
> 

Thanks, for explanations. I suspected that thing are like that, and I 
have tried make porting by analogue with other drivers which I can find 
in dev/usb, but I was not can find the description of doing "right way" 
locking before.

>> After that I get hangs,
>> which i resolved by modifying rum_ioctl:
> 
> I'm almost finished converting "if_rum.c()" to the new USB stack.
> 
> In some hours I will update it with support for "if_rum".
> 
> If you can test that and forget about the old USB stack, I will be very 
> happy :-)
>

I will do it with pleasure. I was almost ready to do it (converting to 
new USB stack) by myself, but I was stopped by the fact that I cant make 
it compiled under CURRENT. I have seen your mail that your are working 
on this.  Is new the USB stack ready for CURRENT now?

Valery.

> --HPS
> 
> http://www.turbocat.net/~hselasky/usb4bsd



More information about the freebsd-usb mailing list