Revert "xhci: don't finish a TD if we get a short-transfer event mid TD"
authorMathias Nyman <mathias.nyman@linux.intel.com>
Tue, 26 Jan 2016 15:50:04 +0000 (17:50 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 27 Feb 2016 14:28:46 +0000 (14:28 +0000)
commitd3444681a03ec1150b1ca495b4667089f4b6f5e8
tree20ad8bdaac2a99044ac18ee0f0135aa81441a3f8
parent96c6b772f57fa832c1d6f3fd9ba1a70ec0a0d4a6
Revert "xhci: don't finish a TD if we get a short-transfer event mid TD"

commit a6835090716a85f2297668ba593bd00e1051e662 upstream.

This reverts commit e210c422b6fd ("xhci: don't finish a TD if we get a
short transfer event mid TD")

Turns out that most host controllers do not follow the xHCI specs and never
send the second event for the last TRB in the TD if there was a short event
mid-TD.

Returning the URB directly after the first short-transfer event is far
better than never returning the URB. (class drivers usually timeout
after 30sec). For the hosts that do send the second event we will go
back to treating it as misplaced event and print an error message for it.

The origial patch was sent to stable kernels and needs to be reverted from
there as well

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/usb/host/xhci-ring.c