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" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED],  [EMAIL PROTECTED]
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
[EMAIL PROTECTED]:/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

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to