USB_COMPLETION_REASON(9S) Data Structures for Drivers
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)