On Sun, 29 Apr 2001, Sancho Dauskardt wrote:

> [several opportunities to deal with queued bulk]
> 
>       On 2.4.4 usb-uhci this work crashes the machine.

works for me real fast - no "turn-time" issue

>       On 2.4.4 uhci this work nicely for a while and then suddenly stops.

same here. I've just sent a trace to JE showing an anomaly which might
explain the failure - IMHO there is still a HCD-problem with queued bulk 
for uhci.

>       I guess this is the same issue that Martin Diehl is having ?

well, situation is somewhat different here:

I have 2 queued urbs both to the same ep 2-in, double-buffered.
urb->next = NULL for both urbs. No master-slave relation (due to
storage-protocol I guess in your case?). Only sleeping for one of them to
complete.

>       The completion handler i'm using just does the usual wakeup.

If your sleeping times out, what is urb->status? still -EINPROGRESS?
If yes, it's probably the same thing I get with uhci.

On the other hand, there are a lot of usb-drivers with tons of races in
the conditional schedule patch. I'm going to write a comment on this
tomorrow. The basic message is there is a window between testing
urb->status==-EINPROGRESS and going to sleep during which a wake_up()
from the completion-handler (interrupt-context!) is simply lost.
That's why using sleep_on() and friends is now deprecated!
Instead one should use set_current_state() and schedule() in combination
with a private waitqueue - look into drivers/usb/audio.c for example.

Martin


_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to