diff options
author | Michael Brown | 2015-03-23 15:22:23 +0100 |
---|---|---|
committer | Michael Brown | 2015-03-23 16:21:35 +0100 |
commit | 661189eedef6d895a0b3b2c793cbdfba731bdc7d (patch) | |
tree | 74996d0b828735ab9fb3a263fa15fefbd5bdfd47 /src/drivers/usb | |
parent | [libprefix] Fix building on 64-bit FreeBSD 8.4 (diff) | |
download | ipxe-661189eedef6d895a0b3b2c793cbdfba731bdc7d.tar.gz ipxe-661189eedef6d895a0b3b2c793cbdfba731bdc7d.tar.xz ipxe-661189eedef6d895a0b3b2c793cbdfba731bdc7d.zip |
[xhci] Ring doorbell as part of endpoint reset
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>
Diffstat (limited to 'src/drivers/usb')
-rw-r--r-- | src/drivers/usb/xhci.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/drivers/usb/xhci.c b/src/drivers/usb/xhci.c index a71d1278..a940a73a 100644 --- a/src/drivers/usb/xhci.c +++ b/src/drivers/usb/xhci.c @@ -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; |