Revised: 2000-Dec-05.

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.

NOTE:
The USB_ST_* codes are deprecated and are only listed for compatibility;
new software should use only -E* instead!



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

Non-USB-specific:

USB_ST_NOERROR
0		URB submission went fine

-ENOMEM		no memory for allocation of internal structures	

USB-specific:

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

USB_ST_REQUEST_ERROR
-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)

USB_ST_URB_INVALID_ERROR
-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)

USB_ST_STALL
-EPIPE		specified pipe-handle is already stalled

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

USB_ST_BANDWIDTH_ERROR
-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)             *
**************************************************************************

USB_ST_NOERROR
0			Transfer completed successfully

USB_ST_URB_KILLED
-ENOENT			URB was canceled by usb_unlink_urb

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

USB_ST_BITSTUFF
USB_ST_INTERNALERROR
-EPROTO			a) bitstuff error
			b) unknown USB error 

USB_ST_CRC
-EILSEQ			CRC mismatch

USB_ST_STALL
-EPIPE			endpoint stalled

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

USB_ST_BUFFERUNDERRUN
-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

USB_ST_DATAOVERRUN
-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".

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

USB_ST_REMOVED	
-ENODEV			device was removed

USB_ST_SHORT_PACKET
-EREMOTEIO		short packet detected

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

USB_ST_URB_INVALID_ERROR
-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
