Re: [RFT PATCHv3 1/3] xhci: fix frame id calculation and checks for isoc URBs

Dylan Robinson <[email protected]>
Newsgroups org.kernel.vger.linux-usb
Message-ID <CA+Df+jdCbY23h+Bq+ehKbJWMvTtwQDAOLk+hw=Y8Ne9zhJ_GOw@mail.gmail.com>
On Thu, Aug 6, 2026 at 8:07 PM Mathias Nyman
<[email protected]> wrote:
> With the hardware ep ctx check we will set the frame_id of the late URB to
> point to the past, to the real time it was supposed to be played back.
> xHC hardware will then trigger a 'missed service event' for that TD as it
> was incapable of playing it at the correct time, and then fast forward with MSE
> until it finds a TD with a frame_id it can play, and play at the correct timeslot.
> Here we lost the late data but playback stays in sync, as isoc transfer are
> intended to work.

I want to make sure I'm following along correctly. This is only true
for host controllers that support CFC. On controllers without CFC,
continuations are always submitted with SIA, so the controller can't
reject expired TDs based on their Frame ID.

On Fri, Aug 7, 2026 at 12:48 PM Alan Stern <[email protected]> wrote:
> The point under discussion is really about what happens when an underrun
> occurs by accident -- for example, if the system is temporarily
> overloaded.  In this situation there are two logical choices of action
> if the class driver wants to keep the queue running: Keep the alignment
> of iso_packet_descriptors and (micro)frames as it was, which means
> assigning some new packets to times in the past, or forget about the old
> alignment and start fresh, which means assigning the next packet to the
> next available future time slot.  The URB_ISO_ASAP flag is how the
> driver communicates its choice to the HCD.

How is the first choice realized when the host controller doesn't support CFC?

Dylan Robinson
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.