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