On Fri, Apr 05, 2024 at 09:44:56AM +0200, Michael Grzeschik wrote: > Right now after one transfer was completed with EXDEV the currently > encoded frame will get the UVC_STREAM_ERR tag attached. Since the > complete and encode path are handling separate requests from different > threads, there is no direct correspondence between the missed transfer > of one request and the currently encoded request which might already > belong to an completely different frame. > > When queueing requests into the hardware by calling ep_queue the > underlying ringbuffer of the usb driver will be filled. However when > one of these requests will have some issue while transfer the hardware > will trigger an interrupt but will continue transferring the pending > requests in the ringbuffer. This interrupt-latency will make it > impossible to react in time to tag the fully enqueued frame with the > UVC_STREAM_ERR in the header. > > This patch is also addressing this particular issue by delaying the > transmit of the EOF/ERR tagged header by waiting for the last enqueued > buffer of the frame to be completed. This way it is possible to react to > send the EOF/ERR tag depending on the whole frame transfer status. > > Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx> > --- > Changes in v2: > - removed unnecessary uvc_gadget_errorcheck_param module parameter > - Link to v1: https://lore.kernel.org/r/20240324-uvc-gadget-errorcheck-v1-1-5538c57bbeba@xxxxxxxxxxxxxx > --- > drivers/usb/gadget/function/uvc.h | 2 + > drivers/usb/gadget/function/uvc_video.c | 69 ++++++++++++++++++++++++++++----- > 2 files changed, 61 insertions(+), 10 deletions(-) Same here, can you rebase and resubmit if still needed? thanks, greg k-h