OSDN Git Service

usb: XHCI shall not halt isochronous endpoints
authorYuri Benditovich <yuri.benditovich@janustech.com>
Mon, 28 Jan 2019 20:05:07 +0000 (20:05 +0000)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 30 Jan 2019 05:47:52 +0000 (06:47 +0100)
According to the XHCI spec (4.10.2) the controller
never halts isochronous endpoints. This commit prevent
stop of isochronous streaming when sporadic errors
status received from backends.

Signed-off-by: Yuri Benditovich <yuri.benditovich@janustech.com>
Message-id: 20190128200444.5128-2-yuri.benditovich@janustech.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/usb/hcd-xhci.c

index 8f1a01a..1a8fd96 100644 (file)
@@ -1571,6 +1571,11 @@ static void xhci_stall_ep(XHCITransfer *xfer)
     uint32_t err;
     XHCIStreamContext *sctx;
 
+    if (epctx->type == ET_ISO_IN || epctx->type == ET_ISO_OUT) {
+        /* never halt isoch endpoints, 4.10.2 */
+        return;
+    }
+
     if (epctx->nr_pstreams) {
         sctx = xhci_find_stream(epctx, xfer->streamid, &err);
         if (sctx == NULL) {