Source-Changes archive

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

CVS commit: src/sys/dev/usb



Module Name:    src
Committed By:   jakllsch
Date:           Sun May 24 17:28:20 UTC 2020

Modified Files:
        src/sys/dev/usb: uvideo.c

Log Message:
uvideo(4): clamp (micro)frames-per-xfer to at most 80

Previously, on a 30fps YUV422 640x480 webcam, we were putting over 250
USB (micro)frames per video frame in the host controller queue.

xhci(4) is currently limited to 256-1 TRBs per xHC Transfer Ring, and as
such, trying to place 3 xfers each of 250+ microframes in the queue fails.

As there is no UVC requirement that whole video frames be in one logical
chunk of isoc transactions, and there doesn't seem to be compelling reason
to keep the xfer completion rate slower than 1 in 10ms, we can limit each
of the 3 uvideo xfers to 80 (micro)frames of bus time, and solve the
Transfer Ring constraint for upcoming xhci(4) Isochronous pipe support.
This works out to using only 240 TRBs on the 255-usable-TRB Transfer Ring.


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/dev/usb/uvideo.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index