On Thu, May 19 2016, Changbin Du wrote: >> 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. I thought that was what was happening based on Felipe’s comment about avoiding memcpy. I looked at the code now and dunno what actually happens. >> 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 You mean fail when more data has been sent (i.e. drop the whole packet) or fail at entry to read() if the buffer is not aligned? > 3) drop the excess data, then print an warning message > > Which one do you prefer? I think f_fs should mimic whatever happens if unaligned request is queued on dwc3. As far as I understand, this is not 1. I’ll be travelling again on Friday so I’ll finish up the patch doing 1 so we will have a choice between 1 (my patch) and 3 (your patch). -- Best regards ミハウ “𝓶𝓲𝓷𝓪86” ナザレヴイツ «If at first you don’t succeed, give up skydiving» -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html