[BTW, Alan, I get the impression we did some amount of talking past
each other.  Some of that might be terminology.]

The scheduler, as I modified it, is actually two pieces; the budgeter
(which reserves bandwidth and makes timing decisions) and the
scheduler (which inspects the budget and manipulates the hardware
schedule).  The scheduler is mostly unchanged from before, it just no
longer tries to do its own on-the-fly decision making.  The scheduling
structure and conventions are mostly the same; the hardware schedule
is not really a round-robin, it only holds a few transactions at a
time, which are yanked as soon as they complete.  The budget, however,
is a true round-robin.

The old scheduler actually tore down an endpoint completely upon
underrun (if it managed to detect it, which due to bugs, it usually
didn't).  If a new URB came in, it would restart the endpoint from
scratch, re-performing schedule and bandwidth allocation.  It had no
idea how many things got missed, because an underrun was the practical
equivalent of calling close().

In the new scheduler, the budget is unaffected.  When an underrun
occurs, the hardware scheduler merely skips over the schedule slots
that got missed, but does not drop the 'late' transactions when
they're submitted.  Perhaps you are arguing that this is broken?  I'd
have to agree; however, I am keeping with how the scheduler worked
before (if that had actually worked properly, which for the most part
it didn't).  Returning an error on late transactions, such that the
transactions are dropped until the driver/app catches up, would be a
_change_ to the way things have always been since ISO support was
added.

If you think we should bite the bullet and make that change, it would
not be particularly difficult from the schedule standpoint... at least
for ISO OUT.  IN is a different problem; if we missed schedule slots,
the device probably overran, so we don't know how much data actually
got lost.  We still end up with a latency shift even if we drop the
exact number of transactions that got missed.

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