From f861a8596a52c9f0c0b0f0fa90d4c005a74373b9 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 17 Jun 2019 19:16:11 -0400 Subject: [PATCH] XHCI: Set the ENT bit on the Status stage TRB for Control transfers. Otherwise, it may deschedule this pipe without evaluating the Event Data TRB and generating the interrupt. Should fix the "slowness" issue of #15115. --- src/add-ons/kernel/busses/usb/xhci.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp b/src/add-ons/kernel/busses/usb/xhci.cpp index 6f365e5954..eefdcd688d 100644 --- a/src/add-ons/kernel/busses/usb/xhci.cpp +++ b/src/add-ons/kernel/busses/usb/xhci.cpp @@ -761,7 +761,7 @@ XHCI::SubmitControlRequest(Transfer *transfer) descriptor->trbs[index].status = TRB_2_IRQ(0); descriptor->trbs[index].flags = TRB_3_TYPE(TRB_TYPE_STATUS_STAGE) | ((directionIn && requestData->Length > 0) ? 0 : TRB_3_DIR_IN) - | TRB_3_CHAIN_BIT | TRB_3_CYCLE_BIT; + | TRB_3_CHAIN_BIT | TRB_3_ENT_BIT | TRB_3_CYCLE_BIT; // Status Stage is an OUT transfer when the device is sending data // (XHCI 1.2 ยง 4.11.2.2 Table 4-7 p213), and the CHAIN bit must be // set when using an Event Data TRB (as _LinkDescriptorForPipe does)