diff options
Diffstat (limited to 'drivers/usb/host/xhci-ring.c')
-rw-r--r-- | drivers/usb/host/xhci-ring.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 85d7e8f2085e..b520b37c0f36 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c | |||
@@ -578,6 +578,8 @@ static void handle_stopped_endpoint(struct xhci_hcd *xhci, | |||
578 | /* Otherwise just ring the doorbell to restart the ring */ | 578 | /* Otherwise just ring the doorbell to restart the ring */ |
579 | ring_ep_doorbell(xhci, slot_id, ep_index); | 579 | ring_ep_doorbell(xhci, slot_id, ep_index); |
580 | } | 580 | } |
581 | ep->stopped_td = NULL; | ||
582 | ep->stopped_trb = NULL; | ||
581 | 583 | ||
582 | /* | 584 | /* |
583 | * Drop the lock and complete the URBs in the cancelled TD list. | 585 | * Drop the lock and complete the URBs in the cancelled TD list. |
@@ -1061,8 +1063,13 @@ static void xhci_cleanup_halted_endpoint(struct xhci_hcd *xhci, | |||
1061 | ep->ep_state |= EP_HALTED; | 1063 | ep->ep_state |= EP_HALTED; |
1062 | ep->stopped_td = td; | 1064 | ep->stopped_td = td; |
1063 | ep->stopped_trb = event_trb; | 1065 | ep->stopped_trb = event_trb; |
1066 | |||
1064 | xhci_queue_reset_ep(xhci, slot_id, ep_index); | 1067 | xhci_queue_reset_ep(xhci, slot_id, ep_index); |
1065 | xhci_cleanup_stalled_ring(xhci, td->urb->dev, ep_index); | 1068 | xhci_cleanup_stalled_ring(xhci, td->urb->dev, ep_index); |
1069 | |||
1070 | ep->stopped_td = NULL; | ||
1071 | ep->stopped_trb = NULL; | ||
1072 | |||
1066 | xhci_ring_cmd_db(xhci); | 1073 | xhci_ring_cmd_db(xhci); |
1067 | } | 1074 | } |
1068 | 1075 | ||