Revised: 2001-Dec-06.

This is the documentation of (hopefully) all possible error codes (and
their interpretation) that can be returned from the host controller drivers 
and from usbcore.


**************************************************************************
*                   Error codes returned by usb_submit_urb               *
**************************************************************************

Non-USB-specific:

0		URB submission went fine

-ENOMEM		no memory for allocation of internal structures	

USB-specific:

-ENODEV		specified USB-device or bus doesn't exist

-ENXIO		a control or interrupt URB is already queued to this endpoint; or
		  a bulk URB is already queued to this endpoint and
		  USB_QUEUE_BULK wasn't used (UHCI HCDs only)

-EINVAL		a) Invalid transfer type specified (or not supported)
		b) Invalid interrupt interval (0<=n<256)
		c) more than one interrupt packet requested
		d) ISO: number_of_packets is < 0

-EAGAIN		a) specified ISO start frame too early
		b) (using ISO-ASAP) too much scheduled for the future
		   wait some time and try again.

-EFBIG		too much ISO frames requested (currently uhci>900)

-EPIPE		specified pipe-handle is already stalled

-EMSGSIZE	endpoint message size is zero, do interface/alternate setting

-ENOSPC		The host controller's bandwidth is already consumed and
		this request would push it past its allowed limit.

-ESHUTDOWN	The host controller has been disabled due to some
		problem that could not be worked around.


**************************************************************************
*                   Error codes returned by in urb->status               *
*                   or in iso_frame_desc[n].status (for ISO)             *
**************************************************************************

0			Transfer completed successfully

-ENOENT			URB was canceled by usb_unlink_urb

-EINPROGRESS		URB still pending, no results yet
			(actually no error until now;-)

-EPROTO			a) bitstuff error
			b) unknown USB error 

-EILSEQ			CRC mismatch

-EPIPE			endpoint stalled

-ECOMM			During an IN transfer, the host controller
			received data from an endpoint faster than it
			could be written to system memory

-ENOSR			During an OUT transfer, the host controller
			could not retrieve data from system memory fast
			enough to keep up with the USB data rate

-EOVERFLOW		The amount of data returned by the endpoint was
			greater than either the max packet size of the
			endpoint or the remaining buffer size.  "Babble".

-EREMOTEIO		The endpoint returned less than max packet size
			and that amount did not fill the specified buffer
-ETIMEDOUT		transfer timed out, NAK

-ENODEV			device was removed

-EREMOTEIO		short packet detected

-EXDEV			ISO transfer only partially completed
			look at individual frame status for details

-EINVAL			ISO madness, if this happens: Log off and go home

-ECONNRESET		the URB is being unlinked asynchronously

**************************************************************************
*              Error codes returned by usbcore-functions                 *
*           (expect also other submit and transfer status codes)         *
**************************************************************************

usb_register():
-EINVAL			error during registering new driver

usb_get_*/usb_set_*():
			All USB errors (submit/status) can occur
