Hello, 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 devices.
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: http://web.mit.edu/xiphmont/Public/kernel/#ehci-sched The patchset as it is about to be posted will apply cleany to at least 2.6.18 through 2.6.18-git6 Patches incoming! Monty ------------------------------------------------------------------------- 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 http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel