Browse Source

[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>
tags/v1.20.1
Michael Brown 10 years ago
parent
commit
661189eede
1 changed files with 3 additions and 0 deletions
  1. 3
    0
      src/drivers/usb/xhci.c

+ 3
- 0
src/drivers/usb/xhci.c View File

2437
 	if ( ( rc = xhci_set_tr_dequeue_pointer ( xhci, slot, endpoint ) ) != 0)
2437
 	if ( ( rc = xhci_set_tr_dequeue_pointer ( xhci, slot, endpoint ) ) != 0)
2438
 		return rc;
2438
 		return rc;
2439
 
2439
 
2440
+	/* Ring doorbell to resume processing */
2441
+	xhci_doorbell ( &endpoint->ring );
2442
+
2440
 	DBGC ( xhci, "XHCI %p slot %d ctx %d reset\n",
2443
 	DBGC ( xhci, "XHCI %p slot %d ctx %d reset\n",
2441
 	       xhci, slot->id, endpoint->ctx );
2444
 	       xhci, slot->id, endpoint->ctx );
2442
 	return 0;
2445
 	return 0;

Loading…
Cancel
Save