I have a Logitech C925e webcam. When attached to the onboard xhci(4) controller (AMD 300 Series USB 3.0 controller), it does not provide any picture through webcamd, though does turn on. Data are clearly transferred, as the interrupt rate goes up dramatically when running pwcview. If I set uvc_driver.nodrop=1 in webcamd, I can see a small top portion of each frame, which gets smaller at higher resolution, suggesting that the transfers are being truncated after some number of bytes.
If I install an ehci(4)-based PCI card and plug the webcam into that instead, everything works perfectly without tweaks.
It is likely a bug regarding the bandwidth allocation for XHCI ISOCH endpoints.
When we setup an endpoint context we need to fill in some parameters to tell the hardware how many bytes to reserve. Likely these are wrong:
Maybe you can play with the parameter.
Thanks for the pointer, I'll take a look at that.
You may also find the XHCI status codes useful for the failed ISOCHRONOUS transfers.
This has magically fixed itself recently, so I can't investigate the problem any further. There haven't obviously been any commits that would change the behavior, so I'm pretty sure whatever the bug was still exists, but I can't do anything more unfortunately. I'll close it for now and if this happens again will reopen it.