linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: bugzilla-daemon@kernel.org
To: linux-usb@vger.kernel.org
Subject: [Bug 218544] not enough bandwidth, synaptics hi-res audio duplex audio
Date: Fri, 08 Mar 2024 17:28:36 +0000	[thread overview]
Message-ID: <bug-218544-208809-jLXP7KsHZJ@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-218544-208809@https.bugzilla.kernel.org/>

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

--- Comment #15 from Alan Stern (stern@rowland.harvard.edu) ---
Some years ago I did try allocating interrupt transfers from the end of frame
backwards, but decided against it in the end -- I don't remember why.  It
certainly helps in your case, so maybe that decision should be reconsidered.

Maybe the reason was that the absence of FSTN nodes makes interrupt transfers
near the end of the frame less reliable.  If any unexpected delays should push
the transfer back a few hundred microseconds, there wouldn't be enough
complete-splits to guarantee it could finish correctly.  In the examples you
give above, 1-1.4 ep 81 and 1-1.1 ep 84 each have only one complete-split (only
one bit set in the high-order byte of the mask), whereas the spec says there
should be enough complete-splits for the entire LS/FS packet plus two extra.

snd-usb-audio using a smaller packet size for the output streams wouldn't help
the scheduling; the scheduler has to assume that each endpoint will use the
maximum packet size allowed (i.e., the maxpacket value).

The reason for scheduling isochronous transfers earlier than interrupt
transfers has to do with the way transaction translators in hubs behave.  I
forget the details (it's described in the USB-2 spec), but there's some
scenario in which they will lose data if an isochronous packet comes after an
interrupt packet in the same microframe.

Scheduling interrupt transfers late in the frame _is_ legal according to the
spec, so long as it is done properly.  And in theory the driver could rebalance
the schedule, changing which microframes are assigned to each endpoint, as new
endpoints are added.  But that would add another whole new level of complexity
to the driver and I never implemented it.  Besides, without FSTN nodes you
still wouldn't be able to get the full benefit.

-- 
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:[~2024-03-08 17:28 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-218544-208809@https.bugzilla.kernel.org/>
2024-03-01 15:19 ` [Bug 218544] not enough bandwidth, synaptics hi-res audio duplex audio bugzilla-daemon
2024-03-01 15:58 ` bugzilla-daemon
2024-03-01 16:20 ` bugzilla-daemon
2024-03-01 16:21 ` bugzilla-daemon
2024-03-01 16:48 ` bugzilla-daemon
2024-03-01 17:14 ` bugzilla-daemon
2024-03-01 19:09 ` bugzilla-daemon
2024-03-02 13:02 ` bugzilla-daemon
2024-03-02 15:34 ` bugzilla-daemon
2024-03-05 17:14 ` bugzilla-daemon
2024-03-06 20:37 ` bugzilla-daemon
2024-03-08 14:04 ` bugzilla-daemon
2024-03-08 15:22 ` bugzilla-daemon
2024-03-08 16:47 ` bugzilla-daemon
2024-03-08 17:28 ` bugzilla-daemon [this message]
2024-03-08 23:35 ` bugzilla-daemon
2024-03-15 12:50 ` bugzilla-daemon
2024-03-15 12:50 ` 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-218544-208809-jLXP7KsHZJ@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;
as well as URLs for NNTP newsgroup(s).