On Wed, Apr 19, 2023 at 09:49:35PM +0000, Thinh Nguyen wrote: > By the usb spec, for IN direction, if there's no data available and the > host requests for data, then the device will send a zero-length data > packet. I'm not aware of any such requirement in the USB-2 spec. The closest I can find is in section 5.6.4: An isochronous IN endpoint must return a zero-length packet whenever data is requested at a faster interval than the specified interval and data is not available. But this specifically refers only to situations where the host asks for isochonous data more frequently than the endpoint descriptor's bInterval describes. > This is what the dwc3 controller will do. So regardless whether > you prepare and queue a 0-length request or not, the host will receive > it. Even so, whether the function driver submits these 0-length isochronous requests makes a difference in terms of filling the slots in the schedule and preventing later requests from becoming stale. Alan Stern