From: Michal Pecio <michal.pecio@gmail.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: "Thinh Nguyen" <Thinh.Nguyen@synopsys.com>,
"Oliver Neukum" <oneukum@suse.com>, "Bjørn Mork" <bjorn@mork.no>,
"USB list" <linux-usb@vger.kernel.org>
Subject: Re: correctly handling EPROTO
Date: Mon, 30 Mar 2026 14:36:00 +0200 [thread overview]
Message-ID: <20260330143600.0594f0da.michal.pecio@gmail.com> (raw)
In-Reply-To: <ba68bdbb-9ffd-47d3-8915-9e2e40fd6adb@rowland.harvard.edu>
On Sun, 29 Mar 2026 21:32:26 -0400, Alan Stern wrote:
> A lot of video devices use the uvcvideo driver, which (as far as I
> know) relies entirely on isochronous transfers for its streaming data.
UVC allows both isoc and bulk transport. I have one bulk device and I
found that if I randomly change urb->status to -EPROTO, the URB is not
resubmitted but (on xHCI) the endpoint keeps going, until it stops after
5 errors (no URBs left). EHCI would presumably never restart at all.
I suppose changing this might be seen as regression by some, because
the effect of each EPROTO is just a few lost frames, at least in my
very brief testing. I suppose uvcvideo could be patched to clear halt
and resubmit, if this trivial "lossy recovery" is desired.
I also got a chance to see SuperSpeed sequence mismatch thanks to other
bug (xhci_endpoint_reset() called by usb_clear_halt() may do nothing).
The effect is EPROTO, consistent with my prediction based on USB3 spec,
except that on one AMD chipset the URB never completes. Weird.
If mismatch is caused by xhci-hcd clearing only the host side (rather
than the device being cleared as in the bug above) then it seems that
resubmitting without clear halt will never fix a SuperSpeed endpoint.
Regards,
Michal
next prev parent reply other threads:[~2026-03-30 12:36 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-12 13:55 correctly handling EPROTO Oliver Neukum
2026-03-12 14:21 ` Alan Stern
2026-03-12 15:57 ` Oliver Neukum
2026-03-13 7:53 ` Michal Pecio
2026-03-13 10:33 ` Oliver Neukum
2026-03-13 15:28 ` Alan Stern
2026-03-13 22:45 ` Thinh Nguyen
2026-03-14 2:39 ` Alan Stern
2026-03-16 12:58 ` Oliver Neukum
2026-03-16 14:02 ` Alan Stern
2026-03-16 14:47 ` Oliver Neukum
2026-03-16 17:33 ` Alan Stern
2026-03-16 19:32 ` Oliver Neukum
2026-03-17 9:05 ` Mathias Nyman
2026-03-17 14:31 ` Alan Stern
2026-03-17 16:20 ` Oliver Neukum
2026-03-17 18:03 ` Alan Stern
2026-03-18 9:54 ` Oliver Neukum
2026-03-18 17:46 ` Alan Stern
2026-03-18 21:38 ` Michal Pecio
2026-03-18 23:59 ` Thinh Nguyen
2026-03-19 2:07 ` Alan Stern
2026-03-19 23:16 ` Thinh Nguyen
2026-03-20 9:58 ` Michal Pecio
2026-03-20 16:20 ` Alan Stern
2026-03-20 17:49 ` Oliver Neukum
2026-03-21 2:14 ` Thinh Nguyen
2026-03-21 5:54 ` Michal Pecio
2026-03-21 15:58 ` Alan Stern
2026-03-28 21:22 ` Michal Pecio
2026-03-29 1:52 ` Alan Stern
2026-03-29 16:46 ` Michal Pecio
2026-03-30 1:32 ` Alan Stern
2026-03-30 12:36 ` Michal Pecio [this message]
2026-03-23 10:26 ` Oliver Neukum
2026-03-24 1:06 ` Thinh Nguyen
2026-03-24 9:28 ` Oliver Neukum
2026-03-24 13:25 ` Alan Stern
2026-03-25 1:44 ` Thinh Nguyen
2026-03-19 1:56 ` Alan Stern
2026-03-19 8:40 ` Mathias Nyman
2026-03-19 23:34 ` Thinh Nguyen
2026-03-19 8:55 ` Michal Pecio
2026-03-19 14:24 ` Alan Stern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260330143600.0594f0da.michal.pecio@gmail.com \
--to=michal.pecio@gmail.com \
--cc=Thinh.Nguyen@synopsys.com \
--cc=bjorn@mork.no \
--cc=linux-usb@vger.kernel.org \
--cc=oneukum@suse.com \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox