|| ||"Christopher Montgomery" <email@example.com>|
|| ||linux-usb-devel <firstname.lastname@example.org>|
|| ||[PATCH 0/15] ehci-hcd: full-featured EHCI
|| ||Tue, 26 Sep 2006 23:32:34 -0400|
This set of patches implements abstracted budgeting logic for the ehci
scheduler that both takes advantage of hardware features not currently
exploited by the current schedulers (FSTNs and sITD backpointers) and
makes a greater effort to get the niggling corner cases of scheduling
restrictions correct (eg, correct ordering of overlapping FS QHs of
differing tree levels). As an example of need, with this new
budgeter, I an finally able to use all of my full-speed eight-channel
USB audio devices, sampling and playing back simultaneously across
multiple USB 2.0 hubs, which is not possible with either the 'old'
scheduler (<=2.6.17) or the 'new improved' scheduler (2.6.18,
TT_NEWSCHED). The new scheduler is fully capable of acheiving >
10mbps full speed transfers through a TT even when shared across
The largest piece of the patchset is the new 'shadow budget'
abstraction that tracks all promised periodic bandwidth, not just the
fragments that happen to be present on the periodic schedule at any
given moment. It may have been cleaner to reserve bandwidth with
placeholders in the actual hardware schedule, however discussions came
to the conclusion this would require an unacceptable amount of memory.
Thus the reasoning behind the much smaller, seperate shadow budget.
Patches 1-9 are [somewhat fluffy] code refactoring of the existing
scheduler mechanisms to make the addition of the budgeter
straightforward. The budgeting is added in patch 10, switched on in a
passive mode (the scheduler is not yet using its decisions) in patch
11, and in patch 12 the scheduler is switched over to using it. Patch
13 implements complete FSTN support, patch 14 implements sITD
backpointer and frame spanning for ISO transfers.
The last patch in the set is a usb audio fix necessitated by fixing
underrun reporting in the ehci-hcd driver (usbaudio nominal playback
causes a harmless underrun in startup that the usbaudio code doesn't
currently handle properly.)
This patchset removes the current schedulers' slot decision logic
entirely in patch 12. I see little reason to maintain four possible
scheduler choices when, once stable, this one should be the clear
performance winner in all cases. Otherwise it would have to be the
new improved new scheduler, whch is getting a might bit silly.
Users should see no change except that more devices now work properly,
and those that previously worked will no longer randomly abort with
ENOSPC from the current 'best guess' approach accidentally
overallocating because it only works a few ms ahead at a time.
This is longwinded already, but more detail is at:
The patchset as it is about to be posted will apply cleany to at least
2.6.18 through 2.6.18-git6
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
To unsubscribe, use the last form field at: