On Mon, 14 Sep 2015, Igor Kotrasinski wrote:
> currently, when a zlp flag is set and an urb/usb_request
> buffer is filled without a short packet, transfer() leaves
> its status at -EINPROGRESS and does not rescan for short
> packet.
>
> In a scenario where ep.maxpacket bytes are copied,
> URB_ZERO_PACKET is set, urb buffer is filled and usb_request
> buffer is not, transfer() returns with an urb with
> -EINPROGRESS status, which dummy_hcd treats as incomplete
> transfer.
>
> Check for zlp and rescan appropriately.
>
> Signed-off-by: Igor Kotrasinski <[email protected]>
> ---
> drivers/usb/gadget/udc/dummy_hcd.c | 24 ++++++++++++++++--------
> 1 file changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/usb/gadget/udc/dummy_hcd.c
> b/drivers/usb/gadget/udc/dummy_hcd.c
> index 181112c..59be03e 100644
> --- a/drivers/usb/gadget/udc/dummy_hcd.c
> +++ b/drivers/usb/gadget/udc/dummy_hcd.c
> @@ -1364,15 +1364,23 @@ top:
> req->req.status = 0;
> }
>
> - /* many requests terminate without a short packet */
> + /* many requests terminate without a short packet.
> + * send a zlp if demanded by flags.
> + */
The style we are using now for multi-line comments is like this:
/*
* blah, blah, blah
* blah, blah, blah
*/
I realize that's not how the existing comments look, but we try to
enforce this style for all new comments.
> } else {
> - if (req->req.length == req->req.actual
> - && !req->req.zero)
> - req->req.status = 0;
> - if (urb->transfer_buffer_length == urb->actual_length
> - && !(urb->transfer_flags
> - & URB_ZERO_PACKET))
> - *status = 0;
> + if (req->req.length == req->req.actual) {
> + if (req->req.zero && to_host)
> + rescan = 1;
> + else
> + req->req.status = 0;
> + }
> + if (urb->transfer_buffer_length == urb->actual_length) {
> + if (urb->transfer_flags & URB_ZERO_PACKET &&
> + !to_host)
> + rescan = 1;
> + else
> + *status = 0;
> + }
> }
>
> /* device side completion --> continuable */
Apart from that style issue,
Acked-by: Alan Stern <[email protected]>
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html