RE: [PATCH] usb: gadget: f_fs: report error if excess data received

From: Du, Changbin
Date: Wed May 18 2016 - 22:54:30 EST


> On Wed, May 18 2016, Felipe Balbi wrote:
> > we've been through this before. This needs to be done at the gadget
> > layer. Gadget driver can over-allocate ahead of time if
> > gadget->quirk_ep_out_aligned_size is true, then we avoid memcpy() at
> > the UDC driver level.
>
> Right, all right, so letâs look at it from a regular USB function point
> of view. If a USB function allocates a request which is not aligned,
> UDC will align the buffer and *drop* excess data. Seeing how ugly
>
Do you mean UDC driver align the buffer? I searched the code, currently
only DWC3 needs buffer size to be aligned to MaxPacketSize on ep out.
And the align is done in f_fs driver.

> f_fsâs code is becoming, Iâm now leaning to letting to f_fs do the same
> thing: if user space makes an unaligned read, f_fs aligns the buffer and
> then drops excess data.
>
> Any arguments for f_fs to not drop the data apply to UDC, so they should
> behave identically.
>
I'd prefer fail the request at all, and it is better done in HW. Because per the
USB Spec that device can return NAK if a function was unable to accept data
From the host. the DWC3 has not been design as this, if software fail the
transfer, it is a little weird for host.

So, now we have 3 choices:
1) buffer the excess data
2) fail the transfer
3) drop the excess data, then print an warning message

Which one do you prefer?

> --
> Best regards
> ããã âðððð86â ãããããã
> ÂIf at first you donât succeed, give up skydivingÂ

Best Regards,
Du, Changbin