mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 04:48:04 +09:00
xhci: Fix isoc TD encoding.
commit760973d2a7upstream. An isochronous TD is comprised of one isochronous TRB chained to zero or more normal TRBs. Only the isoc TRB has the TBC and TLBPC fields. The normal TRBs must set those fields to zeroes. The code was setting the TBC and TLBPC fields for both isoc and normal TRBs. Fix this. This should be backported to stable kernels as old as 3.0, that contain the commitb61d378f2d" xhci 1.0: Set transfer burst last packet count field." Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
dac9424112
commit
85b9c6b4d0
@@ -3613,9 +3613,11 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
|
||||
td = urb_priv->td[i];
|
||||
for (j = 0; j < trbs_per_td; j++) {
|
||||
u32 remainder = 0;
|
||||
field = TRB_TBC(burst_count) | TRB_TLBPC(residue);
|
||||
field = 0;
|
||||
|
||||
if (first_trb) {
|
||||
field = TRB_TBC(burst_count) |
|
||||
TRB_TLBPC(residue);
|
||||
/* Queue the isoc TRB */
|
||||
field |= TRB_TYPE(TRB_ISOC);
|
||||
/* Assume URB_ISO_ASAP is set */
|
||||
|
||||
Reference in New Issue
Block a user