USB_COMPLETION_REASON(9S) Data Structures for Drivers USB_COMPLETION_REASON(9S)


NAME


usb_completion_reason - USB completion reason definitions

SYNOPSIS


#include <sys/usb/usba.h>


INTERFACE LEVEL


illumos DDI specific (illumos DDI)

DESCRIPTION


If an error occurs during execution of a USB request, the USBA framework
calls a client driver's exception callback handler to relay what
happened. The host controller reports transport errors to the exception
callback handler through the handler's request argument's completion
reason (usb_cr_t) field. A completion reason of USB_CR_OK means the
transfer completed with no errors detected.


The usb_cr_t enumerated type contains the following definitions:

USB_CR_OK
The transfer completed without any errors
being detected.


USB_CR_CRC
CRC error was detected.


USB_CR_BITSTUFFING
Bit stuffing violation was detected.


USB_CR_DATA_TOGGLE_MM
Data toggle packet identifier did not match
expected value.


USB_CR_STALL
The device endpoint indicated that it is
stalled. If autoclearing is enabled for the
request (request attributes has
USB_ATTRS_AUTOCLEARING set), check the
callback flags (usb_cb_flags_t) in the
callback handler to determine whether the
stall is a functional stall
(USB_CB_FUNCTIONAL_STALL) or a protocol stall
(USB_CB_PROTOCOL_STALL). Please see
usb_request_attributes(9S) for more
information on autoclearing.


USB_CR_DEV_NOT_RESP
Host controller timed out while waiting for
device to respond.


USB_CR_PID_CHECKFAILURE
Check bits on the packet identifier returned
from the device were not as
expected.


USB_CR_UNEXP_PID
Packet identifier received was not valid.


USB_CR_DATA_OVERRUN
Amount of data returned exceeded either the
maximum packet size of the endpoint or the
remaining buffer size.


USB_CR_DATA_UNDERRUN
Amount of data returned was not sufficient to
fill the specified buffer and the
USB_ATTRS_SHORT_XFER_OK attribute was not set.
Please see usb_request_attributes(9S) for more
information on allowance of short transfers.


USB_CR_BUFFER_OVERRUN
A device sent data faster than the system
could digest it.


USB_CR_BUFFER_UNDERRUN
The host controller could not get data from
the system fast enough to keep up with the
required USB data rate.


USB_CR_TIMEOUT
A timeout specified in a control, bulk, or
one-time interrupt request has expired.


USB_CR_NOT_ACCESSED
Request was not accessed nor processed by the
host controller.


USB_CR_NO_RESOURCES
No resources were available to continue
servicing a periodic interrupt or isochronous
request.


USB_CR_STOPPED_POLLING
Servicing of the current periodic request
cannot continue because polling on an
interrupt-IN or isochronous-IN endpoint has
stopped.


USB_CR_PIPE_CLOSING
Request was not started because the pipe to
which it was queued was closing or closed.


USB_CR_PIPE_RESET
Request was not started because the pipe to
which it was queued was reset.


USB_CR_NOT_SUPPORTED
Request or command is not supported.


USB_CR_FLUSHED
Request was not completed because the pipe to
which it was queued went to an error state,
became stalled, was reset or was closed.


USB_CR_HC_HARDWARE_ERR
Request could not be completed due to a
general host controller hardware
error.


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Architecture | PCI-based systems |
+--------------------+-------------------+
|Interface stability | Committed |
+--------------------+-------------------+

SEE ALSO


usb_alloc_request(9F), usb_pipe_bulk_xfer(9F), usb_pipe_ctrl_xfer(9F),
usb_pipe_intr_xfer(9F), usb_pipe_isoc_xfer(9F), usb_bulk_request(9S),
usb_ctrl_request(9S), usb_intr_request(9S), usb_isoc_request(9S)


January 5, 2004 USB_COMPLETION_REASON(9S)