Greybus messages with a multiple size of 512B generate timeouts
(any other message size doesn't).
512B is exactly the packet size of a bulk out endpoint.
Hence USB device is expecting a short (< 512B)
or zero-length packet to finish the transfer,
which is never generated and causes the timeout.
Set the transfer flag to send a zero-length packet in this situation.
Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Reviewed-by: Patrick Titiano <ptitiano@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
usb_sndbulkpipe(udev, es1->cport_out_endpoint),
message->buffer, buffer_size,
cport_out_callback, message);
+ urb->transfer_flags |= URB_ZERO_PACKET;
gb_connection_push_timestamp(message->operation->connection);
retval = usb_submit_urb(urb, gfp_mask);
if (retval) {
es1->cport_out[bulk_ep_set].endpoint),
message->buffer, buffer_size,
cport_out_callback, message);
+ urb->transfer_flags |= URB_ZERO_PACKET;
gb_connection_push_timestamp(message->operation->connection);
retval = usb_submit_urb(urb, gfp_mask);
if (retval) {