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