Further looking at the logs...

The problem with that low speed device is that it places a giant
boulder in the middle of the only place QHs can reasonably go in the
compatability bandwidth schedule; the budgeting code is only capable
of packing so many smaller pebbles around it.  QHs are severely
constrained as to ordering and placement in EHCI and you've got
several of them fighting over a sliver of time left after the LS
device is allocated.  Which ones work will depend on what order
they're plugged in.

(the analogy is apt in another way.  You can have plenty of space to
the left of a boulder, but if the new pebble must go on the right, too
bad, and the boulder can't be moved once it's there)

The budget algorithm could be modified to spread QHs out a bit more
(more room on the right), but this would mean many iso devices
(camera, scanners, audio, which have to go on the left) will no longer
have enough bandwidth to work.  Rebalancing QHs would also fix the
problem (ability to move th boulder), but EHCI requires a shutdown
handshake that can take up to two seconds for each QH rebalancing
attempt (all traffic in New York must stop and wait while a giant
crane is brought in to move the boulder).

The other fix costs $25: buy a multi-TT USB 2.0 hub.  I find it
boggling that single-TT hubs are still the norm, but they're like $1
cheaper to make and those profit margins are all important!  In a
multi-TT hub, each port gets its own independent bandwidth schedule,
instead of all of them sharing the same 188 byte buffer.

I'll look a bit at how the budgeting algo can be tweaked, but the root
cause of the problem here is 'USB 1 and USB 2 are only kinda
pretending to be compatable'.

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

Reply via email to