We seem to be in pretty close agreement.  I'll send in the patches
we've got for the 'usbtest.c' driver a bit later this morning;
and it looks like your test firmware is behaving well enough to
circulate it so other folk can use it too.


>>>Idea is to let the firmware use the frame counter as timestamp to 
>>>indicate when the IN packet was sourced. The host has the same 
>>>synchronized timebase making it easy to measure latencies.
>>
>>Such measurements can be a related focus.  Given those basic time
>>measurement, it'll be practical for motivated people to put together
>>charts'n'graphs showing interesting behaviors.
> 
> 
> Even better: It allows for more validations. For example with UHCI we have 
> to wait one frame before the urb is finally dead (to be sure the HC 
> wouldn't see it anymore). With the frame counter stuffed into every 
> payload packet of the urb you can check this.

Yes.  Though last time I looked, UHCI could actually release the URB
without that delay ... the delay was needed for the QH, but there was
no need to keep the URB tied to it then (during normal completions).


>>... "hands-off" is important, since I want us to be able to run overnight
>>(or longer!) tests.
> 
> 
> You mean longer runs just increasing the probability to hit some rare 
> issues? Well it definetedly helps - and yes, I have seen the old queing 
> code triggering a race only every few hours of continously streaming with 
> 1.1MB/s sustained. So I like the idea of long runs. But we should also 
> focus on creating test cases which are directly targeting such issues.
> Sure, for races it's always a matter of probability, but concurrent 
> activities like ping -f or disconnect tend to increase it dramatically. 
> And this can be done automatedly.

It's more like acknowledging that "rare" is a relative judgement, and
a few million Linux users putting in (say) 8 hours a day will surely see
some things that might not come up in tests that only run a few minutes.

The kinds of things that'll race tend to have multiple threads involved,
like concurrent reads/writes to the same device.  (That's a "ping -f"
type load.)  Or in the case of the scatterlist testing, an HC can complete
a TD at moments that are awkward for the HCD's logic to update an endpoint's
queue of TDs ... I suspect that's what UHCI is seeing just now,  I've seen
similar problems with the EHCI and OHCI drivers (now fixed).  (That's like
the "hours of continuous streaming" test, though queuing lots of urbs with
one packet each is a good way to make such errors happen sooner.)

Good testing always comes down to test design and, at this level, making
the probabilities work in your favor.  Tests that _efectively_ torture the
underlying code will make it more likely that problems come up in testing.
So longer test runs are important.

There will be things we have a more difficult time testing.  Disconnect
processing (enumeration testing) is likely one of them.  But a "ping -f"
load, or a continuous streaming load, or even lots of concurrent activity
to multiple devices ... those are easily automated.

- Dave




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to