Hello,
A status code that is returned in the Isopacket[].Status field of the
_URB_ISOCH_TRANSFER struct does not seem to be in the USBD status code enum.
The value is 0xC000000E.

What does this code means in the context of an isochronous USB OUT and IN
transfer? Can someone relate this code to the TD status field that is called
out in the OHCI specification?

I am testing on an AMD system using WindowsXP SP2.

Thanks for your time,
John

Re: USBD_STATUS not in header by Philip

Philip
Thu Jun 30 15:06:52 CDT 2005

"John B" <JohnB@discussions.microsoft.com> wrote in message
news:9A121361-7220-439B-B659-038A7C261A64@microsoft.com...
> Hello,
> A status code that is returned in the Isopacket[].Status field of the
> _URB_ISOCH_TRANSFER struct does not seem to be in the USBD status code
enum.
> The value is 0xC000000E.
>
> What does this code means in the context of an isochronous USB OUT and IN
> transfer? Can someone relate this code to the TD status field that is
called
> out in the OHCI specification?
>
> I am testing on an AMD system using WindowsXP SP2.
>
> Thanks for your time,
> John
>
Yes, this is (IIRC) an error returned only from OHCI USB controller. I
found this out by searching the latest DDK source tree, where a comment says
that for OHCI 0xc000000e means that the supplied URB reached the controller
too late, i.e. the URB frame number did not incorporate a high enough
latency. MS really should document this in a .h file! Add more latency to
your frame number, hopefully that should help.

hth,

Philip Lukidis



Re: USBD_STATUS not in header by JohnB

JohnB
Thu Jun 30 17:34:02 CDT 2005

"Philip Lukidis" wrote:

> "John B" <JohnB@discussions.microsoft.com> wrote in message
> news:9A121361-7220-439B-B659-038A7C261A64@microsoft.com...
> > Hello,
> > A status code that is returned in the Isopacket[].Status field of the
> > _URB_ISOCH_TRANSFER struct does not seem to be in the USBD status code
> enum.
> > The value is 0xC000000E.
> >
> > What does this code means in the context of an isochronous USB OUT and IN
> > transfer? Can someone relate this code to the TD status field that is
> called
> > out in the OHCI specification?
> >
> > I am testing on an AMD system using WindowsXP SP2.
> >
> > Thanks for your time,
> > John
> >
> Yes, this is (IIRC) an error returned only from OHCI USB controller. I
> found this out by searching the latest DDK source tree, where a comment says
> that for OHCI 0xc000000e means that the supplied URB reached the controller
> too late, i.e. the URB frame number did not incorporate a high enough
> latency. MS really should document this in a .h file! Add more latency to
> your frame number, hopefully that should help.
>
> hth,
>
> Philip Lukidis
>
>
>

Thank you very much.

You are right about the extra latency needed. The strange thing is, I have
not had "late start of frame" issues with my current driver configuration
until I started using this fancy new computer. So I did some investigating
and ran MS's very cool tracing tool, RATTv3.EXE. Rattv3 created a cumulative
histogram of the ISR and DPC time for each of the drivers in my system. It
looks like my disk subsystem is broken or configured improperly. The
atapi.sys driver can take up to 6ms during its ISR. This is just a guess,
but that probably held off the USBD DPC or even its ISR long enough to cause
my probelm.

Thanks again,
-John

For those interested, here's an example output of RATTV3:

Cumulative Histogram for: atapi.sys (atapi.sys)
#, Range, Label, ISR Count, DPC Count, DPCTmr Count
1, 1.00us to 1.99us, <2.00us, 55168, 80, 4
2, 2.00us to 2.99us, <3.00us, 3948, 0, 4
3, 3.00us to 3.99us, <4.00us, 684, 9, 1
4, 4.00us to 4.99us, <5.00us, 2563, 16, 1
5, 5.00us to 5.99us, <6.00us, 275, 1935, 0
6, 6.00us to 6.99us, <7.00us, 114, 785, 0
7, 7.00us to 7.99us, <8.00us, 94, 49, 0
8, 8.00us to 8.99us, <9.00us, 72, 52, 0
9, 9.00us to 9.99us, <10.00us, 49, 72, 0
10, 10.00us to 19.99us, <20.00us, 398, 261, 0
11, 20.00us to 29.99us, <30.00us, 376, 25, 0
12, 30.00us to 39.99us, <40.00us, 299, 0, 0
13, 40.00us to 49.99us, <50.00us, 236, 0, 0
14, 50.00us to 59.99us, <60.00us, 189, 0, 0
15, 60.00us to 69.99us, <70.00us, 130, 0, 0
16, 70.00us to 79.99us, <80.00us, 76, 0, 0
17, 80.00us to 89.99us, <90.00us, 76, 0, 0
18, 90.00us to 99.99us, <100.00us, 69, 0, 0
19, 100.00us to 109.99us, <110.00us, 42, 0, 0
20, 110.00us to 119.99us, <120.00us, 29, 0, 0
21, 120.00us to 129.99us, <130.00us, 10, 0, 0
22, 130.00us to 139.99us, <140.00us, 5, 0, 0
23, 140.00us to 149.99us, <150.00us, 3, 0, 0
24, 150.00us to 159.99us, <160.00us, 3, 0, 0
25, 160.00us to 169.99us, <170.00us, 1, 0, 0
26, 170.00us to 179.99us, <180.00us, 3, 0, 0
27, 180.00us to 189.99us, <190.00us, 4, 0, 0
28, 190.00us to 199.99us, <200.00us, 3, 0, 0
29, 200.00us to 209.99us, <210.00us, 2, 0, 0
30, 210.00us to 219.99us, <220.00us, 2, 0, 0
31, 220.00us to 229.99us, <230.00us, 2, 0, 0
32, 230.00us to 239.99us, <240.00us, 3, 0, 0
33, 240.00us to 249.99us, <250.00us, 2, 0, 0
34, 250.00us to 259.99us, <260.00us, 2, 0, 0
35, 260.00us to 269.99us, <270.00us, 4, 0, 0
36, 270.00us to 279.99us, <280.00us, 1, 0, 0
39, 300.00us to 309.99us, <310.00us, 2, 0, 0
40, 310.00us to 319.99us, <320.00us, 4, 0, 0
42, 330.00us to 339.99us, <340.00us, 2, 0, 0
43, 340.00us to 349.99us, <350.00us, 2, 0, 0
44, 350.00us to 359.99us, <360.00us, 6, 0, 0
45, 360.00us to 369.99us, <370.00us, 5, 0, 0
46, 370.00us to 379.99us, <380.00us, 4, 0, 0
47, 380.00us to 389.99us, <390.00us, 2, 0, 0
48, 390.00us to 399.99us, <400.00us, 5, 0, 0
49, 400.00us to 409.99us, <410.00us, 7, 0, 0
50, 410.00us to 419.99us, <420.00us, 2, 0, 0
51, 420.00us to 429.99us, <430.00us, 4, 0, 0
52, 430.00us to 439.99us, <440.00us, 3, 0, 0
54, 450.00us to 459.99us, <460.00us, 1, 0, 0
55, 460.00us to 469.99us, <470.00us, 4, 0, 0
56, 470.00us to 479.99us, <480.00us, 4, 0, 0
57, 480.00us to 489.99us, <490.00us, 8, 0, 0
58, 490.00us to 499.99us, <500.00us, 2, 0, 0
59, 500.00us to 509.99us, <510.00us, 5, 0, 0
60, 510.00us to 519.99us, <520.00us, 2, 0, 0
61, 520.00us to 529.99us, <530.00us, 2, 0, 0
62, 530.00us to 539.99us, <540.00us, 2, 0, 0
63, 540.00us to 549.99us, <550.00us, 5, 0, 0
64, 550.00us to 559.99us, <560.00us, 5, 0, 0
65, 560.00us to 569.99us, <570.00us, 2, 0, 0
66, 570.00us to 579.99us, <580.00us, 4, 0, 0
67, 580.00us to 589.99us, <590.00us, 4, 0, 0
68, 590.00us to 599.99us, <600.00us, 2, 0, 0
69, 600.00us to 609.99us, <610.00us, 2, 0, 0
70, 610.00us to 619.99us, <620.00us, 2, 0, 0
71, 620.00us to 629.99us, <630.00us, 4, 0, 0
72, 630.00us to 639.99us, <640.00us, 7, 0, 0
73, 640.00us to 649.99us, <650.00us, 5, 0, 0
74, 650.00us to 659.99us, <660.00us, 4, 0, 0
75, 660.00us to 669.99us, <670.00us, 1, 0, 0
76, 670.00us to 679.99us, <680.00us, 4, 0, 0
77, 680.00us to 689.99us, <690.00us, 2, 0, 0
78, 690.00us to 699.99us, <700.00us, 1, 0, 0
79, 700.00us to 709.99us, <710.00us, 2, 0, 0
80, 710.00us to 719.99us, <720.00us, 3, 0, 0
81, 720.00us to 729.99us, <730.00us, 2, 0, 0
82, 730.00us to 739.99us, <740.00us, 1, 0, 0
83, 740.00us to 749.99us, <750.00us, 1, 0, 0
84, 750.00us to 759.99us, <760.00us, 2, 0, 0
85, 760.00us to 769.99us, <770.00us, 3, 0, 0
86, 770.00us to 779.99us, <780.00us, 3, 0, 0
88, 790.00us to 799.99us, <800.00us, 2, 0, 0
89, 800.00us to 809.99us, <810.00us, 1, 0, 0
137, 1.28ms to 1.29ms, <1.29ms, 1, 0, 0
145, 1.36ms to 1.37ms, <1.37ms, 1, 0, 0
158, 1.49ms to 1.50ms, <1.50ms, 1, 0, 0
185, 1.76ms to 1.77ms, <1.77ms, 1, 0, 0
243, 2.34ms to 2.35ms, <2.35ms, 1, 0, 0
347, 3.38ms to 3.39ms, <3.39ms, 1, 0, 0
551, 5.42ms to 5.43ms, <5.43ms, 1, 0, 0
639, 6.30ms to 6.31ms, <6.31ms, 1, 0, 0
646, 6.37ms to 6.38ms, <6.38ms, 1, 0, 0
TOTALS, 65098, 3284, 10

Re: USBD_STATUS not in header by Philip

Philip
Fri Jul 01 13:11:13 CDT 2005

"John B" <JohnB@discussions.microsoft.com> wrote in message
news:6BAEF40D-F422-4F18-A9B1-52152C2601C4@microsoft.com...
> "Philip Lukidis" wrote:
>
> > "John B" <JohnB@discussions.microsoft.com> wrote in message
> > news:9A121361-7220-439B-B659-038A7C261A64@microsoft.com...
> > > Hello,
> > > A status code that is returned in the Isopacket[].Status field of the
> > > _URB_ISOCH_TRANSFER struct does not seem to be in the USBD status code
> > enum.
> > > The value is 0xC000000E.
> > >
> > > What does this code means in the context of an isochronous USB OUT and
IN
> > > transfer? Can someone relate this code to the TD status field that is
> > called
> > > out in the OHCI specification?
> > >
> > > I am testing on an AMD system using WindowsXP SP2.
> > >
> > > Thanks for your time,
> > > John
> > >
> > Yes, this is (IIRC) an error returned only from OHCI USB controller. I
> > found this out by searching the latest DDK source tree, where a comment
says
> > that for OHCI 0xc000000e means that the supplied URB reached the
controller
> > too late, i.e. the URB frame number did not incorporate a high enough
> > latency. MS really should document this in a .h file! Add more latency
to
> > your frame number, hopefully that should help.
> >
> > hth,
> >
> > Philip Lukidis
> >
> >
> >
>
> Thank you very much.
>
> You are right about the extra latency needed. The strange thing is, I have
> not had "late start of frame" issues with my current driver configuration
> until I started using this fancy new computer. So I did some
investigating
> and ran MS's very cool tracing tool, RATTv3.EXE. Rattv3 created a
cumulative
> histogram of the ISR and DPC time for each of the drivers in my system.
It
> looks like my disk subsystem is broken or configured improperly. The
> atapi.sys driver can take up to 6ms during its ISR. This is just a guess,
> but that probably held off the USBD DPC or even its ISR long enough to
cause
> my probelm.
>
> Thanks again,
> -John
>
> For those interested, here's an example output of RATTV3:
>
> Cumulative Histogram for: atapi.sys (atapi.sys)
> #, Range, Label, ISR Count, DPC Count, DPCTmr
Count
> 1, 1.00us to 1.99us, <2.00us, 55168, 80,
4
> 2, 2.00us to 2.99us, <3.00us, 3948, 0,
4
> 3, 3.00us to 3.99us, <4.00us, 684, 9,
1
> 4, 4.00us to 4.99us, <5.00us, 2563, 16,
1
> 5, 5.00us to 5.99us, <6.00us, 275, 1935,
0
> 6, 6.00us to 6.99us, <7.00us, 114, 785,
0
> 7, 7.00us to 7.99us, <8.00us, 94, 49,
0
> 8, 8.00us to 8.99us, <9.00us, 72, 52,
0
> 9, 9.00us to 9.99us, <10.00us, 49, 72,
0
> 10, 10.00us to 19.99us, <20.00us, 398, 261,
0
> 11, 20.00us to 29.99us, <30.00us, 376, 25,
0
> 12, 30.00us to 39.99us, <40.00us, 299, 0,
0
> 13, 40.00us to 49.99us, <50.00us, 236, 0,
0
> 14, 50.00us to 59.99us, <60.00us, 189, 0,
0
> 15, 60.00us to 69.99us, <70.00us, 130, 0,
0
> 16, 70.00us to 79.99us, <80.00us, 76, 0,
0
> 17, 80.00us to 89.99us, <90.00us, 76, 0,
0
> 18, 90.00us to 99.99us, <100.00us, 69, 0,
0
> 19, 100.00us to 109.99us, <110.00us, 42, 0,
0
> 20, 110.00us to 119.99us, <120.00us, 29, 0,
0
> 21, 120.00us to 129.99us, <130.00us, 10, 0,
0
> 22, 130.00us to 139.99us, <140.00us, 5, 0,
0
> 23, 140.00us to 149.99us, <150.00us, 3, 0,
0
> 24, 150.00us to 159.99us, <160.00us, 3, 0,
0
> 25, 160.00us to 169.99us, <170.00us, 1, 0,
0
> 26, 170.00us to 179.99us, <180.00us, 3, 0,
0
> 27, 180.00us to 189.99us, <190.00us, 4, 0,
0
> 28, 190.00us to 199.99us, <200.00us, 3, 0,
0
> 29, 200.00us to 209.99us, <210.00us, 2, 0,
0
> 30, 210.00us to 219.99us, <220.00us, 2, 0,
0
> 31, 220.00us to 229.99us, <230.00us, 2, 0,
0
> 32, 230.00us to 239.99us, <240.00us, 3, 0,
0
> 33, 240.00us to 249.99us, <250.00us, 2, 0,
0
> 34, 250.00us to 259.99us, <260.00us, 2, 0,
0
> 35, 260.00us to 269.99us, <270.00us, 4, 0,
0
> 36, 270.00us to 279.99us, <280.00us, 1, 0,
0
> 39, 300.00us to 309.99us, <310.00us, 2, 0,
0
> 40, 310.00us to 319.99us, <320.00us, 4, 0,
0
> 42, 330.00us to 339.99us, <340.00us, 2, 0,
0
> 43, 340.00us to 349.99us, <350.00us, 2, 0,
0
> 44, 350.00us to 359.99us, <360.00us, 6, 0,
0
> 45, 360.00us to 369.99us, <370.00us, 5, 0,
0
> 46, 370.00us to 379.99us, <380.00us, 4, 0,
0
> 47, 380.00us to 389.99us, <390.00us, 2, 0,
0
> 48, 390.00us to 399.99us, <400.00us, 5, 0,
0
> 49, 400.00us to 409.99us, <410.00us, 7, 0,
0
> 50, 410.00us to 419.99us, <420.00us, 2, 0,
0
> 51, 420.00us to 429.99us, <430.00us, 4, 0,
0
> 52, 430.00us to 439.99us, <440.00us, 3, 0,
0
> 54, 450.00us to 459.99us, <460.00us, 1, 0,
0
> 55, 460.00us to 469.99us, <470.00us, 4, 0,
0
> 56, 470.00us to 479.99us, <480.00us, 4, 0,
0
> 57, 480.00us to 489.99us, <490.00us, 8, 0,
0
> 58, 490.00us to 499.99us, <500.00us, 2, 0,
0
> 59, 500.00us to 509.99us, <510.00us, 5, 0,
0
> 60, 510.00us to 519.99us, <520.00us, 2, 0,
0
> 61, 520.00us to 529.99us, <530.00us, 2, 0,
0
> 62, 530.00us to 539.99us, <540.00us, 2, 0,
0
> 63, 540.00us to 549.99us, <550.00us, 5, 0,
0
> 64, 550.00us to 559.99us, <560.00us, 5, 0,
0
> 65, 560.00us to 569.99us, <570.00us, 2, 0,
0
> 66, 570.00us to 579.99us, <580.00us, 4, 0,
0
> 67, 580.00us to 589.99us, <590.00us, 4, 0,
0
> 68, 590.00us to 599.99us, <600.00us, 2, 0,
0
> 69, 600.00us to 609.99us, <610.00us, 2, 0,
0
> 70, 610.00us to 619.99us, <620.00us, 2, 0,
0
> 71, 620.00us to 629.99us, <630.00us, 4, 0,
0
> 72, 630.00us to 639.99us, <640.00us, 7, 0,
0
> 73, 640.00us to 649.99us, <650.00us, 5, 0,
0
> 74, 650.00us to 659.99us, <660.00us, 4, 0,
0
> 75, 660.00us to 669.99us, <670.00us, 1, 0,
0
> 76, 670.00us to 679.99us, <680.00us, 4, 0,
0
> 77, 680.00us to 689.99us, <690.00us, 2, 0,
0
> 78, 690.00us to 699.99us, <700.00us, 1, 0,
0
> 79, 700.00us to 709.99us, <710.00us, 2, 0,
0
> 80, 710.00us to 719.99us, <720.00us, 3, 0,
0
> 81, 720.00us to 729.99us, <730.00us, 2, 0,
0
> 82, 730.00us to 739.99us, <740.00us, 1, 0,
0
> 83, 740.00us to 749.99us, <750.00us, 1, 0,
0
> 84, 750.00us to 759.99us, <760.00us, 2, 0,
0
> 85, 760.00us to 769.99us, <770.00us, 3, 0,
0
> 86, 770.00us to 779.99us, <780.00us, 3, 0,
0
> 88, 790.00us to 799.99us, <800.00us, 2, 0,
0
> 89, 800.00us to 809.99us, <810.00us, 1, 0,
0
> 137, 1.28ms to 1.29ms, <1.29ms, 1, 0,
0
> 145, 1.36ms to 1.37ms, <1.37ms, 1, 0,
0
> 158, 1.49ms to 1.50ms, <1.50ms, 1, 0,
0
> 185, 1.76ms to 1.77ms, <1.77ms, 1, 0,
0
> 243, 2.34ms to 2.35ms, <2.35ms, 1, 0,
0
> 347, 3.38ms to 3.39ms, <3.39ms, 1, 0,
0
> 551, 5.42ms to 5.43ms, <5.43ms, 1, 0,
0
> 639, 6.30ms to 6.31ms, <6.31ms, 1, 0,
0
> 646, 6.37ms to 6.38ms, <6.38ms, 1, 0,
0
> TOTALS, 65098, 3284,
10

Sounds like a great tool, and would be quite useful to me as well, as I
responsible for ASIO usermode/kernel mode drivers over USB/1394. Thanks for
bringing that to my attention!

Philip Lukidis



Re: USBD_STATUS not in header by JohnB

JohnB
Fri Jul 01 18:20:03 CDT 2005

"Philip Lukidis" wrote:

<snip>

> Sounds like a great tool, and would be quite useful to me as well, as I
> responsible for ASIO usermode/kernel mode drivers over USB/1394. Thanks for
> bringing that to my attention!
>
> Philip Lukidis

It's turning out to be a great tool for me too. I was able to fix my
computer's disk subsystem by tweaking the BISO and observing the ISR times.
I was pretty sure it had to be some thing like a BISO setting and not a bug
with atapi.sys.

I did find that when I run a program that uses OpenGL, my video card driver
has some pretty long DPC's, long enough to cause issues with an ASIO host
running with small buffers. In the past, (yesterday) I was only able to
guess why the system is glitch-ie, now I know why!

If there was an API for this trace service, I would love to add this to my
ASIO control panel.

Good luck,
John

Re: USBD_STATUS not in header by Philip

Philip
Mon Jul 04 15:58:12 CDT 2005

"John B" <JohnB@discussions.microsoft.com> wrote in message
news:F8439CCD-8133-49B6-8F68-4B1DBA817AD9@microsoft.com...
> "Philip Lukidis" wrote:
>
> <snip>
>
> > Sounds like a great tool, and would be quite useful to me as well, as I
> > responsible for ASIO usermode/kernel mode drivers over USB/1394. Thanks
for
> > bringing that to my attention!
> >
> > Philip Lukidis
>
> It's turning out to be a great tool for me too. I was able to fix my
> computer's disk subsystem by tweaking the BISO and observing the ISR
times.
> I was pretty sure it had to be some thing like a BISO setting and not a
bug
> with atapi.sys.
>
> I did find that when I run a program that uses OpenGL, my video card
driver
> has some pretty long DPC's, long enough to cause issues with an ASIO host
> running with small buffers. In the past, (yesterday) I was only able to
> guess why the system is glitch-ie, now I know why!
>
> If there was an API for this trace service, I would love to add this to my
> ASIO control panel.
>
> Good luck,
> John
Out of curiosity, what BIOS settings had this effect? Was it the DMA
setting?

I started using this excellent tool, and I've been noticing that when I
minimize an ASIO app on UHCI I have seen USBPORT DPC execution times in the
ms range, even up to the 6 ms range (I have seen 20ms, but only with another
ASIO device used for testing)! Really a killer for ASIO. But on OHCI,
250us is the max I have seen on a USBPORT DPC time. Have you seen something
like this? Just curious...

thanks,

Philip Lukidis