On Fri, 3 Jul 2015, Peter Chen wrote: > Thanks, I think I understand it now. > > Maybe only the case A like below commit needs zero-length packet. > > usb: chipidea: udc: Disable auto ZLP generation on ep0 > 953c66469735aed8d2ada639a72b150f01dae605 Case A (as described in that commit) definitely needs a ZLP. The packet could be generated by the software or by the hardware. But not by both -- then there would be two ZLPs! > > Here is a simplified answer. If a transfer requires more than one qTD, > > then all the qTDs but the last one will have their Alternate Next qTD > > Pointers set to a special value. The last qTD doesn't need this. > > > > Since ehci-hcd never uses more than one qTD for a control transfer data > > stage, the issue doesn't comes up. But if you look at how ehci-hcd > > handles large bulk transfers, you will see what I mean. > > The case A I list above, it should uses more than one qTD, right? In case A, wLength is 255 bytes. That easily fits into one qTD. In fact, an EHCI qTD can handle up to 20 KB. Alan Stern -- 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