Hi!
I'm working on a driver for my USB 2.0 high-speed webcam under Linux
and I'm using a tool
called usbsnoop, which was designed for Windows, to get an idea on the exchanged
information between the host and the webcam. By examining the produced
trace file, I found
that my PC is sending a bunch of isochronous URBs to the webcam where
each one contains
256 isochronous packets and each packet is 3072 bytes wide. This means
that every URB
points to a 256 * 3072 bytes sized buffer.
Here is an excerpt of the trace file:
[21303 ms] >>> URB 1640 going down >>>
-- URB_FUNCTION_ISOCH_TRANSFER:
PipeHandle = ff27dd8c [endpoint 0x00000081]
TransferFlags = 00000005 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK,
USBD_START_ISO_TRANSFER_ASAP
TransferBufferLength = 000c0000
TransferBuffer = fd319100
TransferBufferMDL = 00000000
StartFrame = 00000000
NumberOfPackets = 00000100 // in hex
IsoPacket[0].Offset = 0
IsoPacket[0].Length = 0
IsoPacket[1].Offset = 3072
IsoPacket[1].Length = 0
IsoPacket[2].Offset = 6144
IsoPacket[2].Length = 0
I tried to program this behavior in my custom, alpha stage, kernel
driver, however I was
disappointed since Linux fails to allocate, using kmalloc(), such a
huge buffer (which is
quite normal actually) to associated to the URB through the
transfer_buffer field. I also
tried __get_free_pages(GFP_KERNEL, 10) without any success whatsoever.
Splitting the transfer across multiple URB doesn't seem to work (I didn't really
investigate in depth this possibility).
Any ideas?
Thanks for your time!
P.S: Is it possible to CC me since I didn't subscribe to the mailing
list? Thanks!
Best regards,
Ilyes Gouta.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]