diff options
author | Yuri Benditovich <yuri.benditovich@janustech.com> | 2019-01-28 20:05:07 +0000 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-01-30 06:47:52 +0100 |
commit | a587c832a3f1d6d47dce93bda52c80cfa163e7cf (patch) | |
tree | 38813ac6b9355dcf8e8638360b46a764d65786a7 /hw | |
parent | 75a49fc61ab32a341de00bae6295603f4a08f14e (diff) | |
download | qemu-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>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/usb/hcd-xhci.c | 5 |
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) { |