[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/20] usb-ehci: always call ehci_queues_rip_unused
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 04/20] usb-ehci: always call ehci_queues_rip_unused for period queues |
Date: |
Wed, 7 Mar 2012 14:05:04 +0100 |
From: Hans de Goede <address@hidden>
Before this patch USB 2 devices with interrupt endpoints were not working
properly. The problem is that to avoid loops we stop processing as soon
as we encounter a queue-head (qh) we've already seen since qhs can be linked
in a circular fashion, this is tracked by the seen flag in our qh struct.
The resetting of the seen flag is done from ehci_queues_rip_unused which
before this patch was only called when executing the statemachine for the
async schedule.
But packets for interrupt endpoints are part of the periodic schedule! So what
would happen is that when there were no ctrl or bulk packets for a USB 2
device with an interrupt endpoint, the async schedule would become non
active, then ehci_queues_rip_unused would no longer get called and when
processing the qhs for the interrupt endpoints from the periodic schedule
their seen bit would still be 1 and they would be skipped.
Signed-off-by: Hans de Goede <address@hidden>
Signed-off-by: Gerd Hoffmann <address@hidden>
---
hw/usb-ehci.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/hw/usb-ehci.c b/hw/usb-ehci.c
index 840022d..d384fcc 100644
--- a/hw/usb-ehci.c
+++ b/hw/usb-ehci.c
@@ -2167,6 +2167,7 @@ static void ehci_advance_periodic_state(EHCIState *ehci)
ehci_set_fetch_addr(ehci, async,entry);
ehci_set_state(ehci, async, EST_FETCHENTRY);
ehci_advance_state(ehci, async);
+ ehci_queues_rip_unused(ehci, async);
break;
default:
--
1.7.1
- [Qemu-devel] [PULL 00/20] usb patch queue, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 03/20] usb-ehci: split our qh queue into async and periodic queues, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 12/20] usb: return BABBLE rather then NAK when we receive too much data, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 05/20] usb-ehci: Drop cached qhs when the doorbell gets rung, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 13/20] usb: add USB_RET_IOERROR, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 04/20] usb-ehci: always call ehci_queues_rip_unused for period queues,
Gerd Hoffmann <=
- [Qemu-devel] [PATCH 08/20] usb-ehci: Fix cerr tracking, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 20/20] xhci: fix port status, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 10/20] usb-ehci: Fix and simplify nakcnt handling, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 14/20] uhci_fill_queue: zap debug printf, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 07/20] usb-ehci: Any packet completion except for NAK should set the interrupt, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 09/20] usb-ehci: Remove dead nakcnt code, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 17/20] usb-host: enable pipelineing for bulk endpoints., Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 02/20] usb-ehci: Never follow table entries with the T-bit set, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 11/20] usb-ehci: Cleanup itd error handling, Gerd Hoffmann, 2012/03/07
- [Qemu-devel] [PATCH 18/20] usb: add shortcut for control transfers, Gerd Hoffmann, 2012/03/07