All of lore.kernel.org
 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 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.