Revision df787185 hw/usb-ehci.c

b/hw/usb-ehci.c
1510 1510
                    /* IN */
1511 1511
                    set_field(&itd->transact[i], ret, ITD_XACT_LENGTH);
1512 1512
                }
1513

  
1514
                if (itd->transact[i] & ITD_XACT_IOC) {
1515
                    ehci_record_interrupt(ehci, USBSTS_INT);
1513
            } else {
1514
                switch (ret) {
1515
                default:
1516
                    fprintf(stderr, "Unexpected iso usb result: %d\n", ret);
1517
                    /* Fall through */
1518
                case USB_RET_NODEV:
1519
                    /* 3.3.2: XACTERR is only allowed on IN transactions */
1520
                    if (dir) {
1521
                        itd->transact[i] |= ITD_XACT_XACTERR;
1522
                        ehci_record_interrupt(ehci, USBSTS_ERRINT);
1523
                    }
1524
                    break;
1525
                case USB_RET_BABBLE:
1526
                    itd->transact[i] |= ITD_XACT_BABBLE;
1527
                    ehci_record_interrupt(ehci, USBSTS_ERRINT);
1528
                    break;
1516 1529
                }
1517 1530
            }
1531
            if (itd->transact[i] & ITD_XACT_IOC) {
1532
                ehci_record_interrupt(ehci, USBSTS_INT);
1533
            }
1518 1534
            itd->transact[i] &= ~ITD_XACT_ACTIVE;
1519 1535
        }
1520 1536
    }

Also available in: Unified diff