VirtualBox

Ignore:
Timestamp:
Feb 27, 2009 12:37:35 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
43470
Message:

VBoxNetFlt: review of core changes, several review comments needing follow up. untested

Location:
trunk/src/VBox/HostDrivers/VBoxNetAdp
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxNetAdp/VBoxNetAdp.c

    r17118 r17184  
    2020 */
    2121
     22/** @page pg_netadp     VBoxNetAdp - Network Adapter
     23 *
     24 * This is a kernel module that creates a virtual interface that can be attached
     25 * to an internal network.
     26 *
     27 * In the big picture we're one of the three trunk interface on the internal
     28 * network, the one named "TAP Interface": @image html Networking_Overview.gif
     29 *
     30 */
     31
    2232/*******************************************************************************
    2333*   Header Files                                                               *
    2434*******************************************************************************/
    25 #define LOG_GROUP LOG_GROUP_NET_TAP_DRV
     35#define LOG_GROUP LOG_GROUP_NET_ADP_DRV
    2636#include "VBoxNetAdpInternal.h"
    2737
     
    3545#include <iprt/uuid.h>
    3646
     47/** r=bird: why is this here in the agnositc code? */
    3748#ifndef RT_OS_SOLARIS
    38 #include <net/ethernet.h>
    39 #include <net/if_ether.h>
    40 #include <net/if_types.h>
    41 #include <sys/socket.h>
    42 #include <net/if.h>
    43 #include <net/if_dl.h>
    44 #include <sys/errno.h>
    45 #include <sys/param.h>
     49# include <net/ethernet.h>
     50# include <net/if_ether.h>
     51# include <net/if_types.h>
     52# include <sys/socket.h>
     53# include <net/if.h>
     54# include <net/if_dl.h>
     55# include <sys/errno.h>
     56# include <sys/param.h>
    4657#endif
    4758
     
    7990
    8091
     92AssertCompileMemberSize(VBOXNETADP, enmState, sizeof(uint32_t));
    8193
    8294/**
     
    107119    ASMAtomicWriteU32((uint32_t volatile *)&pThis->enmState, enmNewState);
    108120}
     121
    109122
    110123/**
     
    125138    RTSpinlockRelease(pThis->hSpinlock, &Tmp);
    126139}
    127 
    128140
    129141
     
    147159}
    148160
     161
    149162/**
    150163 * Checks and sets the enmState member atomically.
     
    161174    bool fRc = true; /* be optimistic */
    162175    RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
     176
    163177    RTSpinlockAcquire(pThis->hSpinlock, &Tmp);
    164     enmActualState = vboxNetAdpGetState(pThis);
     178    enmActualState = vboxNetAdpGetState(pThis); /** @todo r=bird: ASMAtomicCmpXchgU32()*/
    165179    if (enmActualState == enmOldState)
    166180        vboxNetAdpSetState(pThis, enmNewState);
     
    168182        fRc = false;
    169183    RTSpinlockRelease(pThis->hSpinlock, &Tmp);
     184
    170185    if (fRc)
    171186        Log(("vboxNetAdpCheckAndSetState: pThis=%p, state changed: %d -> %d.\n", pThis, enmOldState, enmNewState));
     
    176191
    177192
    178 
     193/**
     194 * Finds a instance by its name, the caller does the locking.
     195 *
     196 *
     197 * @returns Pointer to the instance by the given name. NULL if not found.
     198 * @param   pGlobals        The globals.
     199 * @param   pszName         The name of the instance.
     200 */
    179201static PVBOXNETADP vboxNetAdpFind(PVBOXNETADPGLOBALS pGlobals, const char *pszName)
    180202{
     
    186208        PVBOXNETADP pThis = &pGlobals->aAdapters[i];
    187209        RTSpinlockAcquire(pThis->hSpinlock, &Tmp);
    188         if (vboxNetAdpGetState(pThis)
    189             && !strcmp(pThis->szName, pszName))
     210        if (    vboxNetAdpGetState(pThis)
     211            &&  !strcmp(pThis->szName, pszName))
    190212        {
    191213            RTSpinlockRelease(pThis->hSpinlock, &Tmp);
     
    196218    return NULL;
    197219}
     220
    198221
    199222/**
     
    226249}
    227250
     251
    228252/**
    229253 * Decrements the busy counter and does idle wakeup.
     
    254278        Assert(cBusy < UINT32_MAX / 2);
    255279}
     280
    256281
    257282/**
     
    285310}
    286311
     312
    287313/**
    288314 * Increments busy counter.
     
    309335}
    310336
     337
    311338/**
    312339 * Checks if receive is possible and increases busy and ref counters if so.
     
    335362    return fCanReceive;
    336363}
     364
    337365
    338366/**
     
    356384    vboxNetAdpRelease(pThis);
    357385}
     386
    358387
    359388/**
     
    424453    vboxNetAdpBusy(pThis);
    425454    RTSpinlockRelease(pThis->hSpinlock, &Tmp);
     455
    426456    rc = vboxNetAdpPortOsXmit(pThis, pSG, fDst);
    427457    vboxNetAdpIdle(pThis);
     
    543573    Log(("vboxNetAdpPortSetActive: pThis=%p, fActive=%d, state before: %d.\n", pThis, fActive, vboxNetAdpGetState(pThis)));
    544574    RTSpinlockAcquire(pThis->hSpinlock, &Tmp);
     575
    545576    fPreviouslyActive = vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Active;
    546577    if (fPreviouslyActive != fActive)
     
    558589        }
    559590    }
     591
    560592    RTSpinlockRelease(pThis->hSpinlock, &Tmp);
    561     Log(("vboxNetAdpPortSetActive: state after: %d.\n", vboxNetAdpGetState(pThis)));
     593    Log(("vboxNetAdpPortSetActive: state after: %RTbool.\n", vboxNetAdpGetState(pThis)));
    562594    return fPreviouslyActive;
    563595}
     
    633665        RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    634666        PVBOXNETADP pThis = &pGlobals->aAdapters[i];
    635    
     667
    636668        if (vboxNetAdpCheckAndSetState(pThis, kVBoxNetAdpState_Invalid, kVBoxNetAdpState_Transitional))
    637669        {
     
    657689    int rc = VINF_SUCCESS;
    658690    RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    659    
     691
    660692    RTSpinlockAcquire(pThis->hSpinlock, &Tmp);
    661693    if (vboxNetAdpGetState(pThis) != kVBoxNetAdpState_Available || pThis->cBusy)
     
    716748}
    717749
     750
    718751/**
    719752 * @copydoc INTNETTRUNKFACTORY::pfnCreateAndConnect
    720753 */
    721754static DECLCALLBACK(int) vboxNetAdpFactoryCreateAndConnect(PINTNETTRUNKFACTORY pIfFactory, const char *pszName,
    722                                                            PINTNETTRUNKSWPORT pSwitchPort, PINTNETTRUNKIFPORT *ppIfPort, bool fNoPromisc)
    723 {
     755                                                           PINTNETTRUNKSWPORT pSwitchPort, uint32_t fFlags,
     756                                                           PINTNETTRUNKIFPORT *ppIfPort)
     757{
     758    PVBOXNETADPGLOBALS pGlobals = (PVBOXNETADPGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETADPGLOBALS, TrunkFactory));
    724759    PVBOXNETADP pThis;
    725760    int rc;
    726     PVBOXNETADPGLOBALS pGlobals = (PVBOXNETADPGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETADPGLOBALS, TrunkFactory));
    727 
    728     LogFlow(("vboxNetAdpFactoryCreateAndConnect: pszName=%p:{%s}\n", pszName, pszName));
     761
     762    LogFlow(("vboxNetAdpFactoryCreateAndConnect: pszName=%p:{%s} fFlags=%#x\n", pszName, pszName, fFlags));
    729763    Assert(pGlobals->cFactoryRefs > 0);
     764    AssertMsgReturn(fFlags,
     765                    ("%#x\n", fFlags), VERR_INVALID_PARAMETER);
    730766
    731767    /*
     
    749785    return rc;
    750786}
     787
    751788
    752789/**
     
    956993}
    957994
     995
    958996/**
    959997 * Called by the native part when the OS wants the driver to unload.
     
    9661004{
    9671005    int rc = vboxNetAdpTryDeleteIdc(pGlobals);
    968     if(RT_SUCCESS(rc))
     1006    if (RT_SUCCESS(rc))
    9691007    {
    9701008        vboxNetAdpDeleteGlobalsBase(pGlobals);
     
    10371075        if (RT_SUCCESS(rc))
    10381076        {
    1039             /* @todo REMOVE ME! */
     1077#if 1 /** @todo REMOVE ME! */
    10401078            PVBOXNETADP pTmp;
    10411079            rc = vboxNetAdpCreate(&pGlobals->TrunkFactory, &pTmp);
    10421080            if (RT_FAILURE(rc))
    10431081                Log(("Failed to create vboxnet0, rc=%Rrc.\n", rc));
     1082#endif
    10441083            Log(("VBoxNetAdp: pSession=%p\n", SUPR0IdcGetSession(&pGlobals->SupDrvIDC)));
    10451084            return rc;
     
    10831122    return rc;
    10841123}
     1124
  • trunk/src/VBox/HostDrivers/VBoxNetAdp/darwin/VBoxNetAdp-darwin.cpp

    r17118 r17184  
    3232#undef PVM
    3333
    34 #define LOG_GROUP LOG_GROUP_NET_TAP_DRV
     34#define LOG_GROUP LOG_GROUP_NET_ADP_DRV
    3535#include <VBox/log.h>
    3636#include <VBox/err.h>
  • trunk/src/VBox/HostDrivers/VBoxNetAdp/solaris/VBoxNetAdp-solaris.c

    r17025 r17184  
    2727#endif
    2828
    29 #define LOG_GROUP LOG_GROUP_NET_TAP_DRV
     29#define LOG_GROUP LOG_GROUP_NET_ADP_DRV
    3030#include <VBox/log.h>
    3131#include <VBox/err.h>
Note: See TracChangeset for help on using the changeset viewer.

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