Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ecf3701c authored by Thomas Pugliese's avatar Thomas Pugliese Committed by Greg Kroah-Hartman
Browse files

usb: wusbcore: read actual_length bytes isoc in segments



Use the iso_frame_desc.actual_length field instead of length when
reading isoc in data segments from the HWA.  This fixes a case where the
isoc in read URB would never complete because it expected the HWA to
send more data than it actually did.  When this happened the URB would
be stuck in the driver preventing module unload and clean shutdown.

Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4659a245
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2159,7 +2159,7 @@ static void __wa_populate_buf_in_urb_isoc(struct wahc *wa, struct wa_xfer *xfer,
	wa->buf_in_urb->transfer_dma = xfer->urb->transfer_dma +
		xfer->urb->iso_frame_desc[curr_iso_frame].offset;
	wa->buf_in_urb->transfer_buffer_length =
		xfer->urb->iso_frame_desc[curr_iso_frame].length;
		xfer->urb->iso_frame_desc[curr_iso_frame].actual_length;
	wa->buf_in_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
	wa->buf_in_urb->transfer_buffer = NULL;
	wa->buf_in_urb->sg = NULL;