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?
- Dave
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]