qemu-e2k/hw/usb
Hans de Goede 8928c9c43d uhci: 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:12 +02:00
..
bus.c usb: Add USB_RET_ADD_TO_QUEUE packet result code 2012-10-25 09:08:09 +02:00
core.c usb: Enforce iso endpoints never returing USB_RET_ASYNC 2012-10-25 09:08:10 +02:00
desc.c
desc.h usb3: bos decriptor 2012-09-11 07:43:01 +02:00
dev-audio.c
dev-bluetooth.c
dev-hid.c
dev-hub.c
dev-network.c
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
dev-uas.c
dev-wacom.c
hcd-ehci.c usb: Enforce iso endpoints never returing USB_RET_ASYNC 2012-10-25 09:08:10 +02:00
hcd-musb.c usb: Add an int_req flag to USBPacket 2012-10-25 09:08:10 +02:00
hcd-ohci.c usb: Add an int_req flag to USBPacket 2012-10-25 09:08:10 +02:00
hcd-uhci.c uhci: Retry to fill the queue while waiting for td completion 2012-10-25 09:08:12 +02:00
hcd-xhci.c usb: Add an int_req flag to USBPacket 2012-10-25 09:08:10 +02:00
host-bsd.c
host-linux.c usb: Move short-not-ok handling to the core 2012-10-25 09:08:10 +02:00
host-stub.c
libhw.c
Makefile.objs Remove libhw 2012-10-05 16:07:49 -05:00
redirect.c usb: Move short-not-ok handling to the core 2012-10-25 09:08:10 +02:00