EHCI Isochronous schedule full?

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

 



I've probably got this wrong...

I try to run several cameras with compressed streams (MJPEG) using maxpacket 3*1024 isoc-endpoints.
EHCI should be able to transmit 8 microframes * 1024 bytes * 3 packets of data per frame (approx 24MB/sec).
Two cameras work fine, but when I connect a third camera I get -ENOSPC from the scheduler.
I don't get how the schedule can be full. One camera should be able to fit within one microframe. (3 * 1024b).
That leaves atleast 7 microframes available if 100% of bandwith is used for isochronous transfers (not likely, but anyway).

Debugfs lists the periodic schedule as (two cameras connected):

/sys/kernel/debug/usb/ehci/fsl-ehci.0 cat periodic
size = 512
   1:  qh256-0001/c3b0bd40 (h2 ep1in [1/0] q1 p1)
   6:  qh16-0001/c301d080 (h7 ep3in [1/0] q1 p8)
   7:  qh256-0001/c3b72180 (h8 ep1in [1/0] q1 p1)
   9:  qh16-0001/c30dd100 (h10 ep7in [1/0] q1 p16)
  22:  qh16-0001/c301d080
  25:  qh16-0001/c30dd100
  38:  qh16-0001/c301d080
  41:  qh16-0001/c30dd100
  54:  qh16-0001/c301d080
  57:  qh16-0001/c30dd100
  70:  qh16-0001/c301d080
  73:  qh16-0001/c30dd100
  86:  qh16-0001/c301d080
  89:  qh16-0001/c30dd100
 102:  qh16-0001/c301d080
 105:  qh16-0001/c30dd100
 118:  qh16-0001/c301d080
 121:  qh16-0001/c30dd100
 134:  qh16-0001/c301d080
 137:  qh16-0001/c30dd100
 150:  qh16-0001/c301d080
 153:  qh16-0001/c30dd100
 166:  qh16-0001/c301d080
 169:  qh16-0001/c30dd100
 182:  qh16-0001/c301d080
 185:  qh16-0001/c30dd100
 198:  qh16-0001/c301d080
 201:  qh16-0001/c30dd100
 214:  qh16-0001/c301d080
 217:  qh16-0001/c30dd100
 230:  qh16-0001/c301d080
 233:  qh16-0001/c30dd100
 246:  qh16-0001/c301d080
 249:  qh16-0001/c30dd100
 257:  qh256-0001/c3b0bd40
 262:  qh16-0001/c301d080
 263:  qh256-0001/c3b72180
 265:  qh16-0001/c30dd100
 278:  qh16-0001/c301d080
 281:  qh16-0001/c30dd100
 294:  qh16-0001/c301d080
 297:  qh16-0001/c30dd100
 310:  qh16-0001/c301d080
 313:  qh16-0001/c30dd100
 326:  qh16-0001/c301d080
 329:  qh16-0001/c30dd100
 342:  qh16-0001/c301d080
 345:  qh16-0001/c30dd100
 358:  qh16-0001/c301d080
 361:  qh16-0001/c30dd100
 374:  qh16-0001/c301d080
 377:  qh16-0001/c30dd100
 390:  qh16-0001/c301d080
 393:  qh16-0001/c30dd100
 406:  qh16-0001/c301d080
 409:  qh16-0001/c30dd100
 422:  qh16-0001/c301d080
 425:  qh16-0001/c30dd100
 438:  qh16-0001/c301d080
 441:  qh16-0001/c30dd100
 453:  itd/c32901e0 itd/c3290500
 454:  itd/c33c1d20 itd/c20ec000 qh16-0001/c301d080
 455:  itd/c20eca00 itd/c20d5320
 456:  itd/c32d08c0 itd/c32d05a0
 457:  itd/c20e83c0 itd/c20e86e0 qh16-0001/c30dd100
 458:  itd/c20e8460 itd/c20e8780
 459:  itd/c20ecaa0 itd/c20ec6e0
 460:  itd/c33c16e0 itd/c20ece60
 461:  itd/c33c1aa0 itd/c20ec140
 462:  itd/c21eaaa0 itd/c21eadc0
 463:  itd/c32900a0 itd/c32903c0
 464:  itd/c33c1960 itd/c20ecf00
 465:  itd/c3155dc0 itd/c3155aa0
 466:  itd/c20ec320 itd/c33cc0a0
 467:  itd/c3155c80 itd/c3155960
 468:  itd/c3155e60 itd/c3155b40
 469:  itd/c21ea1e0 itd/c21ea500
 470:  itd/c20ec780 itd/c33c1780 qh16-0001/c301d080
 471:  itd/c21eabe0 itd/c21ea8c0
 472:  itd/c21ea140 itd/c21ea460
 473:  qh16-0001/c30dd100
 486:  qh16-0001/c301d080
 489:  qh16-0001/c30dd100
 502:  qh16-0001/c301d080
 505:  qh16-0001/c30dd100

which is ~90 entries out of the 512 uframe schedule size. So why do I get -ENOSPC?
--
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