qemu-e2k/hw/usb
Hans de Goede b4ea866499 ehci: Retry to fill the queue while waiting for td completion
If the guest is using multiple transfers to try and keep the usb bus busy /
used at maximum efficiency, currently we would see / do the following:

1) submit transfer 1 to the device
2) submit transfer 2 to the device
3) report transfer 1 completion to guest
4) report transfer 2 completion to guest
5) submit transfer 1 to the device
6) report transfer 1 completion to guest
7) submit transfer 2 to the device
8) report transfer 2 completion to guest
etc.

So after the initial submission we would effectively only have 1 transfer
in flight, rather then 2. This is caused by us not checking the queue for
addition of new transfers by the guest (ie the resubmission of a recently
finished transfer), while waiting for a pending transfer to complete.
This patch does add a check for this, changing the sequence to:

1) submit transfer 1 to the device
2) submit transfer 2 to the device
3) report transfer 1 completion to guest
4) submit transfer 1 to the device
5) report transfer 2 completion to guest
6) submit transfer 2 to the device
etc.

Thus keeping 2 transfers in flight (most of the time, and always 1),
as intended by the guest.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-10-25 09:08:09 +02:00
..
bus.c
core.c usb-core: Allow the first packet of a pipelined ep to complete immediately 2012-09-11 07:42:59 +02:00
desc.c usb3: bos decriptor 2012-09-11 07:43:01 +02:00
desc.h usb3: bos decriptor 2012-09-11 07:43:01 +02:00
dev-audio.c usb-audio: fix usb version 2012-09-11 07:43:00 +02:00
dev-bluetooth.c
dev-hid.c
dev-hub.c
dev-network.c net: fix usbnet_receive() packet drops 2012-09-14 08:40:32 +01:00
dev-serial.c usb-serial: only expose device in guest when the chardev is open 2012-10-22 13:26:42 -05:00
dev-smartcard-reader.c
dev-storage.c usb-storage: usb3 support 2012-09-11 07:43:01 +02:00
dev-uas.c cleanup useless return sentence 2012-10-05 15:10:21 +02:00
dev-wacom.c
hcd-ehci.c ehci: Retry to fill the queue while waiting for td completion 2012-10-25 09:08:09 +02:00
hcd-musb.c Rename target_phys_addr_t to hwaddr 2012-10-23 08:58:25 -05:00
hcd-ohci.c Rename target_phys_addr_t to hwaddr 2012-10-23 08:58:25 -05:00
hcd-uhci.c uhci: Move checks to continue queuing to uhci_fill_queue() 2012-10-25 09:08:08 +02:00
hcd-xhci.c Rename target_phys_addr_t to hwaddr 2012-10-23 08:58:25 -05:00
host-bsd.c
host-linux.c usb-host: allow emulated (non-async) control requests without USBPacket 2012-09-12 08:09:48 +02:00
host-stub.c
libhw.c usb: Fix usb_packet_map() in the presence of IOMMUs 2012-09-26 09:24:42 +02:00
Makefile.objs Remove libhw 2012-10-05 16:07:49 -05:00
redirect.c usb-redir: Don't make migration fail in none seamless case 2012-10-11 09:32:10 +02:00