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

Hans Petter Selasky hselasky at freebsd.org
Mon Apr 30 19:30:20 UTC 2007


On Monday 30 April 2007 21:19, Valery V.Chikalov wrote:
> Hans Petter Selasky wrote:
> > On Monday 30 April 2007 18:41, Valery V.Chikalov wrote:
> >> Hans Petter Selasky wrote:
> >>> On Monday 30 April 2007 14:34, Valery V.Chikalov wrote:
> >>>> -----BEGIN PGP SIGNED MESSAGE-----
> >>>> Hash: SHA1
> >>>>
> >>>> Kevin Lo пишет:
> >>>>> Valery V.Chikalov wrote:
> >>>>>> 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
> >>>>>
> >>>>> if_rum(4) for 7.0-CURRENT
> >>>>>
> >>>>> replaced amrr_* functions by "standard" ones already existed in
> >>>>> net80211/ieee80211_amrr.c
> >>>>>
> >>>>>>>>> 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.
> >>>>>
> >>>>> Firstly, thanks for taking the time to test my patch.
> >>>>> I think your issue is related to watchdog timers. The revised patch
> >>>>> is at http://people.freebsd.org/~kevlo/patch-rum
> >>>>>
> >>>>> Besides, I don't get a panic during high load when getting a file
> >>>>> about 400MB via ftp.
> >>>>
> >>>> Sorry, but the error that I see the same, just after inserting dongle,
> >>>> or if it was inserted before - after kldload if_rum:
> >>>>
> >>>> panic: sleeping without a lock
> >>>>
> >>>> the top of stack:
> >>>> at usbd_transfer +0x1fe
> >>>> ....
> >>>> rum_ioctl
> >>>>
> >>>> And I cant get saved kernel coredump at the end.
> >>>>
> >>>> I have not serial console configured so it was just subscribed by
> >>>> hand. Of course I can reproduce it again and subscribe what you will
> >>>> ask.
> >>>>
> >>>> I have SMP kernel and use AMD64 architecture, maybe this are the
> >>>> reasons why we are getting different results.
> >>>>
> >>>> Can you please, explain me in two words(or give a reference) why you
> >>>> are dropping mtx_lock(&Giant). Yes I have seen the same in if_ural.c
> >>>> and as i have wrote before unsuccessfully have tried repeat it in
> >>>> if_rum. I know that current USB stack is not Giant free, and Hans
> >>>> noted that this is impossible (if I understand him right). Maybe
> >>>> exists some tunable or kernel option or another trick that allows
> >>>> drivers working without the Giant under current USB stack, which I
> >>>> must use.
> >>>>
> >>>> Thank you for your time and patience.
> >>>> Sorry for my english.
> >>>>
> >>>> Valery.
> >>>>
> >>>>>>>> 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
> >>>>>
> >>>>> 	Kevin
> >>>
> >>> Hi,
> >>>
> >>> I have just imported "if_rum.c" to SVN and my P4 tree.
> >>>
> >>> Just do a SVN update. Build a new USB package install that.
> >>>
> >>> cp -r i4b/trunk/i4b/src/sys/modules/rum /usr/src/sys/modules/rum
> >>>
> >>> make -C /usr/src/sys/modules/rum all install
> >>>
> >>> Hope it works.
> >>
> >> If you can read this message, then it definitely works :-)
> >> Thank you, great work!
> >>
> >> Only one issue:
> >> during kernel load, and later after kldload if_rum I got a bunch of
> >> messages
> >>
> >> usbd_fill_iface_data: invalid wMaxPacketSize=0x0000, addr=125!
> >> usbd_fill_iface_data: invalid wMaxPacketSize=0x0000, addr=125!
> >> usbd_fill_iface_data: invalid wMaxPacketSize=0x0000, addr=125!
> >> usbd_fill_iface_data: invalid wMaxPacketSize=0x0000, addr=125!
> >
> > Ok. Do you have USB Bluetooth devices ?
> >
> > --HPS
>
> Yes.
>
> tiger# usbdevs
> addr 127: UHCI root hub, Intel
> addr 127: UHCI root hub, Intel
> addr 127: UHCI root hub, Intel
> addr 127: UHCI root hub, Intel
> addr 124: 802.11 bg WLAN, Ralink
> addr 125: TrueMobile 350 Bluetooth USB Adapter, Dell
> addr 126: product 0xa005, Dell
>   addr 125: TrueMobile 350 Bluetooth USB Adapter, Dell
> addr 127: EHCI root hub, Intel
>   addr 126: product 0xa005, Dell
>    addr 125: TrueMobile 350 Bluetooth USB Adapter, Dell
>   addr 124: 802.11 bg WLAN, Ralink
>
> of course I have only /one/ USB Adapter, not three.
>
> Valery.

The warnings you get can just be ignored. They come from a dummy alternate 
setting on your USB Bluetooth adapter.

--HPS


More information about the freebsd-usb mailing list