I'm using usb-uhci on 2.4.22. The last parameter I pass to the fill_isoc_urb function is trasfer_flags. I set it to 4 because windows driver does that:
1.3:
00000227 0.11009528 TransferFlags = 00000004 (USBD_TRANSFER_DIRECTION_OUT,
~USBD_SHORT_TRANSFER_OK, USBD_START_ISO_TRANSFER_ASAPn
1.8:
TransferFlags = 00000004 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK, USBD_START_ISO_TRANSFER_ASAP
ASAP is 0x2. If trasfer_flags is 4, why do I read "USBD_START_ISO_TRANSFER_ASAP" between brackets)?
--- usb.h
#define USB_DISABLE_SPD 0x0001
#define URB_SHORT_NOT_OK USB_DISABLE_SPD
#define USB_ISO_ASAP 0x0002
--- usb.h
I apologize for the missing logs. I resume its content here: (snoop1.3 also give me the buffer content)
--- isocurb_1.3.log BEGIN >>> going down 00001132 0.11657515 StartFrame = 00000000 00001133 0.11658325 NumberOfPackets = 00000014 00001134 0.11659191 IsoPacket[0].Offset = f9fc16a8 00001135 0.11660169 IsoPacket[0].Length = f9fc16a8 00001136 0.11661035 IsoPacket[40].Offset = f9fc16a8 00001137 0.11661901 IsoPacket[0].Length = f9fc16a8 00001138 0.11662795 IsoPacket[80].Offset = f9fc16a8 00001139 0.11663633 IsoPacket[0].Length = f9fc16a8 00001140 0.11664527 IsoPacket[120].Offset = f9fc16a8 <<< coming back 00001189 0.14199598 IsoPacket[0].Offset = 826db6cf 00001190 0.14200492 IsoPacket[0].Length = 826db6cf 00001191 0.14201358 IsoPacket[0].Status = 826db6cf 00001192 0.14202280 IsoPacket[40].Offset = 826db6cf 00001193 0.14203146 IsoPacket[0].Length = 826db6cf 00001194 0.14204124 IsoPacket[0].Status = 826db6cf 00001195 0.14204990 IsoPacket[80].Offset = 826db6cf 00001196 0.14205995 IsoPacket[0].Length = 826db6cf 00001197 0.14206917 IsoPacket[0].Status = 826db6cf 00001198 0.14207867 IsoPacket[120].Offset = 826db6cf --- isocurb_1.3.log END
--- isocurb_1.8.log BEGIN >>> going down StartFrame = 00000000 NumberOfPackets = 00000014 IsoPacket[0].Offset = 0 IsoPacket[0].Length = 0 IsoPacket[1].Offset = 40 IsoPacket[1].Length = 0 IsoPacket[2].Offset = 80 IsoPacket[2].Length = 0 <<< coming back IsoPacket[0].Offset = 0 IsoPacket[0].Length = 0 IsoPacket[0].Status = 00000000 IsoPacket[1].Offset = 40 IsoPacket[1].Length = 0 IsoPacket[1].Status = 00000000 IsoPacket[2].Offset = 80 IsoPacket[2].Length = 0 IsoPacket[2].Status = 00000000 --- isocurb_1.8.log BEGIN
The urb is the same and one of the sniffer is wrong or not?
Jeanseb wrote:
Windows driver set the ASAP flag, you don't, may bet this. I also got this kind of trouble with uhci driver while usb-uhci and usb-ohci work fine. Selon magneto <[EMAIL PROTECTED]>:
Hi all,
I'm a kernelnewbie (and also a c++ newbie)
I've some problems to understand usbsnoop logs.
I've attached 2 snoops of some isochronous urb : a "sniffusb1.3" log and a
"sniffusb1.8 by papilloit" log.
In my code I fill the transfer buffer with the content I see in
"isocurb_1.3.log" but the isopackets have zero lenght so I think the buffer
is not transferred.
fill_isoc_urb(isocurb, dev, usb_sndisocpipe (dev,
epout_2->bEndpointAddress),
transfer_buffer, packets, instance->isocsize,
iso_complete, instance, 4); //transfer_flags=4
for (i = 0; i < packets; ++i) {
isocurb->iso_frame_desc[i].offset = i * instance->isocsize;
isocurb->iso_frame_desc[i].length = instance->isocsize;
}
ret=usb_submit_urb(isocurb);
Why doesn't this urb call the completion routine?
Thanks in advance for any help.
magneto
--------------------------------------------------------------------------------------------------------- Je suis celui qui peint la nuit en sombre Celui qui voit tous les jours la pénombre Je suis celui... qui a été -- AqME, je suis
------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel