[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 04/12] usb: Add support for input pipelining
From: |
Hans de Goede |
Subject: |
Re: [Qemu-devel] [PATCH 04/12] usb: Add support for input pipelining |
Date: |
Tue, 09 Oct 2012 16:19:51 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120911 Thunderbird/15.0.1 |
Hi,
On 10/09/2012 03:31 PM, Gerd Hoffmann wrote:
<snip>
The core can and should do that for packets it owns (USBPacketState ==
USB_PACKET_QUEUED) because they are not (yet) passed to the USBDevice.
Packets owned by USBDevice (USBPacketState == USB_PACKET_ASYNC) must be
handled by the USBDevice itself.
Getting offtopic a bit here, but this not how we currently handle
things, currently the hcd code cancels packets after a queue halt,
Ah, right. Well, that should continue to work. USB_RET_NOT_USED would
make the hcd code just free the packet, and anything not-yet freed will
be zapped by the queue halt handling.
Right.
<snip>
2) If you agree with 1, then I assume you agree we will want to share
the combining code between host-linux.c (or host-* for that matter) and
redirect.c ?
I'm not sure there is that much to share.
It is not much, but you rightly called it "magic" before, as it is somewhat
tricky code, so better to write (and debug) it once :)
A helper function which takes a USBEndpoint and returns an iovec for all
USBPackets lined up there would probably be useful. Likewise for one
for completing the packets (takes xfer length + status, then fill
USBPacket->result & call usb_packet_complete for each packet).
That is more or less what I had in mind yes :)
But beyond that?
3) If you agree with 2, then all we need is a place for the shared logic
to live, we could put it in a new file called input-pipeline.c ?
Just stick the helpers into hw/usb/core.c?
I think core.c is getting a bit crowded, so I'll go with a new file for
the next revision, if you don't like that moving the functions someplace
else is easy :)
I'll start working on a new reworked version of the patchset which hopefully
will be more to your liking :)
Regards,
Hans
- [Qemu-devel] [PATCH 01/12] usb-redir: When a packet contains data on a stall, ignore the stall, (continued)
- [Qemu-devel] [PATCH 01/12] usb-redir: When a packet contains data on a stall, ignore the stall, Hans de Goede, 2012/10/08
- [Qemu-devel] [PATCH 07/12] uhci: Add support for input queuing, Hans de Goede, 2012/10/08
- [Qemu-devel] [PATCH 08/12] ehci: Get rid of packet tbytes field, Hans de Goede, 2012/10/08
- [Qemu-devel] [PATCH 03/12] usb-host-linux: Only enabling pipeling for output endpoints, Hans de Goede, 2012/10/08
- [Qemu-devel] [PATCH 04/12] usb: Add support for input pipelining, Hans de Goede, 2012/10/08
[Qemu-devel] [PATCH 06/12] uhci: Move checks to continue queuing to uhci_fill_queue(), Hans de Goede, 2012/10/08
[Qemu-devel] [PATCH 05/12] uhci: Properly unmap packets on cancel / invalid pid, Hans de Goede, 2012/10/08
[Qemu-devel] [PATCH 12/12] ehci: Speed up the timer of raising int from the async schedule, Hans de Goede, 2012/10/08
[Qemu-devel] [PATCH 09/12] ehci: Set int flag on a short input packet, Hans de Goede, 2012/10/08
[Qemu-devel] [PATCH 10/12] ehci: Add support for input queuing, Hans de Goede, 2012/10/08
[Qemu-devel] [PATCH 11/12] ehci: Improve latency of interrupt delivery and async schedule scanning, Hans de Goede, 2012/10/08