On Thu, Aug 20, 2015 at 04:58:13PM -0400, Alan Stern wrote: > On Thu, 20 Aug 2015, Felipe Balbi wrote: > > > > > Doesn't Peter need to cope with differentiating protocol vs non-protocol > > > > stalls ? > > > > > > Those matter only for ep0, not for bulk/interrupt. > > > > huh ? usbtest send SetFeature(HALT) for the bulk endpoint, right ? > > That's what Peter's UDC driver is missing. It's this special case of > > halting the endpoint when the host asks it to regardless of having > > queued struct usb_requests or not. > > Yes, that's what I said. Peter's UDC driver doesn't handle halts for > bulk endpoints properly. But the difference between protocol and > functional (or non-protocol) stalls matters only for ep0, not for > bulk/interrupt, so it's not relevant to Peter's problem. > Thanks, Alan and Felipe. My problem should be the chipidea udc driver does not support functional stall well, it fixes the handling between functional and protocol stall. My understanding for these two stalls: - Functional stall, the host stalls the endpoints through SET_FEATURE by ep0, the ep0 does not recommend to support functional stall from the spec. The device should always set stall for this endpoint, and return success for it. - Protocol stall, if the endpoint doesn't support one request, it can stall itself. If there is an IN request on this endpoint, it should not do stall, and return error. -- Best Regards, Peter Chen -- 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