On Thu, Jun 06, 2002 at 02:06:30PM -0700, David Brownell wrote: > > I'd like to see all those URBs terminated immediately, but > > I'm sure others would like to see them all executed as if nothing had > > happened. > > I agree that it makes no sense to continue processing later URBs queued > on that same endpoint. Similarly when the endpoint halts, or one URB > is canceled. The transfer stream has been broken, and recovery needs > to be done before the endpoint can be used again. Having some other > URB queued (or not, in the non-queued case) doesn't change the need for > that recovery before proceeding.
Ah, and now the counter-example:
Consider a usb-storage 'read' command. I now have 5 URBs queued on a
bulk-in endpoint to transfer the data. Behind that, I have a 6th URB which
is supposed to fetch the status.
If the read fails due to short read, I still want the 6th URB to execute so
I can get the status.
Yes, I could not queue that URB until after the transfer is completed, but
it would be more effecient (read: faster and lower CPU requirement) if I
could queue it ahead of time (or during the sequence of read-URBs for the
data).
Realistically, I can come up with needs for both behaviors (kill the queue
and don't kill the queue). I think we need a method to differentiate
between them.
And, just to throw something out there... suppose I'm queueing bulk-in URBs
to transfer some data. But, my CPU is slow (for whatever reason -- perahps
I'm decoding too much p0rn DVD), and I don't actually submit the 3rd URB
until after the 2nd completed. But, the 2nd completed with a short
packet.... so what's the behavior? If #2 and #3 were submitted before #2
completed, then #3 would terminate (under your rules, see above). But, now
we have a race condition where #3 doesn't terminate because it doesn't
appear to be part of a long queue of URBs.
It's those sorts of sceanrios I'm worried about. Again, I return to my
argument about scatter-gather, which is what I see as the primary use of
queued URBs.
Matt
--
Matthew Dharm Home: [EMAIL PROTECTED]
Maintainer, Linux USB Mass Storage Driver
M: No, Windows doesn't have any nag screens.
C: Then what are those blue and white screens I get every day?
-- Mike and Cobb
User Friendly, 1/4/1999
msg07085/pgp00000.pgp
Description: PGP signature
