mirror of https://gitee.com/openkylin/linux.git
greybus: es1/es2: set transfer flag to send a zero-length packet
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>
This commit is contained in:
parent
98676ca836
commit
977e209ab4
|
@ -216,6 +216,7 @@ static int message_send(struct greybus_host_device *hd, u16 cport_id,
|
|||
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) {
|
||||
|
|
|
@ -312,6 +312,7 @@ static int message_send(struct greybus_host_device *hd, u16 cport_id,
|
|||
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) {
|
||||
|
|
Loading…
Reference in New Issue