aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2012-03-02 21:27:14 +0100
committerGerd Hoffmann <kraxel@redhat.com>2012-03-07 12:28:03 +0100
commit2763cbc751c494dd2f58f902ad80a8048f9cfd7b (patch)
tree6853cb9ab0aa318d957dcbf73abafcbb22e02f62 /hw
parente850c2b45306b59d179c4df93d91edc1c3c45106 (diff)
usb-ehci: Any packet completion except for NAK should set the interrupt
As clearly stated in the 2.3.2 of the EHCI spec, any time USBERRINT get sets then if the td has its IOC bit set USBINT should be set as well. This means that for any status except for USB_RET_NAK we should set USBINT if the IOC bit is set. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/usb-ehci.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/usb-ehci.c b/hw/usb-ehci.c
index d386b8407d..507e4a8148 100644
--- a/hw/usb-ehci.c
+++ b/hw/usb-ehci.c
@@ -1360,7 +1360,7 @@ err:
q->qh.token ^= QTD_TOKEN_DTOGGLE;
q->qh.token &= ~QTD_TOKEN_ACTIVE;
- if ((q->usb_status >= 0) && (q->qh.token & QTD_TOKEN_IOC)) {
+ if ((q->usb_status != USB_RET_NAK) && (q->qh.token & QTD_TOKEN_IOC)) {
ehci_record_interrupt(q->ehci, USBSTS_INT);
}
}