aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@linux.intel.com>2013-03-18 13:19:51 -0400
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2013-03-25 13:39:19 -0400
commita83d6755814e4614ba77e15d82796af0f695c6b8 (patch)
tree87f5586fabf26daaf5f32e67924c63f7b6fa9530 /drivers/usb
parent1c11a172cb30492f5f6a82c6e118fdcd9946c34f (diff)
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>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/xhci-ring.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 9652dae95942..1969c001b3f9 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2463,14 +2463,21 @@ static int handle_tx_event(struct xhci_hcd *xhci,
2463 * TD list. 2463 * TD list.
2464 */ 2464 */
2465 if (list_empty(&ep_ring->td_list)) { 2465 if (list_empty(&ep_ring->td_list)) {
2466 xhci_warn(xhci, "WARN Event TRB for slot %d ep %d " 2466 /*
2467 "with no TDs queued?\n", 2467 * A stopped endpoint may generate an extra completion
2468 TRB_TO_SLOT_ID(le32_to_cpu(event->flags)), 2468 * event if the device was suspended. Don't print
2469 ep_index); 2469 * warnings.
2470 xhci_dbg(xhci, "Event TRB with TRB type ID %u\n", 2470 */
2471 (le32_to_cpu(event->flags) & 2471 if (!(trb_comp_code == COMP_STOP ||
2472 TRB_TYPE_BITMASK)>>10); 2472 trb_comp_code == COMP_STOP_INVAL)) {
2473 xhci_print_trb_offsets(xhci, (union xhci_trb *) event); 2473 xhci_warn(xhci, "WARN Event TRB for slot %d ep %d with no TDs queued?\n",
2474 TRB_TO_SLOT_ID(le32_to_cpu(event->flags)),
2475 ep_index);
2476 xhci_dbg(xhci, "Event TRB with TRB type ID %u\n",
2477 (le32_to_cpu(event->flags) &
2478 TRB_TYPE_BITMASK)>>10);
2479 xhci_print_trb_offsets(xhci, (union xhci_trb *) event);
2480 }
2474 if (ep->skip) { 2481 if (ep->skip) {
2475 ep->skip = false; 2482 ep->skip = false;
2476 xhci_dbg(xhci, "td_list is empty while skip " 2483 xhci_dbg(xhci, "td_list is empty while skip "