VirtualBox

Changeset 92864 in vbox for trunk/src/VBox/Devices/Network


Ignore:
Timestamp:
Dec 10, 2021 2:27:11 PM (3 years ago)
Author:
vboxsync
Message:

Dev/E1000: bugref:10114 Introduces device attachment flag to resolve link status issue with Oracle Linux guests.

File:
1 edited

Legend:

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

    r91485 r92864  
    10681068    /** EMT: false if the cable is disconnected by the GUI. */
    10691069    bool        fCableConnected;
     1070    /** true if the device is attached to a driver. */
     1071    bool        fIsAttached;
    10701072    /** EMT: Compute Ethernet CRC for RX packets. */
    10711073    bool        fEthernetCRC;
     
    29302932{
    29312933    PE1KSTATE     pThis   = PDMDEVINS_2_DATA(pDevIns, PE1KSTATE);
    2932     PE1KSTATECC   pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PE1KSTATECC);
    2933     return pThis->fCableConnected && pThisCC->CTX_SUFF(pDrv);
     2934    return pThis->fCableConnected && pThis->fIsAttached;
    29342935}
    29352936
     
    29482949    if (e1kIsConnected(pDevIns) && (CTRL & CTRL_SLU))
    29492950        e1kArmTimer(pDevIns, pThis, pThis->hLUTimer, E1K_INIT_LINKUP_DELAY_US);
     2951    else
     2952        Log(("%s PHY link reset callback ignored (cable %sconnected, driver %stached, CTRL_SLU=%u)\n", pThis->szPrf,
     2953             pThis->fCableConnected ? "" : "dis", pThis->fIsAttached ? "at" : "de", CTRL & CTRL_SLU ? 1 : 0));
    29502954}
    29512955
     
    76207624    e1kR3CsEnterAsserted(pThis);
    76217625
     7626    /* Mark device as detached. */
     7627    pThis->fIsAttached = false;
    76227628    /*
    76237629     * Zero some important members.
     
    76717677            pThisRC->pDrvRC = PDMIBASERC_QUERY_INTERFACE(PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMIBASERC), PDMINETWORKUP);
    76727678#endif
     7679            /* Mark device as attached. */
     7680            pThis->fIsAttached = true;
    76737681        }
    76747682    }
     
    78917899    pThis->led.u32Magic = PDMLED_MAGIC;
    78927900    pThis->u32PktNo     = 1;
     7901    pThis->fIsAttached  = false;
    78937902
    78947903    pThisCC->pDevInsR3  = pDevIns;
     
    81608169        pThisRC->pDrvRC = PDMIBASERC_QUERY_INTERFACE(PDMIBASE_QUERY_INTERFACE(pThisCC->pDrvBase, PDMIBASERC), PDMINETWORKUP);
    81618170#endif
     8171        /* Mark device as attached. */
     8172        pThis->fIsAttached = true;
    81628173    }
    81638174    else if (   rc == VERR_PDM_NO_ATTACHED_DRIVER
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