qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

  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).