Messages in this thread | | | Date | Tue, 19 Aug 2008 12:12:17 -0700 (PDT) | From | David Brownell <> | Subject | Re: PROBLEM: USB keyboards works only 4 per PC host port |
| |
--- Alan Stern <stern@rowland.harvard.edu> wrote:
> On Tue, 19 Aug 2008 juanslayton@dslextreme.com wrote: > > If I understand your analysis, Aivils' problem is because the UHCI > > controllers are too slow. > > Not just that; it also is a question of scheduling. The uhci-hcd > driver isn't very clever about scheduling, and it tries to put all the > packets into the same frame. If the packets were distributed among > multiple frames then the limit would be considerably higher (eight > times higher in this case). > > I'm not sure of the scheduling details in the ohci-hcd driver; they > might well be more flexible than in uhci-hcd. In which case a single > OHCI controller would be able to handle up to 32 of these keyboards, > even though it is no faster than a UHCI controller.
The OHCI scheduling is pretty simple and compact. I'd think it would be easy enough to make UHCI do the same sort of thing: track bandwidth assigned to 2^N frames (OHCI hardware imposes a smaller limit for N than UHCI hardware does), and pick the least loaded of those frames to use for new transfers. In ohci-q.c see balance(), periodic_{,un}link().
Thing is that would involve changing how UHCI manages periodic transfers; assuming it hasn't changed those structures since last I looked.
| |