mirror of https://github.com/xemu-project/xemu.git
ehci: simplify ehci_state_executing
ehci_state_executing does not need to check for p->usb_status == USB_RET_ASYNC or USB_RET_PROCERR, since ehci_execute_complete already does a similar check and will trigger an assert if either value is encountered. USB_RET_ASYNC should never be the packet status when execute_complete runs for obvious reasons, and USB_RET_PROCERR is only used by ehci_state_execute / ehci_execute not by ehci_state_executing / ehci_execute_complete. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
53dd6f7032
commit
574ef17191
|
@ -2084,19 +2084,11 @@ out:
|
||||||
static int ehci_state_executing(EHCIQueue *q)
|
static int ehci_state_executing(EHCIQueue *q)
|
||||||
{
|
{
|
||||||
EHCIPacket *p = QTAILQ_FIRST(&q->packets);
|
EHCIPacket *p = QTAILQ_FIRST(&q->packets);
|
||||||
int again = 0;
|
|
||||||
|
|
||||||
assert(p != NULL);
|
assert(p != NULL);
|
||||||
assert(p->qtdaddr == q->qtdaddr);
|
assert(p->qtdaddr == q->qtdaddr);
|
||||||
|
|
||||||
ehci_execute_complete(q);
|
ehci_execute_complete(q);
|
||||||
if (p->usb_status == USB_RET_ASYNC) {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
if (p->usb_status == USB_RET_PROCERR) {
|
|
||||||
again = -1;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4.10.3
|
// 4.10.3
|
||||||
if (!q->async) {
|
if (!q->async) {
|
||||||
|
@ -2114,11 +2106,8 @@ static int ehci_state_executing(EHCIQueue *q)
|
||||||
ehci_set_state(q->ehci, q->async, EST_WRITEBACK);
|
ehci_set_state(q->ehci, q->async, EST_WRITEBACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
again = 1;
|
|
||||||
|
|
||||||
out:
|
|
||||||
ehci_flush_qh(q);
|
ehci_flush_qh(q);
|
||||||
return again;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue