VirtualBox

Changeset 23101 in vbox for trunk/src


Ignore:
Timestamp:
Sep 17, 2009 3:00:50 PM (15 years ago)
Author:
vboxsync
Message:

DevPCNet: fixed rare case of RX freezing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/DevPCNet.cpp

    r22925 r23101  
    26092609{
    26102610    if (CSR_RXON(pThis))
    2611         if (HOST_IS_OWNER(CSR_CRST(pThis)))     /* Only poll RDTEs if none available */
     2611    {
     2612        /*
     2613         * The second case is important for pcnetWaitReceiveAvail(): If CSR_CRST(pThis) was
     2614         * true but pcnetCanReceive() returned false for some other reason we need to check
     2615         * _now_ if we have to wakeup pcnetWaitReceiveAvail().
     2616         */
     2617        if (   HOST_IS_OWNER(CSR_CRST(pThis))  /* only poll RDTEs if none available or ... */
     2618            || pThis->fMaybeOutOfSpace)        /* ... for waking up pcnetWaitReceiveAvail() */
    26122619            pcnetRdtePoll(pThis);
     2620    }
    26132621
    26142622    if (CSR_TDMD(pThis) || (CSR_TXON(pThis) && !CSR_DPOLL(pThis)))
     
    26642672    /* If the receive thread is waiting for new descriptors, poll TX/RX even if polling
    26652673     * disabled. We wouldn't need to poll for new TX descriptors in that case but it will
    2666      * not hurt as waiting for RX descriptors should occur very seldom */
     2674     * not hurt as waiting for RX descriptors should happen very seldom */
    26672675    if (RT_LIKELY(   !CSR_STOP(pThis)
    26682676                  && !CSR_SPND(pThis)
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