On Wed, 7 Mar 2007, Pandita, Vikram wrote:

> Alan
>  If the peripheral driver is to decide to send a ZLP or not based on the
> length of data transfer, then the API given to Gadget driver of req.zero
> is redundant.

Yes, it is redundant.  That doesn't mean it is bad.  Lots of little 
optimizations are redundant, and this is one of them.

For example, consider that (++x) means the same thing as (x += 1).  So 
prefix ++ is redundant.  That doesn't make it bad.

> My understanding is that the Gadget driver should respect the API and
> set the req.zero responsibly and hence the following fix suggested in
> Gadget Zero. Else the zero flag can be removed?

I don't know what you mean by "responsibly".  The gadget driver can set
req.zero whenever it wants to.  The peripheral controller driver then has
to send an extra zero-length packet if and only if req.length is > 0 and
is an exact multiple of the maxpacket size.  What's wrong with that?

> Signed-off-by: Vikram Pandita <[EMAIL PROTECTED]>
> ---
> diff -purN a/drivers/usb/gadget/zero.c b/drivers/usb/gadget/zero.c
> --- a/drivers/usb/gadget/zero.c       2007-02-02 18:33:34.000000000 +0530
> +++ b/drivers/usb/gadget/zero.c       2007-02-07 17:28:47.000000000 +0530
> @@ -1072,7 +1072,8 @@ unknown:
>       /* respond with data transfer before status phase? */
>       if (value >= 0) {
>               req->length = value;
> -             req->zero = value < w_length;
> +             req->zero = value < w_length &&
> +                             (value % gadget->ep0->maxpacket) == 0;
>               value = usb_ep_queue (gadget->ep0, req, GFP_ATOMIC);
>               if (value < 0) {
>                       DBG (dev, "ep_queue --> %d\n", value);

This patch is bad.  It adds extra code for no reason.

If you think the "zero" flag should be removed, try re-writing this
routine without it.  You will have to add an awful lot of additional code.

Alan Stern


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to