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)