VirtualBox

Changeset 44540 in vbox


Ignore:
Timestamp:
Feb 5, 2013 1:02:18 PM (12 years ago)
Author:
vboxsync
Message:

DevE1000.cpp: Some more cleanups.

File:
1 edited

Legend:

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

    r44537 r44540  
    209209
    210210#ifdef E1K_INT_STATS
    211 # define E1K_INC_ISTAT_CNT(cnt) ++cnt
     211# define E1K_INC_ISTAT_CNT(cnt) do { ++cnt; } while (0)
    212212#else /* E1K_INT_STATS */
    213 # define E1K_INC_ISTAT_CNT(cnt)
     213# define E1K_INC_ISTAT_CNT(cnt) do { } while (0)
    214214#endif /* E1K_INT_STATS */
    215215
     
    263263#define SET_BITS_V(val, reg, bits, bitval) do { val = (val & ~reg##_##bits##_MASK) | (bitval << reg##_##bits##_SHIFT); } while (0)
    264264
    265 #define CTRL_SLU        0x00000040
    266 #define CTRL_MDIO       0x00100000
    267 #define CTRL_MDC        0x00200000
    268 #define CTRL_MDIO_DIR   0x01000000
    269 #define CTRL_MDC_DIR    0x02000000
    270 #define CTRL_RESET      0x04000000
    271 #define CTRL_VME        0x40000000
    272 
    273 #define STATUS_LU       0x00000002
    274 #define STATUS_TXOFF    0x00000010
    275 
    276 #define EECD_EE_WIRES 0x0F
    277 #define EECD_EE_REQ   0x40
    278 #define EECD_EE_GNT   0x80
    279 
    280 #define EERD_START       0x00000001
    281 #define EERD_DONE        0x00000010
    282 #define EERD_DATA_MASK   0xFFFF0000
    283 #define EERD_DATA_SHIFT  16
    284 #define EERD_ADDR_MASK   0x0000FF00
    285 #define EERD_ADDR_SHIFT  8
    286 
    287 #define MDIC_DATA_MASK  0x0000FFFF
    288 #define MDIC_DATA_SHIFT 0
    289 #define MDIC_REG_MASK   0x001F0000
    290 #define MDIC_REG_SHIFT  16
    291 #define MDIC_PHY_MASK   0x03E00000
    292 #define MDIC_PHY_SHIFT  21
    293 #define MDIC_OP_WRITE   0x04000000
    294 #define MDIC_OP_READ    0x08000000
    295 #define MDIC_READY      0x10000000
    296 #define MDIC_INT_EN     0x20000000
    297 #define MDIC_ERROR      0x40000000
    298 
    299 #define TCTL_EN         0x00000002
    300 #define TCTL_PSP        0x00000008
    301 
    302 #define RCTL_EN          0x00000002
    303 #define RCTL_UPE         0x00000008
    304 #define RCTL_MPE         0x00000010
    305 #define RCTL_LPE         0x00000020
    306 #define RCTL_LBM_MASK    0x000000C0
    307 #define RCTL_LBM_SHIFT   6
    308 #define RCTL_RDMTS_MASK  0x00000300
    309 #define RCTL_RDMTS_SHIFT 8
    310 #define RCTL_LBM_TCVR    3              /**< PHY or external SerDes loopback. */
    311 #define RCTL_MO_MASK     0x00003000
    312 #define RCTL_MO_SHIFT    12
    313 #define RCTL_BAM         0x00008000
    314 #define RCTL_BSIZE_MASK  0x00030000
    315 #define RCTL_BSIZE_SHIFT 16
    316 #define RCTL_VFE         0x00040000
    317 #define RCTL_CFIEN       0x00080000
    318 #define RCTL_CFI         0x00100000
    319 #define RCTL_BSEX        0x02000000
    320 #define RCTL_SECRC       0x04000000
    321 
    322 #define ICR_TXDW         0x00000001
    323 #define ICR_TXQE         0x00000002
    324 #define ICR_LSC          0x00000004
    325 #define ICR_RXDMT0       0x00000010
    326 #define ICR_RXT0         0x00000080
    327 #define ICR_TXD_LOW      0x00008000
    328 #define RDTR_FPD         0x80000000
     265#define CTRL_SLU            UINT32_C(0x00000040)
     266#define CTRL_MDIO           UINT32_C(0x00100000)
     267#define CTRL_MDC            UINT32_C(0x00200000)
     268#define CTRL_MDIO_DIR       UINT32_C(0x01000000)
     269#define CTRL_MDC_DIR        UINT32_C(0x02000000)
     270#define CTRL_RESET          UINT32_C(0x04000000)
     271#define CTRL_VME            UINT32_C(0x40000000)
     272
     273#define STATUS_LU           UINT32_C(0x00000002)
     274#define STATUS_TXOFF        UINT32_C(0x00000010)
     275
     276#define EECD_EE_WIRES       UINT32_C(0x0F)
     277#define EECD_EE_REQ         UINT32_C(0x40)
     278#define EECD_EE_GNT         UINT32_C(0x80)
     279
     280#define EERD_START          UINT32_C(0x00000001)
     281#define EERD_DONE           UINT32_C(0x00000010)
     282#define EERD_DATA_MASK      UINT32_C(0xFFFF0000)
     283#define EERD_DATA_SHIFT     16
     284#define EERD_ADDR_MASK      UINT32_C(0x0000FF00)
     285#define EERD_ADDR_SHIFT     8
     286
     287#define MDIC_DATA_MASK      UINT32_C(0x0000FFFF)
     288#define MDIC_DATA_SHIFT     0
     289#define MDIC_REG_MASK       UINT32_C(0x001F0000)
     290#define MDIC_REG_SHIFT      16
     291#define MDIC_PHY_MASK       UINT32_C(0x03E00000)
     292#define MDIC_PHY_SHIFT      21
     293#define MDIC_OP_WRITE       UINT32_C(0x04000000)
     294#define MDIC_OP_READ        UINT32_C(0x08000000)
     295#define MDIC_READY          UINT32_C(0x10000000)
     296#define MDIC_INT_EN         UINT32_C(0x20000000)
     297#define MDIC_ERROR          UINT32_C(0x40000000)
     298
     299#define TCTL_EN             UINT32_C(0x00000002)
     300#define TCTL_PSP            UINT32_C(0x00000008)
     301
     302#define RCTL_EN             UINT32_C(0x00000002)
     303#define RCTL_UPE            UINT32_C(0x00000008)
     304#define RCTL_MPE            UINT32_C(0x00000010)
     305#define RCTL_LPE            UINT32_C(0x00000020)
     306#define RCTL_LBM_MASK       UINT32_C(0x000000C0)
     307#define RCTL_LBM_SHIFT      6
     308#define RCTL_RDMTS_MASK     UINT32_C(0x00000300)
     309#define RCTL_RDMTS_SHIFT    8
     310#define RCTL_LBM_TCVR       UINT32_C(3)                 /**< PHY or external SerDes loopback. */
     311#define RCTL_MO_MASK        UINT32_C(0x00003000)
     312#define RCTL_MO_SHIFT       12
     313#define RCTL_BAM            UINT32_C(0x00008000)
     314#define RCTL_BSIZE_MASK     UINT32_C(0x00030000)
     315#define RCTL_BSIZE_SHIFT    16
     316#define RCTL_VFE            UINT32_C(0x00040000)
     317#define RCTL_CFIEN          UINT32_C(0x00080000)
     318#define RCTL_CFI            UINT32_C(0x00100000)
     319#define RCTL_BSEX           UINT32_C(0x02000000)
     320#define RCTL_SECRC          UINT32_C(0x04000000)
     321
     322#define ICR_TXDW            UINT32_C(0x00000001)
     323#define ICR_TXQE            UINT32_C(0x00000002)
     324#define ICR_LSC             UINT32_C(0x00000004)
     325#define ICR_RXDMT0          UINT32_C(0x00000010)
     326#define ICR_RXT0            UINT32_C(0x00000080)
     327#define ICR_TXD_LOW         UINT32_C(0x00008000)
     328#define RDTR_FPD            UINT32_C(0x80000000)
    329329
    330330#define PBA_st  ((PBAST*)(pState->auRegs + PBA_IDX))
     
    342342#define TXDCTL_LWTHRESH_SHIFT 25
    343343
    344 #define RXCSUM_PCSS_MASK  0x000000FF
    345 #define RXCSUM_PCSS_SHIFT 0
    346 
    347 /* Register access macros ****************************************************/
     344#define RXCSUM_PCSS_MASK    UINT32_C(0x000000FF)
     345#define RXCSUM_PCSS_SHIFT   0
     346
     347/** @name Register access macros
     348 * @{ */
    348349#define CTRL     pState->auRegs[CTRL_IDX]
    349350#define STATUS   pState->auRegs[STATUS_IDX]
     
    467468#define IPAV     pState->auRegs[IPAV_IDX]
    468469#define WUPL     pState->auRegs[WUPL_IDX]
    469 
    470 /**
    471  * Indices of memory-mapped registers in register table
     470/** @} */
     471
     472/**
     473 * Indices of memory-mapped registers in register table.
    472474 */
    473475typedef enum
     
    616618 * Define E1000-specific EEPROM layout.
    617619 */
    618 class E1kEEPROM
     620struct E1kEEPROM
    619621{
    620622    public:
     
    922924AssertCompileSize(E1KRA, 8*16);
    923925
    924 #define E1K_IP_RF 0x8000        /* reserved fragment flag */
    925 #define E1K_IP_DF 0x4000        /* dont fragment flag */
    926 #define E1K_IP_MF 0x2000        /* more fragments flag */
    927 #define E1K_IP_OFFMASK 0x1fff   /* mask for fragmenting bits */
     926#define E1K_IP_RF       UINT16_C(0x8000)   /**< reserved fragment flag */
     927#define E1K_IP_DF       UINT16_C(0x4000)   /**< dont fragment flag */
     928#define E1K_IP_MF       UINT16_C(0x2000)   /**< more fragments flag */
     929#define E1K_IP_OFFMASK  UINT16_C(0x1fff)   /**< mask for fragmenting bits */
    928930
    929931/** @todo use+extend RTNETIPV4 */
     
    949951AssertCompileSize(struct E1kIpHeader, 20);
    950952
    951 #define E1K_TCP_FIN 0x01U
    952 #define E1K_TCP_SYN 0x02U
    953 #define E1K_TCP_RST 0x04U
    954 #define E1K_TCP_PSH 0x08U
    955 #define E1K_TCP_ACK 0x10U
    956 #define E1K_TCP_URG 0x20U
    957 #define E1K_TCP_ECE 0x40U
    958 #define E1K_TCP_CWR 0x80U
    959 
    960 #define E1K_TCP_FLAGS 0x3fU
     953#define E1K_TCP_FIN     UINT16_C(0x01)
     954#define E1K_TCP_SYN     UINT16_C(0x02)
     955#define E1K_TCP_RST     UINT16_C(0x04)
     956#define E1K_TCP_PSH     UINT16_C(0x08)
     957#define E1K_TCP_ACK     UINT16_C(0x10)
     958#define E1K_TCP_URG     UINT16_C(0x20)
     959#define E1K_TCP_ECE     UINT16_C(0x40)
     960#define E1K_TCP_CWR     UINT16_C(0x80)
     961#define E1K_TCP_FLAGS   UINT16_C(0x3f)
    961962
    962963/** @todo use+extend RTNETTCP */
     
    977978#ifdef E1K_WITH_TXD_CACHE
    978979/** The current Saved state version. */
    979 #define E1K_SAVEDSTATE_VERSION          4
     980# define E1K_SAVEDSTATE_VERSION         4
    980981/** Saved state version for VirtualBox 4.2 with VLAN tag fields.  */
    981 #define E1K_SAVEDSTATE_VERSION_VBOX_42_VTAG  3
     982# define E1K_SAVEDSTATE_VERSION_VBOX_42_VTAG  3
    982983#else /* !E1K_WITH_TXD_CACHE */
    983984/** The current Saved state version. */
    984 #define E1K_SAVEDSTATE_VERSION          3
     985# define E1K_SAVEDSTATE_VERSION         3
    985986#endif /* !E1K_WITH_TXD_CACHE */
    986987/** Saved state version for VirtualBox 4.1 and earlier.
     
    992993
    993994/**
    994  * Device state structure. Holds the current state of device.
     995 * Device state structure.
     996 *
     997 * Holds the current state of device.
    995998 *
    996999 * @implements  PDMINETWORKDOWN
     
    12291232    uint32_t    uStatInt;
    12301233    uint32_t    uStatIntTry;
    1231     int32_t     uStatIntLower;
     1234    uint32_t    uStatIntLower;
    12321235    uint32_t    uStatIntDly;
    12331236    int32_t     iStatIntLost;
     
    12701273};
    12711274typedef struct E1kState_st E1KSTATE;
     1275/** Pointer to the E1000 device state. */
     1276typedef E1KSTATE *PE1KSTATE;
    12721277
    12731278#ifndef VBOX_DEVICE_STRUCT_TESTCASE
     
    15671572# define e1kCsTxEnter(ps, rc) VINF_SUCCESS
    15681573# define e1kCsTxLeave(ps) do { } while (0)
    1569 # define e1kCsIsOwner(cs) true
    15701574#else /* E1K_WITH_TX_CS */
    15711575# define e1kCsTxEnter(ps, rc) PDMCritSectEnter(&ps->csTx, rc)
    15721576# define e1kCsTxLeave(ps) PDMCritSectLeave(&ps->csTx)
    1573 # define e1kCsIsOwner(cs) PDMCritSectIsOwner(cs)
    15741577#endif /* E1K_WITH_TX_CS */
    15751578
     
    30963099{
    30973100    E1KSTATE *pState = (E1KSTATE *)pvUser;
    3098     Assert(e1kCsIsOwner(&pState->csTx));
     3101    Assert(PDMCritSectIsOwner(&pState->csTx));
    30993102
    31003103    E1K_INC_ISTAT_CNT(pState->uStatTxDelayExp);
     
    31033106    if (u64Elapsed > pState->uStatMaxTxDelay)
    31043107        pState->uStatMaxTxDelay = u64Elapsed;
    3105 #endif /* E1K_INT_STATS */
     3108#endif
    31063109    int rc = e1kXmitPending(pState, false /*fOnWorkerThread*/);
    31073110    AssertMsg(RT_SUCCESS(rc) || rc == VERR_TRY_AGAIN, ("%Rrc\n", rc));
     
    52505253#ifdef E1K_INT_STATS
    52515254                pState->u64ArmedAt = RTTimeNanoTS();
    5252 #endif /* E1K_INT_STATS */
     5255#endif
    52535256                e1kArmTimer(pState, pState->CTX_SUFF(pTXDTimer), E1K_TX_DELAY);
    52545257            }
     
    52595262        /* We failed to enter the TX critical section -- transmit as usual. */
    52605263#endif /* E1K_TX_DELAY */
    5261 # ifndef IN_RING3
     5264#ifndef IN_RING3
    52625265        if (!pState->CTX_SUFF(pDrv))
    52635266        {
     
    52675270        }
    52685271        else
    5269 # endif
     5272#endif
    52705273        {
    52715274            rc = e1kXmitPending(pState, false /*fOnWorkerThread*/);
     
    56285631 *
    56295632 * @param   pState      The device state structure.
    5630  * @param   uOffset     Register offset in memory-mapped frame.
     5633 * @param   offReg      Register offset in memory-mapped frame.
    56315634 * @param   pv          Where to fetch the value.
    56325635 * @param   cb          Number of bytes to write.
    56335636 * @thread  EMT
    56345637 */
    5635 static int e1kRegWrite(E1KSTATE *pState, uint32_t uOffset, void const *pv, unsigned cb)
     5638static int e1kRegWrite(E1KSTATE *pState, uint32_t offReg, void const *pv, unsigned cb)
    56365639{
    56375640    int         rc     = VINF_SUCCESS;
    5638     int         index  = e1kRegLookup(pState, uOffset);
     5641    int         index  = e1kRegLookup(pState, offReg);
    56395642    uint32_t    u32;
    56405643
     
    56485651    {
    56495652        E1kLog(("%s e1kRegWrite: Spec violation: unsupported op size: offset=%#10x cb=%#10x, ignored.\n",
    5650                 INSTANCE(pState), uOffset, cb));
     5653                INSTANCE(pState), offReg, cb));
    56515654        return VINF_SUCCESS;
    56525655    }
    5653     if (uOffset & 3)
     5656    if (offReg & 3)
    56545657    {
    56555658        E1kLog(("%s e1kRegWrite: Spec violation: misaligned offset: %#10x cb=%#10x, ignored.\n",
    5656                 INSTANCE(pState), uOffset, cb));
     5659                INSTANCE(pState), offReg, cb));
    56575660        return VINF_SUCCESS;
    56585661    }
     
    56675670             */
    56685671            E1kLog2(("%s At %08X write          %08X  to  %s (%s)\n",
    5669                      INSTANCE(pState), uOffset, u32, s_e1kRegMap[index].abbrev, s_e1kRegMap[index].name));
     5672                     INSTANCE(pState), offReg, u32, s_e1kRegMap[index].abbrev, s_e1kRegMap[index].name));
    56705673            //rc = e1kCsEnter(pState, VERR_SEM_BUSY, RT_SRC_POS);
    56715674            if (RT_UNLIKELY(rc != VINF_SUCCESS))
     
    56745677            //pState->iStatIntLost += pState->iStatIntLostOne;
    56755678            //pState->iStatIntLostOne = 0;
    5676             rc = s_e1kRegMap[index].pfnWrite(pState, uOffset, index, u32);
     5679            rc = s_e1kRegMap[index].pfnWrite(pState, offReg, index, u32);
    56775680            //e1kCsLeave(pState);
    56785681        }
     
    56805683        {
    56815684            E1kLog(("%s At %08X write attempt (%08X) to  read-only register %s (%s)\n",
    5682                     INSTANCE(pState), uOffset, u32, s_e1kRegMap[index].abbrev, s_e1kRegMap[index].name));
     5685                    INSTANCE(pState), offReg, u32, s_e1kRegMap[index].abbrev, s_e1kRegMap[index].name));
    56835686        }
    56845687    }
     
    56865689    {
    56875690        E1kLog(("%s At %08X write attempt (%08X) to  non-existing register\n",
    5688                 INSTANCE(pState), uOffset, u32));
     5691                INSTANCE(pState), offReg, u32));
    56895692    }
    56905693    return rc;
     
    57105713    NOREF(pvUser);
    57115714    E1KSTATE  *pState = PDMINS_2_DATA(pDevIns, E1KSTATE *);
    5712     uint32_t  uOffset = GCPhysAddr - pState->addrMMReg;
     5715    uint32_t  offReg = GCPhysAddr - pState->addrMMReg;
    57135716    STAM_PROFILE_ADV_START(&pState->CTX_SUFF_Z(StatMMIORead), a);
    57145717
    5715     Assert(uOffset < E1K_MM_SIZE);
    5716 
    5717     int rc = e1kRegRead(pState, uOffset, pv, cb);
     5718    Assert(offReg < E1K_MM_SIZE);
     5719
     5720    int rc = e1kRegRead(pState, offReg, pv, cb);
    57185721    STAM_PROFILE_ADV_STOP(&pState->CTX_SUFF_Z(StatMMIORead), a);
    57195722    return rc;
     
    57365739    NOREF(pvUser);
    57375740    E1KSTATE  *pState = PDMINS_2_DATA(pDevIns, E1KSTATE *);
    5738     uint32_t  uOffset = GCPhysAddr - pState->addrMMReg;
     5741    uint32_t  offReg = GCPhysAddr - pState->addrMMReg;
    57395742    int       rc;
    57405743    STAM_PROFILE_ADV_START(&pState->CTX_SUFF_Z(StatMMIOWrite), a);
    57415744
    5742     Assert(uOffset < E1K_MM_SIZE);
     5745    Assert(offReg < E1K_MM_SIZE);
    57435746    if (cb != 4)
    57445747    {
    5745         E1kLog(("%s e1kMMIOWrite: invalid op size: offset=%#10x cb=%#10x", pDevIns, uOffset, cb));
    5746         rc = PDMDevHlpDBGFStop(pDevIns, RT_SRC_POS, "e1kMMIOWrite: invalid op size: offset=%#10x cb=%#10x\n", uOffset, cb);
     5748        E1kLog(("%s e1kMMIOWrite: invalid op size: offset=%#10x cb=%#10x", pDevIns, offReg, cb));
     5749        rc = PDMDevHlpDBGFStop(pDevIns, RT_SRC_POS, "e1kMMIOWrite: invalid op size: offset=%#10x cb=%#10x\n", offReg, cb);
    57475750    }
    57485751    else
    5749         rc = e1kRegWrite(pState, uOffset, pv, cb);
     5752        rc = e1kRegWrite(pState, offReg, pv, cb);
    57505753
    57515754    STAM_PROFILE_ADV_STOP(&pState->CTX_SUFF_Z(StatMMIOWrite), a);
     
    72127215
    72137216/**
    7214  * Sets 8-bit register in PCI configuration space.
    7215  * @param   refPciDev   The PCI device.
    7216  * @param   uOffset     The register offset.
    7217  * @param   u16Value    The value to store in the register.
    7218  * @thread  EMT
    7219  */
    7220 DECLINLINE(void) e1kPCICfgSetU8(PCIDEVICE& refPciDev, uint32_t uOffset, uint8_t u8Value)
    7221 {
    7222     Assert(uOffset < sizeof(refPciDev.config));
    7223     refPciDev.config[uOffset] = u8Value;
    7224 }
    7225 
    7226 /**
    7227  * Sets 16-bit register in PCI configuration space.
    7228  * @param   refPciDev   The PCI device.
    7229  * @param   uOffset     The register offset.
    7230  * @param   u16Value    The value to store in the register.
    7231  * @thread  EMT
    7232  */
    7233 DECLINLINE(void) e1kPCICfgSetU16(PCIDEVICE& refPciDev, uint32_t uOffset, uint16_t u16Value)
    7234 {
    7235     Assert(uOffset+sizeof(u16Value) <= sizeof(refPciDev.config));
    7236     *(uint16_t*)&refPciDev.config[uOffset] = u16Value;
    7237 }
    7238 
    7239 /**
    7240  * Sets 32-bit register in PCI configuration space.
    7241  * @param   refPciDev   The PCI device.
    7242  * @param   uOffset     The register offset.
    7243  * @param   u32Value    The value to store in the register.
    7244  * @thread  EMT
    7245  */
    7246 DECLINLINE(void) e1kPCICfgSetU32(PCIDEVICE& refPciDev, uint32_t uOffset, uint32_t u32Value)
    7247 {
    7248     Assert(uOffset+sizeof(u32Value) <= sizeof(refPciDev.config));
    7249     *(uint32_t*)&refPciDev.config[uOffset] = u32Value;
    7250 }
    7251 
    7252 /**
    72537217 * Set PCI configuration space registers.
    72547218 *
     
    72567220 * @thread  EMT
    72577221 */
    7258 static DECLCALLBACK(void) e1kConfigurePCI(PCIDEVICE& pci, E1KCHIP eChip)
     7222static DECLCALLBACK(void) e1kConfigurePciDev(PPCIDEVICE pPciDev, E1KCHIP eChip)
    72597223{
    72607224    Assert(eChip < RT_ELEMENTS(g_Chips));
    72617225    /* Configure PCI Device, assume 32-bit mode ******************************/
    7262     PCIDevSetVendorId(&pci, g_Chips[eChip].uPCIVendorId);
    7263     PCIDevSetDeviceId(&pci, g_Chips[eChip].uPCIDeviceId);
    7264     e1kPCICfgSetU16(pci, VBOX_PCI_SUBSYSTEM_VENDOR_ID, g_Chips[eChip].uPCISubsystemVendorId);
    7265     e1kPCICfgSetU16(pci, VBOX_PCI_SUBSYSTEM_ID, g_Chips[eChip].uPCISubsystemId);
    7266 
    7267     e1kPCICfgSetU16(pci, VBOX_PCI_COMMAND,            0x0000);
     7226    PCIDevSetVendorId(pPciDev, g_Chips[eChip].uPCIVendorId);
     7227    PCIDevSetDeviceId(pPciDev, g_Chips[eChip].uPCIDeviceId);
     7228    PCIDevSetWord( pPciDev, VBOX_PCI_SUBSYSTEM_VENDOR_ID, g_Chips[eChip].uPCISubsystemVendorId);
     7229    PCIDevSetWord( pPciDev, VBOX_PCI_SUBSYSTEM_ID, g_Chips[eChip].uPCISubsystemId);
     7230
     7231    PCIDevSetWord( pPciDev, VBOX_PCI_COMMAND,            0x0000);
    72687232    /* DEVSEL Timing (medium device), 66 MHz Capable, New capabilities */
    7269     e1kPCICfgSetU16(pci, VBOX_PCI_STATUS,
    7270                     VBOX_PCI_STATUS_DEVSEL_MEDIUM | VBOX_PCI_STATUS_CAP_LIST |  VBOX_PCI_STATUS_66MHZ);
     7233    PCIDevSetWord( pPciDev, VBOX_PCI_STATUS,
     7234                   VBOX_PCI_STATUS_DEVSEL_MEDIUM | VBOX_PCI_STATUS_CAP_LIST |  VBOX_PCI_STATUS_66MHZ);
    72717235    /* Stepping A2 */
    7272     e1kPCICfgSetU8( pci, VBOX_PCI_REVISION_ID,          0x02);
     7236    PCIDevSetByte( pPciDev, VBOX_PCI_REVISION_ID,          0x02);
    72737237    /* Ethernet adapter */
    7274     e1kPCICfgSetU8( pci, VBOX_PCI_CLASS_PROG,           0x00);
    7275     e1kPCICfgSetU16(pci, VBOX_PCI_CLASS_DEVICE,       0x0200);
     7238    PCIDevSetByte( pPciDev, VBOX_PCI_CLASS_PROG,           0x00);
     7239    PCIDevSetWord( pPciDev, VBOX_PCI_CLASS_DEVICE,       0x0200);
    72767240    /* normal single function Ethernet controller */
    7277     e1kPCICfgSetU8( pci, VBOX_PCI_HEADER_TYPE,          0x00);
     7241    PCIDevSetByte( pPciDev, VBOX_PCI_HEADER_TYPE,          0x00);
    72787242    /* Memory Register Base Address */
    7279     e1kPCICfgSetU32(pci, VBOX_PCI_BASE_ADDRESS_0, 0x00000000);
     7243    PCIDevSetDWord(pPciDev, VBOX_PCI_BASE_ADDRESS_0, 0x00000000);
    72807244    /* Memory Flash Base Address */
    7281     e1kPCICfgSetU32(pci, VBOX_PCI_BASE_ADDRESS_1, 0x00000000);
     7245    PCIDevSetDWord(pPciDev, VBOX_PCI_BASE_ADDRESS_1, 0x00000000);
    72827246    /* IO Register Base Address */
    7283     e1kPCICfgSetU32(pci, VBOX_PCI_BASE_ADDRESS_2, 0x00000001);
     7247    PCIDevSetDWord(pPciDev, VBOX_PCI_BASE_ADDRESS_2, 0x00000001);
    72847248    /* Expansion ROM Base Address */
    7285     e1kPCICfgSetU32(pci, VBOX_PCI_ROM_ADDRESS,    0x00000000);
     7249    PCIDevSetDWord(pPciDev, VBOX_PCI_ROM_ADDRESS,    0x00000000);
    72867250    /* Capabilities Pointer */
    7287     e1kPCICfgSetU8( pci, VBOX_PCI_CAPABILITY_LIST,      0xDC);
     7251    PCIDevSetByte( pPciDev, VBOX_PCI_CAPABILITY_LIST,      0xDC);
    72887252    /* Interrupt Pin: INTA# */
    7289     e1kPCICfgSetU8( pci, VBOX_PCI_INTERRUPT_PIN,        0x01);
     7253    PCIDevSetByte( pPciDev, VBOX_PCI_INTERRUPT_PIN,        0x01);
    72907254    /* Max_Lat/Min_Gnt: very high priority and time slice */
    7291     e1kPCICfgSetU8( pci, VBOX_PCI_MIN_GNT,              0xFF);
    7292     e1kPCICfgSetU8( pci, VBOX_PCI_MAX_LAT,              0x00);
     7255    PCIDevSetByte( pPciDev, VBOX_PCI_MIN_GNT,              0xFF);
     7256    PCIDevSetByte( pPciDev, VBOX_PCI_MAX_LAT,              0x00);
    72937257
    72947258    /* PCI Power Management Registers ****************************************/
    72957259    /* Capability ID: PCI Power Management Registers */
    7296     e1kPCICfgSetU8( pci, 0xDC,                           VBOX_PCI_CAP_ID_PM);
     7260    PCIDevSetByte( pPciDev, 0xDC,            VBOX_PCI_CAP_ID_PM);
    72977261    /* Next Item Pointer: PCI-X */
    7298     e1kPCICfgSetU8( pci, 0xDC + 1,                      0xE4);
     7262    PCIDevSetByte( pPciDev, 0xDC + 1,                      0xE4);
    72997263    /* Power Management Capabilities: PM disabled, DSI */
    7300     e1kPCICfgSetU16(pci, 0xDC + 2,
     7264    PCIDevSetWord( pPciDev, 0xDC + 2,
    73017265                    0x0002 | VBOX_PCI_PM_CAP_DSI);
    73027266    /* Power Management Control / Status Register: PM disabled */
    7303     e1kPCICfgSetU16(pci, 0xDC + 4,                    0x0000);
     7267    PCIDevSetWord( pPciDev, 0xDC + 4,                    0x0000);
    73047268    /* PMCSR_BSE Bridge Support Extensions: Not supported */
    7305     e1kPCICfgSetU8( pci, 0xDC + 6,                      0x00);
     7269    PCIDevSetByte( pPciDev, 0xDC + 6,                      0x00);
    73067270    /* Data Register: PM disabled, always 0 */
    7307     e1kPCICfgSetU8( pci, 0xDC + 7,                      0x00);
     7271    PCIDevSetByte( pPciDev, 0xDC + 7,                      0x00);
    73087272
    73097273    /* PCI-X Configuration Registers *****************************************/
    73107274    /* Capability ID: PCI-X Configuration Registers */
    7311     e1kPCICfgSetU8( pci, 0xE4,                           VBOX_PCI_CAP_ID_PCIX);
     7275    PCIDevSetByte( pPciDev, 0xE4,          VBOX_PCI_CAP_ID_PCIX);
    73127276#ifdef E1K_WITH_MSI
    7313     e1kPCICfgSetU8( pci, 0xE4 + 1,                      0x80);
     7277    PCIDevSetByte( pPciDev, 0xE4 + 1,                      0x80);
    73147278#else
    73157279    /* Next Item Pointer: None (Message Signalled Interrupts are disabled) */
    7316     e1kPCICfgSetU8( pci, 0xE4 + 1,                      0x00);
     7280    PCIDevSetByte( pPciDev, 0xE4 + 1,                      0x00);
    73177281#endif
    73187282    /* PCI-X Command: Enable Relaxed Ordering */
    7319     e1kPCICfgSetU16(pci, 0xE4 + 2,                    VBOX_PCI_X_CMD_ERO);
     7283    PCIDevSetWord( pPciDev, 0xE4 + 2,        VBOX_PCI_X_CMD_ERO);
    73207284    /* PCI-X Status: 32-bit, 66MHz*/
    73217285    /** @todo is this value really correct? fff8 doesn't look like actual PCI address */
    7322     e1kPCICfgSetU32(pci, 0xE4 + 4,                0x0040FFF8);
     7286    PCIDevSetDWord(pPciDev, 0xE4 + 4,                0x0040FFF8);
    73237287}
    73247288
     
    73347298    /*
    73357299     * Initialize the instance data (state).
     7300     * Note! Caller has initialized it to ZERO already.
    73367301     */
    73377302    RTStrPrintf(pThis->szInstance, sizeof(pThis->szInstance), "E1000#%d", iInstance);
     
    73507315    pThis->led.u32Magic = PDMLED_MAGIC;
    73517316    pThis->u32PktNo     = 1;
    7352 
    7353 #ifdef E1K_INT_STATS
    7354     pThis->uStatInt = 0;
    7355     pThis->uStatIntTry = 0;
    7356     pThis->uStatIntLower = 0;
    7357     pThis->uStatIntDly = 0;
    7358     pThis->uStatDisDly = 0;
    7359     pThis->iStatIntLost = 0;
    7360     pThis->iStatIntLostOne = 0;
    7361     pThis->uStatIntLate = 0;
    7362     pThis->uStatIntMasked = 0;
    7363     pThis->uStatIntEarly = 0;
    7364     pThis->uStatIntRx = 0;
    7365     pThis->uStatIntTx = 0;
    7366     pThis->uStatIntICS = 0;
    7367     pThis->uStatIntRDTR = 0;
    7368     pThis->uStatIntRXDMT0 = 0;
    7369     pThis->uStatIntTXQE = 0;
    7370     pThis->uStatTxNoRS = 0;
    7371     pThis->uStatTxIDE = 0;
    7372     pThis->uStatTxDelayed = 0;
    7373     pThis->uStatTxDelayExp = 0;
    7374     pThis->uStatTAD = 0;
    7375     pThis->uStatTID = 0;
    7376     pThis->uStatRAD = 0;
    7377     pThis->uStatRID = 0;
    7378     pThis->uStatRxFrm = 0;
    7379     pThis->uStatTxFrm = 0;
    7380     pThis->uStatDescCtx = 0;
    7381     pThis->uStatDescDat = 0;
    7382     pThis->uStatDescLeg = 0;
    7383     pThis->uStatTx1514 = 0;
    7384     pThis->uStatTx2962 = 0;
    7385     pThis->uStatTx4410 = 0;
    7386     pThis->uStatTx5858 = 0;
    7387     pThis->uStatTx7306 = 0;
    7388     pThis->uStatTx8754 = 0;
    7389     pThis->uStatTx16384 = 0;
    7390     pThis->uStatTx32768 = 0;
    7391     pThis->uStatTxLarge = 0;
    7392     pThis->uStatMaxTxDelay = 0;
    7393 #endif /* E1K_INT_STATS */
    73947317
    73957318    /* Interfaces */
     
    75037426        return rc;
    75047427
    7505     /* Set PCI config registers */
    7506     e1kConfigurePCI(pThis->pciDevice, pThis->eChip);
    7507 
    7508     /* Register PCI device */
     7428    /* Set PCI config registers and register ourselves with the PCI bus. */
     7429    e1kConfigurePciDev(&pThis->pciDevice, pThis->eChip);
    75097430    rc = PDMDevHlpPCIRegister(pDevIns, &pThis->pciDevice);
    75107431    if (RT_FAILURE(rc))
     
    77087629#endif /* VBOX_WITH_STATISTICS */
    77097630
     7631#ifdef E1K_INT_STATS
     7632    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->u64ArmedAt,             STAMTYPE_U64,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "u64ArmedAt",                         "/Devices/E1k%d/u64ArmedAt", iInstance);
     7633    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatMaxTxDelay,        STAMTYPE_U64,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatMaxTxDelay",                    "/Devices/E1k%d/uStatMaxTxDelay", iInstance);
     7634    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatInt,               STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatInt",                           "/Devices/E1k%d/uStatInt", iInstance);
     7635    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntTry,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntTry",                        "/Devices/E1k%d/uStatIntTry", iInstance);
     7636    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntLower,          STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntLower",                      "/Devices/E1k%d/uStatIntLower", iInstance);
     7637    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntDly,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntDly",                        "/Devices/E1k%d/uStatIntDly", iInstance);
     7638    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->iStatIntLost,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "iStatIntLost",                       "/Devices/E1k%d/iStatIntLost", iInstance);
     7639    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->iStatIntLostOne,        STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "iStatIntLostOne",                    "/Devices/E1k%d/iStatIntLostOne", iInstance);
     7640    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatDisDly,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatDisDly",                        "/Devices/E1k%d/uStatDisDly", iInstance);
     7641    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntSkip,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntSkip",                       "/Devices/E1k%d/uStatIntSkip", iInstance);
     7642    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntLate,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntLate",                       "/Devices/E1k%d/uStatIntLate", iInstance);
     7643    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntMasked,         STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntMasked",                     "/Devices/E1k%d/uStatIntMasked", iInstance);
     7644    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntEarly,          STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntEarly",                      "/Devices/E1k%d/uStatIntEarly", iInstance);
     7645    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntRx,             STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntRx",                         "/Devices/E1k%d/uStatIntRx", iInstance);
     7646    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntTx,             STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntTx",                         "/Devices/E1k%d/uStatIntTx", iInstance);
     7647    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntICS,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntICS",                        "/Devices/E1k%d/uStatIntICS", iInstance);
     7648    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntRDTR,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntRDTR",                       "/Devices/E1k%d/uStatIntRDTR", iInstance);
     7649    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntRXDMT0,         STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntRXDMT0",                     "/Devices/E1k%d/uStatIntRXDMT0", iInstance);
     7650    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatIntTXQE,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatIntTXQE",                       "/Devices/E1k%d/uStatIntTXQE", iInstance);
     7651    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTxNoRS,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTxNoRS",                        "/Devices/E1k%d/uStatTxNoRS", iInstance);
     7652    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTxIDE,             STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTxIDE",                         "/Devices/E1k%d/uStatTxIDE", iInstance);
     7653    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTxDelayed,         STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTxDelayed",                     "/Devices/E1k%d/uStatTxDelayed", iInstance);
     7654    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTxDelayExp,        STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTxDelayExp",                    "/Devices/E1k%d/uStatTxDelayExp", iInstance);
     7655    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTAD,               STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTAD",                           "/Devices/E1k%d/uStatTAD", iInstance);
     7656    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTID,               STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTID",                           "/Devices/E1k%d/uStatTID", iInstance);
     7657    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatRAD,               STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatRAD",                           "/Devices/E1k%d/uStatRAD", iInstance);
     7658    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatRID,               STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatRID",                           "/Devices/E1k%d/uStatRID", iInstance);
     7659    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatRxFrm,             STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatRxFrm",                         "/Devices/E1k%d/uStatRxFrm", iInstance);
     7660    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTxFrm,             STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTxFrm",                         "/Devices/E1k%d/uStatTxFrm", iInstance);
     7661    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatDescCtx,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatDescCtx",                       "/Devices/E1k%d/uStatDescCtx", iInstance);
     7662    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatDescDat,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatDescDat",                       "/Devices/E1k%d/uStatDescDat", iInstance);
     7663    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatDescLeg,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatDescLeg",                       "/Devices/E1k%d/uStatDescLeg", iInstance);
     7664    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx1514,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx1514",                        "/Devices/E1k%d/uStatTx1514", iInstance);
     7665    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx2962,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx2962",                        "/Devices/E1k%d/uStatTx2962", iInstance);
     7666    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx4410,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx4410",                        "/Devices/E1k%d/uStatTx4410", iInstance);
     7667    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx5858,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx5858",                        "/Devices/E1k%d/uStatTx5858", iInstance);
     7668    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx7306,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx7306",                        "/Devices/E1k%d/uStatTx7306", iInstance);
     7669    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx8754,            STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx8754",                        "/Devices/E1k%d/uStatTx8754", iInstance);
     7670    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx16384,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx16384",                       "/Devices/E1k%d/uStatTx16384", iInstance);
     7671    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTx32768,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTx32768",                       "/Devices/E1k%d/uStatTx32768", iInstance);
     7672    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->uStatTxLarge,           STAMTYPE_U32,     STAMVISIBILITY_ALWAYS, STAMUNIT_NS,             "uStatTxLarge",                       "/Devices/E1k%d/uStatTxLarge", iInstance);
     7673#endif /* E1K_INT_STATS */
     7674
    77107675    return VINF_SUCCESS;
    77117676}
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