From: Michal Pecio <michal.pecio@gmail.com>
To: Dylan Robinson <dylan_robinson@motu.com>
Cc: Mathias Nyman <mathias.nyman@linux.intel.com>,
linux-usb@vger.kernel.org, mathias.nyman@intel.com,
stern@rowland.harvard.edu
Subject: Re: [RFT PATCH] xhci: fix frame id calculation for isoc transfer
Date: Fri, 15 May 2026 06:32:10 +0200 [thread overview]
Message-ID: <20260515063210.4ed0a940.michal.pecio@gmail.com> (raw)
In-Reply-To: <CA+Df+jf79bnONyXUnf0_zAUrqNAVzy1zt9VCivbxYvkedfGHRQ@mail.gmail.com>
On Thu, 14 May 2026 17:16:35 -0400, Dylan Robinson wrote:
> On Wed, May 13, 2026 at 10:30 AM Mathias Nyman wrote:
> > v2 writes the TRB frame id field of the first TD of the first URB
> > for older non-CFC hosts as well. So urb->start_frame should be
> > quite accurate. Its probably more off if URB_ISO_ASAP is set.
>
> Testing this patch on a non-CFC host with a bInterval = 1 device, I
> can confirm that urb->start_frame is now accurately reported when
> URB_ISO_ASAP is not set.
>
> When URB_ISO_ASAP is set, urb->start_frame is slightly off as
> expected. For example, I observed urb->start_frame reporting 1645.0
> (frame.uframe), while the stream actually began at 1643.2.
>
> This seems good.
Did you try with short enough playback buffer to get occasional xHCI
ring underruns?
Is Frame ID still correct then?
> > Added last frame of urb < +895ms to v2
> >
> > But only for urbs mid stream, and only print a message if check
> > fails. queue it anyways
>
> Regarding the valid window check for mid-stream URBs, what is the
> concern with an URB extending beyond the current scheduling window?
MFINDEX overflows every 2 seconds and the HC may consider such URB
1.1s in the past and drop it with Missed Service Error.
> Since the controller only evaluates TDs as it advances through the
> transfer ring, isn't it only important that a TD's frame ID falls
> within the valid scheduling window at the time the host controller
> reaches it, rather than when the URB is submitted?
That's true, but the HC is allowed to look at the URB as soon as it
is submitted. The spec states that SW shall never do such things, so
HW is allowed to assume that SW doesn't and make the dumbest
assumptions, if this saves them implementation complexity somehow.
> Additionally, due to wrapping, and depending on the values of
> urb->number_of_packets and uinterval, I don't think this check will
> reliably detect when urb_end extends too far into the future. That
> said, I'm not sure this check is actually meaningful.
FWIW I have an implementation which checks it reliably, though it
doesn't support ESIT > 512ms to save a few lines of code.
> On 5/12/26 12:08, Michal Pecio wrote:
> > A particularly fascinating case is period > 895ms; it seems that
> > xHCI only allows submitting shortly before interval boundary, or
> > "SIA".
>
> For endpoints with ESIT greater than 895ms, wouldn't SIA become
> necessary to avoid ring underrun/overrun?
Not sure, and it's hard to test when most likely no such HW exists.
It's also unclear how much HW would support ESIT > MFINDEX period.
Regards,
Michal
next prev parent reply other threads:[~2026-05-15 4:32 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-04 21:25 [Bug 220748] New: usb: xhci_queue_isoc_tx_prepare ignore start_frame and always assumes URB_ISO_ASAP is set bugzilla-daemon
2025-11-05 8:40 ` [Bug 220748] " bugzilla-daemon
2025-11-05 8:48 ` bugzilla-daemon
2025-11-05 8:53 ` bugzilla-daemon
2025-11-05 9:06 ` bugzilla-daemon
2025-11-05 15:47 ` bugzilla-daemon
2025-11-05 18:28 ` bugzilla-daemon
2025-11-05 18:30 ` bugzilla-daemon
2025-11-05 20:16 ` bugzilla-daemon
2025-11-05 21:18 ` bugzilla-daemon
2025-11-06 3:52 ` bugzilla-daemon
2025-11-06 8:27 ` bugzilla-daemon
2025-11-06 8:35 ` bugzilla-daemon
2025-11-06 15:03 ` bugzilla-daemon
2025-11-08 10:33 ` bugzilla-daemon
2025-11-08 16:09 ` bugzilla-daemon
2025-11-10 10:23 ` bugzilla-daemon
2025-11-10 10:42 ` bugzilla-daemon
2026-05-04 23:53 ` bugzilla-daemon
2026-05-04 23:54 ` bugzilla-daemon
2026-05-05 1:14 ` bugzilla-daemon
2026-05-05 9:59 ` bugzilla-daemon
2026-05-05 17:09 ` bugzilla-daemon
2026-05-05 17:10 ` bugzilla-daemon
2026-05-05 17:10 ` bugzilla-daemon
2026-05-05 17:13 ` bugzilla-daemon
2026-05-06 13:32 ` bugzilla-daemon
2026-05-06 15:03 ` bugzilla-daemon
2026-05-07 2:38 ` Alan Stern
2026-05-07 16:17 ` Dylan Robinson
2026-05-07 17:24 ` Alan Stern
2026-05-07 21:16 ` Dylan Robinson
2026-05-08 3:02 ` Alan Stern
2026-05-08 17:20 ` Dylan Robinson
2026-05-09 1:25 ` Alan Stern
2026-05-09 22:12 ` Michal Pecio
2026-05-10 12:39 ` Dylan Robinson
2026-05-11 19:21 ` [RFT PATCH] xhci: fix frame id calculation for isoc transfer Mathias Nyman
2026-05-11 19:36 ` Mathias Nyman
2026-05-12 9:08 ` Michal Pecio
2026-05-13 14:30 ` Mathias Nyman
2026-05-13 14:35 ` [RFT PATCHv2 1/2] xhci: fix frame id calculation and checks for isoc URBs Mathias Nyman
2026-05-13 14:35 ` [RFT PATCHv2 2/2] xhci: Set frame ID field of isoc TRB when starting an isoch stream Mathias Nyman
2026-05-14 21:16 ` [RFT PATCH] xhci: fix frame id calculation for isoc transfer Dylan Robinson
2026-05-14 22:10 ` Dylan Robinson
2026-05-15 4:32 ` Michal Pecio [this message]
2026-05-15 18:13 ` Dylan Robinson
2026-05-07 21:54 ` [Bug 220748] usb: xhci_queue_isoc_tx_prepare ignore start_frame and always assumes URB_ISO_ASAP is set Michal Pecio
2026-05-08 3:09 ` Alan Stern
2026-05-08 9:41 ` Michal Pecio
2026-05-08 14:54 ` Alan Stern
2026-05-08 21:39 ` Dylan Robinson
2026-05-09 11:10 ` Michal Pecio
2026-05-09 20:18 ` Dylan Robinson
2026-05-11 19:15 ` bugzilla-daemon
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=20260515063210.4ed0a940.michal.pecio@gmail.com \
--to=michal.pecio@gmail.com \
--cc=dylan_robinson@motu.com \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
--cc=mathias.nyman@linux.intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.