xhci: Don't warn on empty ring for suspended devices.
When a device attached to the roothub is suspended, the endpoint rings are stopped. The host may generate a completion event with the completion code set to 'Stopped' or 'Stopped Invalid' when the ring is halted. The current xHCI code prints a warning in that case, which can be really annoying if the USB device is coming into and out of suspend. Remove the unnecessary warning. Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Tested-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
@@ -2463,14 +2463,21 @@ static int handle_tx_event(struct xhci_hcd *xhci,
|
|||||||
* TD list.
|
* TD list.
|
||||||
*/
|
*/
|
||||||
if (list_empty(&ep_ring->td_list)) {
|
if (list_empty(&ep_ring->td_list)) {
|
||||||
xhci_warn(xhci, "WARN Event TRB for slot %d ep %d "
|
/*
|
||||||
"with no TDs queued?\n",
|
* A stopped endpoint may generate an extra completion
|
||||||
TRB_TO_SLOT_ID(le32_to_cpu(event->flags)),
|
* event if the device was suspended. Don't print
|
||||||
ep_index);
|
* warnings.
|
||||||
xhci_dbg(xhci, "Event TRB with TRB type ID %u\n",
|
*/
|
||||||
(le32_to_cpu(event->flags) &
|
if (!(trb_comp_code == COMP_STOP ||
|
||||||
TRB_TYPE_BITMASK)>>10);
|
trb_comp_code == COMP_STOP_INVAL)) {
|
||||||
xhci_print_trb_offsets(xhci, (union xhci_trb *) event);
|
xhci_warn(xhci, "WARN Event TRB for slot %d ep %d with no TDs queued?\n",
|
||||||
|
TRB_TO_SLOT_ID(le32_to_cpu(event->flags)),
|
||||||
|
ep_index);
|
||||||
|
xhci_dbg(xhci, "Event TRB with TRB type ID %u\n",
|
||||||
|
(le32_to_cpu(event->flags) &
|
||||||
|
TRB_TYPE_BITMASK)>>10);
|
||||||
|
xhci_print_trb_offsets(xhci, (union xhci_trb *) event);
|
||||||
|
}
|
||||||
if (ep->skip) {
|
if (ep->skip) {
|
||||||
ep->skip = false;
|
ep->skip = false;
|
||||||
xhci_dbg(xhci, "td_list is empty while skip "
|
xhci_dbg(xhci, "td_list is empty while skip "
|
||||||
|
Reference in New Issue
Block a user