Date: Mon, 27 Dec 2004 12:42:42 +0100 From: Hans Petter Selasky <hselasky@c2i.net> To: freebsd-usb@freebsd.org Subject: Re: USB vendore designations.. Message-ID: <200412271242.43441.hselasky@c2i.net> In-Reply-To: <41CFB6AE.1080705@elischer.org> References: <41CB38A7.5020700@vicor.com> <200412261747.36555.hselasky@c2i.net> <41CFB6AE.1080705@elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 27 December 2004 08:15, Julian Elischer wrote: > Now, when you do the "doobell trick" as descibed in the spec, > there is one little part of it.. that is the catch. > > The spec says: > "Software should first deactivate all active qTDs, wait for the > queue head to go inactive, then remove the queue head from > the asynchronous list." > > Note the word "all" > > Ok, so since we want to remove only SOME of the qTDs from the queue > (those corresponding to the aborting command), and we need to read > the status word to see which has been completed by whether the > active bit is set, and since we are in a race with the hardware > to clear the active bit, which of the qTDs, not in the list of > qTDs we want to remove, was completed? > Maybe the EHCI driver should not reuse the QH's for transfers on the same pipe, but instead like I did, have one QH for each transfer, insterted into the asynchronous schedule after that the last QH has been removed? Yours --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412271242.43441.hselasky>