Linux USB
 help / color / mirror / Atom feed
From: bugzilla-daemon@kernel.org
To: linux-usb@vger.kernel.org
Subject: [Bug 220748] usb: xhci_queue_isoc_tx_prepare ignore start_frame and always assumes URB_ISO_ASAP is set
Date: Tue, 05 May 2026 17:13:44 +0000	[thread overview]
Message-ID: <bug-220748-208809-95x1rD4M1d@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-220748-208809@https.bugzilla.kernel.org/>

https://bugzilla.kernel.org/show_bug.cgi?id=220748

--- Comment #25 from Nicola Lunghi (nick83ola@gmail.com) ---
Subject: [PATCH 0/2] ALSA: usb-audio: stream restart on isochronous gap for
MOTU AVB devices

---

MOTU AVB devices (USB ID 0x07fd:0x0005, including the 1248, 624, 8A, 8M,
16A and UltraLite AVB) cannot recover from a gap in the isochronous OUT
stream. Once a service interval is missed, the device's internal channel
demultiplexer loses synchronization and subsequent audio is routed to the
wrong output channels. The device remains in this state until the alternate
setting is toggled: set to 0, wait, then re-enable it.

This behaviour was confirmed by Dylan Robinson from MOTU in bugzilla
comment #20: "once a transfer is sent in a service interval (zero-length
or otherwise), there must be a transfer in every subsequent service
interval. If, for any reason, a service interval is missed, the alternate
setting must be toggled back to zero and then re-enabled, and the stream
restarted."

This series introduces QUIRK_FLAG_STREAM_RESTART_ON_GAP for devices with
this requirement. The snd-usb-audio driver already receives -EXDEV on
isochronous descriptors when xhci-hcd misses a service interval, providing
a reliable gap indication regardless of controller type. When the flag is
set, retire_playback_urb() checks for this condition and schedules a
workqueue item to perform the altsetting reset and signal an XRUN to
userspace. Normal ALSA recovery then calls snd_pcm_prepare(), which
executes the interface reset via snd_usb_endpoint_prepare() before
restarting URB submission.

Patch 1 adds a small helper in endpoint.c to encapsulate marking an
endpoint for a full interface reset, needed because struct snd_usb_iface_ref
is not visible outside that translation unit.

Patch 2 implements the gap detection and recovery mechanism, and registers
the quirk for USB ID 0x07fd:0x0005.

This series complements a separate xHCI patch series that addresses the
root causes of isochronous scheduling gaps on CFC-capable controllers.
That series reduces the frequency of gaps; this series handles recovery
when they do occur.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220748

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.

  parent reply	other threads:[~2026-05-05 17:13 UTC|newest]

Thread overview: 47+ 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 [this message]
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-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=bug-220748-208809-95x1rD4M1d@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /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