Hi all,
I’m having a USB device with a iso in-pipe.
I usually get with every URB, 2 data-packets (each 8 bytes data).
But sometimes I get the URB back from stack with NO data in it
(Urb->UrbIsochronousTransfer.IsoPacket[i].Length).
In the CATC trace I see that the PC isn’t sending an IN-token
for this lack of time.
Whats wrong? I have at least 6 IRPs(URBs) pending down in USBD.
Regards,
Thomas.
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Are you sure that the frame number is getting set correctly for the pending
IRP/URB’s? Or are you putting the USBD_START_ISO_TRANSFER_ASAP flag on each
one? If you are doing the latter, it is possible you will see skipped
frames…
Dennis Merrill
Embedded Systems Engineer
Thermo Nicolet Corporation
-----Original Message-----
From: Thomas Munker [mailto:xxxxx@mch.siemens.de]
Sent: Monday, November 19, 2001 6:14 AM
To: NT Developers Interest List
Subject: [ntdev] W2K & USB : no data during isochronous transfer
Hi all,
I’m having a USB device with a iso in-pipe.
I usually get with every URB, 2 data-packets (each 8 bytes data).
But sometimes I get the URB back from stack with NO data in it
(Urb->UrbIsochronousTransfer.IsoPacket[i].Length).
In the CATC trace I see that the PC isn’t sending an IN-token
for this lack of time.
Whats wrong? I have at least 6 IRPs(URBs) pending down in USBD.
Regards,
Thomas.
You are currently subscribed to ntdev as: xxxxx@thermonicolet.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Yes,
I’ve set the USBD_START_ISO_TRANSFER_ASAP flag
(I’m using DriverWorks and in function BuildIsochronousTransfer()
I’ve set the bASAP flag).
I think I should get USBD_STATUS_BAD_START_FRAME for every URB
(if USBD_START_ISO_TRANSFER_ASAP not set), but I’m getting no error.
AFAIK it’s strange.
Regards,
Thomas.
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
My experience has been that if you set the ASAP flag, you have a better
chance of dropping frames. It seems like it will work pretty well but if
you absolutely cannot drop frames (and most cannot), it is not a good
method. The *correct* way to do iso block transfers is to fill the frame
number with the correct value. You can use something like the function
below to get the current frame number and then each IRP would be the current
ULONG
IsoGetCurrentFrame(
PDEVICE_EXTENSION pDeviceExtension
)
{
struct _URB_GET_CURRENT_FRAME_NUMBER Urb;
Urb.Hdr.Function = URB_FUNCTION_GET_CURRENT_FRAME_NUMBER;
Urb.Hdr.Length = sizeof( Urb );
Urb.FrameNumber = (ULONG) -1;
SendUrbAndWait( pDeviceExtension, (PURB) &Urb );
KdPrint(( “Current ISO frame = %d\n”, Urb.FrameNumber ));
return Urb.FrameNumber;
}
Good luck and please let us know if you solve your problem!
Dennis Merrill
Embedded Systems Engineer
Thermo Nicolet Corporation
-----Original Message-----
From: Thomas Munker [mailto:xxxxx@mch.siemens.de]
Sent: Monday, November 19, 2001 6:00 PM
To: NT Developers Interest List
Subject: [ntdev] RE: W2K & USB : no data during isochronous transfer
Yes,
I’ve set the USBD_START_ISO_TRANSFER_ASAP flag
(I’m using DriverWorks and in function BuildIsochronousTransfer()
I’ve set the bASAP flag).
I think I should get USBD_STATUS_BAD_START_FRAME for every URB
(if USBD_START_ISO_TRANSFER_ASAP not set), but I’m getting no error.
AFAIK it’s strange.
Regards,
Thomas.
You are currently subscribed to ntdev as: xxxxx@thermonicolet.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Ok, will try this and let you (all) know.
Thanks,
Thomas.
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
No, works not better (just the same).
Now I’ve the same behavior on W2K and XP.
Formerly (with ASAP-flag set) I got a lot of USBD_STATUS_BAD_START_FRAME
returns on XP. Now I only get these IRPs with no data.
Any more ideas?
Regards,
Thomas.
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
Hello Thomas 
I have yesterday found a fix (I hope so). My pending URB’s or say ISO packet count
in URB’s was to small. So I have increased the Setting for the
D-channel pipe from pending URB’s from 2 to 3. Some times the old
setting was good enough now I test with more pending URB’s etc. The
bad side effect is higher latency
for the B-channel.
elli
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
So you increased the number of packets per URB? If that’s true, that means
your IRP queue was emptying out and you should also be able to fix it by
simply increasing the number of pending IRP’s…
Glad you found an answer!
Dennis Merrill
Embedded Systems Engineer
Thermo Nicolet Corporation
-----Original Message-----
From: Mathias Ellinger [mailto:xxxxx@Ellisoft.de]
Sent: Wednesday, November 28, 2001 6:29 AM
To: NT Developers Interest List
Subject: [ntdev] RE: W2K & USB : no data during isochronous transfer
Hello Thomas 
I have yesterday found a fix (I hope so). My pending URB’s or say ISO packet
count
in URB’s was to small. So I have increased the Setting for the
D-channel pipe from pending URB’s from 2 to 3. Some times the old
setting was good enough now I test with more pending URB’s etc. The
bad side effect is higher latency
for the B-channel.
elli
You are currently subscribed to ntdev as: xxxxx@thermonicolet.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com