|
@@ -1912,6 +1912,8 @@ static void xhci_kick_epctx(XHCIEPContext *epctx, unsigned int streamid)
|
|
|
}
|
|
|
assert(!xfer->running_retry);
|
|
|
if (xfer->complete) {
|
|
|
+ /* update ring dequeue ptr */
|
|
|
+ xhci_set_ep_state(xhci, epctx, stctx, epctx->state);
|
|
|
xhci_ep_free_xfer(epctx->retry);
|
|
|
}
|
|
|
epctx->retry = NULL;
|
|
@@ -1962,6 +1964,8 @@ static void xhci_kick_epctx(XHCIEPContext *epctx, unsigned int streamid)
|
|
|
xhci_fire_transfer(xhci, xfer, epctx);
|
|
|
}
|
|
|
if (xfer->complete) {
|
|
|
+ /* update ring dequeue ptr */
|
|
|
+ xhci_set_ep_state(xhci, epctx, stctx, epctx->state);
|
|
|
xhci_ep_free_xfer(xfer);
|
|
|
xfer = NULL;
|
|
|
}
|
|
@@ -1979,8 +1983,6 @@ static void xhci_kick_epctx(XHCIEPContext *epctx, unsigned int streamid)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- /* update ring dequeue ptr */
|
|
|
- xhci_set_ep_state(xhci, epctx, stctx, epctx->state);
|
|
|
epctx->kick_active--;
|
|
|
|
|
|
ep = xhci_epid_to_usbep(epctx);
|