Re: [RFT/PATCH 00/38] usb: dwc3: gadget: Rework & Refactoring

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

 



On Fri, Apr 20, 2018 at 01:57:23PM +0300, Felipe Balbi wrote:
> 
> Hi,
> 
> Bin Liu <b-liu@xxxxxx> writes:
> >> Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> writes:
> >> >>> Bin Liu <b-liu@xxxxxx> writes:
> >> >>> > On Mon, Apr 09, 2018 at 02:26:14PM +0300, Felipe Balbi wrote:
> >> >>> >> Hi guys,
> >> >>> >> 
> >> >>> >> I've been working on this series for a while now. I feels like after
> >> >>> >> this series the transfer management code is far easier to read and
> >> >>> >> understand.
> >> >>> >> 
> >> >>> >> Based on my tests, I have no regressions. Tested g_mass_storage and all
> >> >>> >> of testusb's tests (including ISOC).
> >> >>> >> 
> >> >>> >> Patches are also available on dwc3-improve-isoc-endpoints in my k.org
> >> >>> >> tree. Test reports would be VERY, VERY, VERY welcome. Please give this a
> >> >>> >> go so we avoid regressions on v4.18.
> >> >>> >
> >> >>> > Have you tested g_webcam? I just tested your dwc3-improve-isoc-endpoints
> >> >>> 
> >> >>> for isoc I only tested g_zero.
> >> >>
> >> >> Then writting down details on what I observed probably won't help you :(
> >> 
> >> I got webcam running here, it sure _is_ helpful to let me know how you
> >
> > Great!
> >
> >> trigger the problem ;-) Also, high-speed or super-speed?
> >
> > Both. Long story short - super-speed doesn't stream the yuv video,
> > gadget side kernel prints "VS request completed with status -18."
> > flooding messages.
> >
> > high-speed does stream the video, but stopping the host application
> > (both yavta and luvcview) causes gadget side kernel prints error message
> > (I didn't keep the log). Then restart the host application doesn't
> > stream the video any more.
> >
> > To run the test:
> > gadget side:
> > 	# modprobe g_webcam (streaming_maxpacket=3072 for super-speed)
> > 	# uvc-gadget
> > host side:
> > 	$ yavta -c -f YUYV -t 1/30 -s 640x360 -n4 /dev/video1, or
> > 	$ luvcview -d /dev/video1 -f yuv
> 
> okay, found the problem. This is actually a problem on webcam gadget
> which kills the stream in case of Missed Isoc. The reason why it "works"
> with dwc3 today is because dwc3, up until now, is really harsh whenever
> we miss and interval.
> 
> Currently we stop the transfer and wait for the next XferNotReady. This
> may cause us to loose many frames.
> 
> I've been talking with Laurent Pinchart (in Cc) about what would be the
> best way to sort this out and, our conclusion, is that webcam gadget
> should have a way for a single buffer to be treated as erroneous, but it
> shouldn't stop the stream.
> 
> There's also another error in webcam gadget where default interval,
> maxburst and maxpacket aren't very good for HS or SS.
> 
> Note that streaming_interval is, by default, 1. Which for FS means 1ms,
> but for HS/SS it means 1 * 125us. So host side is actually polling
> webcam gadget every uFrame. I got webcam gadget to behave really well
> with streaming_interval=4 streaming_maxburst=16
> streaming_maxpacket=3072. With that, in SS, I can get around 100
> fps. There are a few cases when FPS drops to 33, but that's because it
> coincides with a missed isoc and webcam stops and restarts the stream.

Great!
Drop me an email whenever it is ready to re-test, in case I missed any
related conversation/patch in the mailing list.

Regards,
-Bin.
--
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