From: Gerd Hoffmann <kraxel@redhat.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: spice-devel@lists.freedesktop.org, qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [Spice-devel] RFC; usb redirection protocol
Date: Mon, 13 Dec 2010 12:21:51 +0100 [thread overview]
Message-ID: <4D0601CF.6080007@redhat.com> (raw)
In-Reply-To: <4D0234D9.7040806@redhat.com>
> Basic packet structure / communication
> --------------------------------------
>
> Each packet exchanged between the vm-host and the usb-host starts
> with a usb_redir_header, followed by an optional command specific
> header follow by optional additional data.
>
> The usb_redir_header each packet starts with looks as follows:
>
> struct usb_redir_header { uint32_t command; uint32_t length; }
uint32_t id; ? A reply would then carry the id of the request ...
> Given that everything is done over a potentially slow transport in
> practice the diferentiating between synchroneous and asynchroneous
> commands may seem odd. The difference is how the usb-host will handle
> them once received. For synchroneous commands the usb-host will hand
> the request over to the host os and then *wait* for a response. This
> means that the vm-host is guaranteed to get an "immediate" response.
> Where as for asynchroneous commands to usb-host hands the request
> over to the host os with the request to let the usb-host process know
> when the request is done.
Hmm. Looks like you are planning for one tcp stream and one thread (on
the usb-host side) for each usb device. That will not work very good
for usb-over-vnc because there is a single tcp stream only. We could of
course multiplex multiple logical usb connections over vnc, but even
then blocking on the usb-host side looks bad as this could disrupt other
usb devices forwarded over the same connection.
> usb_redir_report_descriptor ---------------------------
>
> usb_redir_header.command: usb_redir_report_desciptor
> usb_redir_header.length: <sizeof usb device descriptors>
>
> No command specific header.
>
> The command specific additional data contains the entire descriptors
> for the usb device.
>
> A packet of this type is send by the usb-host directly after the
> hello packet it contains the usb descriptor tables for the usb
> device.
Device addressing isn't done at all in the protocol, i.e. there is a
fixed device <-> connection relation ship?
> Please let me know what you think of this.
Do you know whenever certain low-level usb ops can work with this?
Specifically iphone firmware flashing was mentioned on the list.
Also I remember somewhere in the ehci (or xhci?) specs was mentioned
with some devices it can be needed to talk to them *before* an bus
address is assigned ...
cheers,
Gerd
next prev parent reply other threads:[~2010-12-13 11:22 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-10 14:10 [Qemu-devel] RFC; usb redirection protocol Hans de Goede
2010-12-13 11:21 ` Gerd Hoffmann [this message]
2010-12-15 12:15 ` [Qemu-devel] Re: [Spice-devel] " Hans de Goede
2010-12-15 12:20 ` Frédéric Grelot
2010-12-18 16:30 ` Hans de Goede
2010-12-15 15:18 ` Alon Levy
2010-12-16 8:13 ` Gerd Hoffmann
2010-12-16 8:15 ` Gerd Hoffmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D0601CF.6080007@redhat.com \
--to=kraxel@redhat.com \
--cc=hdegoede@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=spice-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).