Skip to content

Commit 7431a90

Browse files
xiaoguangwulijinxia
authored andcommitted
DM USB: add code for error processing
add error processing logic for error code from libusb. Change-Id: I39883ddcb0ad80bcd8304b887cd4d2f32da3fa22 Tracked-On: Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com> Reviewed-by: Liang Yang <liang3.yang@intel.com> Acked-by: Yu Wang <yu1.wang@intel.com>
1 parent 00fbfd6 commit 7431a90

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

devicemodel/hw/pci/xhci.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2173,10 +2173,19 @@ pci_xhci_xfer_complete(struct pci_xhci_vdev *xdev,
21732173
XHCI_ST_EPCTX_HALTED;
21742174
err = XHCI_TRB_ERROR_STALL;
21752175
break;
2176+
case USB_ERR_SHORT_XFER:
2177+
err = XHCI_TRB_ERROR_SHORT_PKT;
2178+
break;
2179+
case USB_ERR_TIMEOUT:
2180+
case USB_ERR_IOERROR:
2181+
err = XHCI_TRB_ERROR_XACT;
2182+
break;
2183+
case USB_ERR_BAD_BUFSIZE:
2184+
err = XHCI_TRB_ERROR_BABBLE;
2185+
break;
21762186
case USB_ERR_NORMAL_COMPLETION:
21772187
break;
21782188
default:
2179-
/* FIXME: should process other failures */
21802189
UPRINTF(LFTL, "unknown error %d\r\n", xfer->status);
21812190
}
21822191

devicemodel/hw/platform/usb_pmapper.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,21 @@ usb_dev_comp_req(struct libusb_transfer *libusb_xfer)
6262
xfer->status = USB_ERR_STALLED;
6363
goto out;
6464
case LIBUSB_TRANSFER_NO_DEVICE:
65+
/* avoid short packet warnings when devices are plugged out. */
66+
xfer->status = USB_ERR_SHORT_XFER;
67+
goto out;
6568
case LIBUSB_TRANSFER_ERROR:
66-
case LIBUSB_TRANSFER_TIMED_OUT:
69+
xfer->status = USB_ERR_STALLED;
70+
goto out;
6771
case LIBUSB_TRANSFER_CANCELLED:
72+
xfer->status = USB_ERR_IOERROR;
73+
goto out;
74+
case LIBUSB_TRANSFER_TIMED_OUT:
75+
xfer->status = USB_ERR_TIMEOUT;
76+
goto out;
6877
case LIBUSB_TRANSFER_OVERFLOW:
69-
/* FIXME: should treat every failure properly */
70-
UPRINTF(LWRN, "failure: %x\r\n", libusb_xfer->status);
71-
break;
78+
xfer->status = USB_ERR_BAD_BUFSIZE;
79+
goto out;
7280
case LIBUSB_TRANSFER_COMPLETED:
7381
break;
7482
default:

0 commit comments

Comments
 (0)