Commit 7c79d094 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Greg Kroah-Hartman

USB: usbtest: use URB_ZERO_PACKET for BULK-OUT transfers

Executing
| testusb -a -c 1 -t 3 -v 421 -s 2048

does not complete on the gadget side.
g_zero enqueues a 4096 bytes long buffer. The host sends 2048bytes which
is a multiple of wMaxPacketSize (either 64 or 512 bytes). The host is
done with sending data but the gadget waits for more.
Since the protocol does not include transfer-length-field sending a
terminating zero packet seems the only way out.
Reviewed-by: default avatarFelipe Balbi <balbi@ti.com>
Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 39eb4ed5
...@@ -359,8 +359,10 @@ static int simple_io( ...@@ -359,8 +359,10 @@ static int simple_io(
urb->context = &completion; urb->context = &completion;
while (retval == 0 && iterations-- > 0) { while (retval == 0 && iterations-- > 0) {
init_completion(&completion); init_completion(&completion);
if (usb_pipeout(urb->pipe)) if (usb_pipeout(urb->pipe)) {
simple_fill_buf(urb); simple_fill_buf(urb);
urb->transfer_flags |= URB_ZERO_PACKET;
}
retval = usb_submit_urb(urb, GFP_KERNEL); retval = usb_submit_urb(urb, GFP_KERNEL);
if (retval != 0) if (retval != 0)
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment