]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[xhci] Ring doorbell as part of endpoint reset
authorMichael Brown <mcb30@ipxe.org>
Mon, 23 Mar 2015 14:22:23 +0000 (14:22 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 23 Mar 2015 15:21:35 +0000 (15:21 +0000)
The endpoint may already have enqueued TRBs at the time that
xhci_endpoint_reset() is called.  Ring the doorbell to resume
processing these TRBs immediately, rather than waiting until the next
call to xhci_endpoint_message() or xhci_endpoint_stream().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/usb/xhci.c

index a71d12788d532d3373b84e151fbca56ae8468491..a940a73a5b1cb52d2f98a26804555c06181b1477 100644 (file)
@@ -2437,6 +2437,9 @@ static int xhci_endpoint_reset ( struct usb_endpoint *ep ) {
        if ( ( rc = xhci_set_tr_dequeue_pointer ( xhci, slot, endpoint ) ) != 0)
                return rc;
 
+       /* Ring doorbell to resume processing */
+       xhci_doorbell ( &endpoint->ring );
+
        DBGC ( xhci, "XHCI %p slot %d ctx %d reset\n",
               xhci, slot->id, endpoint->ctx );
        return 0;