Date: Wed, 10 Apr 2002 21:53:27 +0200 (CEST) From: Nick Hibma <n_hibma@van-laarhoven.org> To: Terry Lambert <tlambert2@mindspring.com> Cc: Josef Karthauser <joe@tao.org.uk>, "Eugene M. Kim" <gene@nttmcl.com>, Oliver Fromme <olli@secnetix.de>, FreeBSD Hardware Mailing List <hardware@freebsd.org>, FreeBSD Hackers Mailing List <hackers@freebsd.org> Subject: Re: USB "Memorybird" quirks Message-ID: <20020410215305.S27956-100000@heather.van-laarhoven.org> In-Reply-To: <3C631E45.2EAAA4CF@mindspring.com>
next in thread | previous in thread | raw e-mail | index | archive | help
minimum_cmd_size is only used for read_write commands, not for others like MODE_SENSE_6 and friends. Nick > > As in, try a 6 byte command, and if that fails try a 10 byte command > > instead? > > As in, if it fails to reset, then > > sc->softc->minimum_cmd_size = 10; > printf( "auto-quirking mumble foo\n"); > > It would let most of the existing quirks table go away, but > would require additional retries. The cool thing is that it > would all happen in the error path, so, other than increasing > the number of retries to cause it to engage by itself without > having to try the disklabel 3 times, which is also failure > mode stuff, it adds no overhead to working devices, and makes > non-working ones work with the overhead they have to have > anyway. > > > > Unfortunately although I'm maintaining USB in -current, I don't have a > > complete in depth understanding of the code yet. :( I'm mainly trying > > to fix my problems by taking from NetBSD. > > I took a look at the code. I have to say it's opaque. It > makes a better door than a window. ;-). > > I haven't figured out how to turn a struct umass_softc * into > a struct da_softc *, or I would have given you an ugly little > patch against an older version of FreeBSD to try. 8-p. > > I think someone with one of these things, or with a quirky > one with the DA_Q_NO_6_BYTE removed from the quirks table, > is going to have to set CAM_DEBUG on big-time, and then > see where the reset error falls out, add a static fail > counter to that place in the code, and then if it fails > and the fail counter >= 3 (for example), reset the minimum > command size to 10. > > That should "just work". > > If the reset is retried enough times, you could get rid of > the quirks entries that existed solely for this quirk; I > think that a > > 6 byte commands not supported: changing to 10 byte commands > > message on the console is probably acceptable "noise" in > trade for getting rid of it, and supporting future devices > with the same problem, without needing to "quirk" them. > > I think DA_Q_NO_SYNC_CACHE might be handleable the same > way, which would get rid of all the quirk entries, and > maybe the need for a quirk table at all (it looks like > the daclose/dadump/dashutdown sync code could be static'ed > and shared, as well). > > Maybe this is a CAM-specific thing, and shouldn't be > handled in the USB code at all (you won't know until > you see a quirked device failure with the CAM debug, or > you write the CAM code to tape and run it through your > dental fillings or otherwise load it into your head). > > -- Terry > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hardware" in the body of the message > -- n_hibma@van-laarhoven.org http://www.van-laarhoven.org/ n_hibma@FreeBSD.org http://www.etla.net/~n_hibma/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hardware" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020410215305.S27956-100000>