aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Benditovich <yuri.benditovich@janustech.com>2019-01-28 20:05:07 +0000
committerGerd Hoffmann <kraxel@redhat.com>2019-01-30 06:47:52 +0100
commita587c832a3f1d6d47dce93bda52c80cfa163e7cf (patch)
tree38813ac6b9355dcf8e8638360b46a764d65786a7
parent75a49fc61ab32a341de00bae6295603f4a08f14e (diff)
downloadqemu-a587c832a3f1d6d47dce93bda52c80cfa163e7cf.zip
qemu-a587c832a3f1d6d47dce93bda52c80cfa163e7cf.tar.gz
qemu-a587c832a3f1d6d47dce93bda52c80cfa163e7cf.tar.bz2
usb: XHCI shall not halt isochronous endpoints
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>
-rw-r--r--hw/usb/hcd-xhci.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 8f1a01a..1a8fd96 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -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) {