On Thu, 16 Jun 2011, Sarah Sharp wrote: > Documentation/usb/error-codes.txt mentions that urb->status can be set to > -EXDEV, if the isochronous transfer was not fully completed. However, in > practice, EHCI, UHCI, and OHCI all only set -EXDEV in the individual frame > status, never in the URB status. Those host controller actually always > pass in a zero status to usb_hcd_giveback_urb, and rely on the core to set > the appropriate status value. > > The xHCI driver ran into issues with the uvcvideo driver when it tried to > set -EXDEV in urb->status, because the driver refused to submit URBs, and > the userspace camera application's video froze. > > Clean up the documentation to reflect the actual implementation. > > Signed-off-by: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> > Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > --- > Documentation/usb/error-codes.txt | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/Documentation/usb/error-codes.txt b/Documentation/usb/error-codes.txt > index d83703e..b3f606b 100644 > --- a/Documentation/usb/error-codes.txt > +++ b/Documentation/usb/error-codes.txt > @@ -76,6 +76,13 @@ A transfer's actual_length may be positive even when an error has been > reported. That's because transfers often involve several packets, so that > one or more packets could finish before an error stops further endpoint I/O. > > +For isochronous URBs, the urb status value is non-zero only if the URB is > +unlinked, the device is removed, the host controller is disabled, or the total > +transferred length is less than the requested length and the URB_SHORT_NOT_OK > +flag is set. Completion handlers for isochronous URBs should only see > +urb->status set to zero, -ENOENT, -ECONNRESET, -ESHUTDOWN, or -EREMOTEIO. > +Individual frame descriptor status fields may report more status codes. > + > > 0 Transfer completed successfully > > @@ -132,7 +139,7 @@ one or more packets could finish before an error stops further endpoint I/O. > device removal events immediately. > > -EXDEV ISO transfer only partially completed > - look at individual frame status for details > + (only set in iso_frame_desc[n].status, not urb->status) > > -EINVAL ISO madness, if this happens: Log off and go home Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html