VirtualBox

Changeset 45671 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 22, 2013 4:06:38 PM (12 years ago)
Author:
vboxsync
Message:

OHCI: Endpoints may need to be skipped when looking for orphaned URBs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/USB/DevOHCI.cpp

    r45667 r45671  
    35533553    PVUSBURB    pUrb;
    35543554
    3555     /* If the HCCA is not currently valid, there's nothing to do. */
    3556     if (!fValidHCCA)
     3555    /* If the HCCA is not currently valid, or there are no in-flight URBs,
     3556     * there's nothing to do.
     3557     */
     3558    if (!fValidHCCA || !pThis->cInFlight)
    35573559        return;
    35583560
     
    35913593            ohciReadEd(pThis, EdAddr, &Ed);
    35923594            uint32_t TdAddr = Ed.HeadP & ED_PTR_MASK;
     3595            uint32_t TailP  = Ed.TailP & ED_PTR_MASK;
    35933596            unsigned k = 0;
    3594             do
     3597            if (  !(Ed.hwinfo & ED_HWINFO_SKIP)
     3598                && (TdAddr != TailP))
    35953599            {
    3596                 ohciReadTd(pThis, TdAddr, &Td);
    3597                 j = ohci_in_flight_find(pThis, TdAddr);
    3598                 if (j > -1)
    3599                     pThis->aInFlight[j].fInactive = false;
    3600                 TdAddr = Td.NextTD & ED_PTR_MASK;
    3601                 /* Failsafe for temporarily looped lists. */
    3602                 if (++k == 128)
    3603                     break;
    3604             } while (TdAddr != (Ed.TailP & ED_PTR_MASK));
     3600                do
     3601                {
     3602                    ohciReadTd(pThis, TdAddr, &Td);
     3603                    j = ohci_in_flight_find(pThis, TdAddr);
     3604                    if (j > -1)
     3605                        pThis->aInFlight[j].fInactive = false;
     3606                    TdAddr = Td.NextTD & ED_PTR_MASK;
     3607                    /* Failsafe for temporarily looped lists. */
     3608                    if (++k == 128)
     3609                        break;
     3610                } while (TdAddr != (Ed.TailP & ED_PTR_MASK));
     3611            }
    36053612            EdAddr = Ed.NextED & ED_PTR_MASK;
    36063613        }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette