On Thu, Apr 06, 2000, David Brownell <[EMAIL PROTECTED]> wrote:
> Matthew Dharm wrote:
> > 
> > Well, I've found yet another HCD difference.  The difference is in the
> > handling of interrupt URBs during a disconnect.
> > 
> > With usb-uhci.o and uhci.o, the status field of the URB is set to -2
> > (-ENOENT).  With usb-ohci.o, this field is set to -110 (-EPIPE).
> > 
> > These should be made consistant, one way or the other.  Otherwise I can't
> > detect truly unwanted interrupts.
> 
> I've been waiting for someone to chime in with a suggestion
> that one way or the other is clearly right ... no such luck.
> I notice that <linux/usb.h> mentions both codes:
> 
>       ENOENT: URB canceled by user
>       EPIPE:  pipe stalled
> 
> Invoking disconnect() doesn't seem like cancelation "by user",
> considering it happens for reasons other than program request.
> 
> Also, it looks like OHCI only sets EPIPE when the controller
> actually reports a stall, while both UHCIs use ENOENT as a general
> "this URB is pining for the fjords" flag.
> 
> On that level of analysis, it seems like maybe OHCI discarded
> some information it should have kept, or the two drivers approach
> the problem differently enough to reasonably cause this symptom.
> 
> Comments from someone who knows more about what's going on here?

On disconnect(), all of the outstanding URB's are explicitily
unlinked by the HCD.

In that case, ENOENT is the appropriate error code.

JE


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to