37 lines
1.3 KiB
Diff
37 lines
1.3 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Sat, 02 Jan 2016 03:03:27 +0000
|
|
Subject: Revert "xhci: don't finish a TD if we get a short transfer event mid TD"
|
|
Bug-Debian: https://bugs.debian.org/808602
|
|
Bug-Debian: https://bugs.debian.org/808953
|
|
|
|
This reverts commit e210c422b6fdd2dc123bedc588f399aefd8bf9de. It
|
|
caused serious regressions as referenced above.
|
|
|
|
---
|
|
--- a/drivers/usb/host/xhci-ring.c
|
|
+++ b/drivers/usb/host/xhci-ring.c
|
|
@@ -2192,10 +2192,6 @@ static int process_bulk_intr_td(struct x
|
|
}
|
|
/* Fast path - was this the last TRB in the TD for this URB? */
|
|
} else if (event_trb == td->last_trb) {
|
|
- if (td->urb_length_set && trb_comp_code == COMP_SHORT_TX)
|
|
- return finish_td(xhci, td, event_trb, event, ep,
|
|
- status, false);
|
|
-
|
|
if (EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) != 0) {
|
|
td->urb->actual_length =
|
|
td->urb->transfer_buffer_length -
|
|
@@ -2247,12 +2243,6 @@ static int process_bulk_intr_td(struct x
|
|
td->urb->actual_length +=
|
|
TRB_LEN(le32_to_cpu(cur_trb->generic.field[2])) -
|
|
EVENT_TRB_LEN(le32_to_cpu(event->transfer_len));
|
|
-
|
|
- if (trb_comp_code == COMP_SHORT_TX) {
|
|
- xhci_dbg(xhci, "mid bulk/intr SP, wait for last TRB event\n");
|
|
- td->urb_length_set = true;
|
|
- return 0;
|
|
- }
|
|
}
|
|
|
|
return finish_td(xhci, td, event_trb, event, ep, status, false);
|