drivers/usb/core/devio.c, USB3.0 and "arbitrary limit for USB2"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



With USB2.0 the max isochronous size can be 3x1024 byte every 125us

With USB3.0 the max isochronous size can be 1x1024 byte * Mult * bMaxBurst every 125us
super speed companion descriptor. bMaxBurst (0~15 allowed, 1~16 packets)
super speed companion descriptor. bmAttributes (bit 1:0, mult 0~2)
Maximum number of packtes = (bMaxBurst + 1) x (Mult + 1)

if Mult=3 and bMaxBurst=1 (6 packets x 1024), libusb can allocate and submit a isocronous, with bMaxBurst=2 (9 packets x 1024), and more the fuction libusb_submit_transfer() return a errors, because:

in the file of kernel 3.8 and 3.9
drivers/usb/core/devio.c:
...
         for (totlen = u = 0; u < uurb->number_of_packets; u++) {
             /* arbitrary limit,
              * sufficient for USB 2.0 high-bandwidth iso */
             if (isopkt[u].length > 8192) {
                 ret = -EINVAL;
                 goto error;
             }
             totlen += isopkt[u].length;
         }
...

Now with USB 3.0 this arbitrary limit need to increment at not less of 1024 * 3 * 16 byte
What do you think?

Fede

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux