From owner-freebsd-usb@FreeBSD.ORG Mon Apr 30 19:03:18 2007 Return-Path: X-Original-To: freebsd-usb@freebsd.org Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 50C7D16A400; Mon, 30 Apr 2007 19:03:18 +0000 (UTC) (envelope-from hselasky@freebsd.org) Received: from swip.net (mailfe09.swip.net [212.247.155.1]) by mx1.freebsd.org (Postfix) with ESMTP id 7782813C459; Mon, 30 Apr 2007 19:03:17 +0000 (UTC) (envelope-from hselasky@freebsd.org) X-Cloudmark-Score: 0.000000 [] Received: from [193.71.38.142] (account mc467741@c2i.net HELO [10.42.11.147]) by mailfe09.swip.net (CommuniGate Pro SMTP 5.1.7) with ESMTPA id 308874120; Mon, 30 Apr 2007 21:02:58 +0200 From: Hans Petter Selasky To: freebsd-usb@freebsd.org Date: Mon, 30 Apr 2007 20:57:27 +0200 User-Agent: KMail/1.9.5 References: <200704272330.l3RNU94X078095@freefall.freebsd.org> <200704301754.53119.hselasky@freebsd.org> <46361C50.6020502@chikalov.dp.ua> In-Reply-To: <46361C50.6020502@chikalov.dp.ua> MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200704302057.27212.hselasky@freebsd.org> Cc: Kevin Lo Subject: Re: usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset driver X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2007 19:03:18 -0000 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 =EF=E8=F8=E5=F2: > >>> 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" > >>>>>>>> To: bug-followup@FreeBSD.org, valera@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=3DUTF-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@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=3D-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) =3D (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 y= ou > >>>>> 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 abo= ut > >>> 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 reaso= ns > >> why we are getting different results. > >> > >> Can you please, explain me in two words(or give a reference) why you a= re > >> 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=3D0x0000, addr=3D125! > usbd_fill_iface_data: invalid wMaxPacketSize=3D0x0000, addr=3D125! > usbd_fill_iface_data: invalid wMaxPacketSize=3D0x0000, addr=3D125! > usbd_fill_iface_data: invalid wMaxPacketSize=3D0x0000, addr=3D125! Ok. Do you have USB Bluetooth devices ? =2D-HPS