|
From: | Hans de Goede |
Subject: | Re: [Qemu-devel] USB streaming [Re: [PATCH 18/18] usb: add ehci adapter] |
Date: | Wed, 18 May 2011 10:25:38 +0200 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc15 Lightning/1.0b2 Thunderbird/3.1.10 |
Hi, On 05/17/2011 09:18 PM, David Ahern wrote:
On 05/17/11 13:10, David Ahern wrote:Note that once every while a packet will get lost since normally a usb device is synced to the usb frame timer, but the real and emulated frame timer are not synced, so eventually a packet will get lost.I noticed that as well. The guest uhci driver (linux at least) guesses where to put the initial request (10 frames out as I recall). From there the requests need to flow - responses come into the guest, requests are appended to the stream. One missed packet in the guest causes the driver to "start over" -- ie, it's no longer a stream, but an initial request placed 10 frames out. That causes an ugly jitter, and if the qemu controller happens to be past the '10 frames out' guess by the OS you get a 1+ sec gap of silence.Oh yea, as I mentioned in the URL modifying the guest driver to have more outstanding URBs (at least 4 URBs with 5 packets per URB) was a key aspect of the solution as well -- keeping the guest OS and controller from losing sync.
With the fifo now in place this should no longer be necessary. I don't know if you know, but I've been working on qemu usb stuff for a while now, mostly focusing on usb redirection over the network. I've been distracted by some other work for the last 2 months, but I hope to return to working on this full time again now. Currently my work is in bad need of syncing with the latest qemu. Once that is done I'll likely put out a call for some early testers. Any feedback would be very welcome. My isoc buffering fixes for usb-redirection on the host itself were mostly done to get a feel for all this, and because if I could not get this to work locally, it certainly would not work over the network. Regards, Hans
[Prev in Thread] | Current Thread | [Next in Thread] |