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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.