VirtualBox

儲存庫 vbox 的更動 18573


忽略:
時間撮記:
2009-3-31 下午01:46:00 (16 年 以前)
作者:
vboxsync
訊息:

PCNet: another workaround for #3775

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Devices/Network/DevPCNet.cpp

    r18437 r18573  
    15521552        /* At this time it is not guaranteed that the buffers are already initialized. */
    15531553        if (pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, addr), false))
    1554             cbRxBuffers += 4096-rmd.rmd1.bcnt;
    1555         /* Hack: Make sure that all receive buffers are touched when the
    1556          * device is initialized. */
    1557         static char aBuf[4096];
    1558         RTGCPHYS32 rbadr = PHYSADDR(pThis, rmd.rmd0.rbadr);
    1559         /* don't change the content */
    1560         PDMDevHlpPhysRead(pDevIns, rbadr, aBuf, RT_MIN(sizeof(aBuf), 4096U-rmd.rmd1.bcnt));
    1561         PDMDevHlpPhysWrite(pDevIns, rbadr, aBuf, RT_MIN(sizeof(aBuf), 4096U-rmd.rmd1.bcnt));
     1554        {
     1555            /* Hack: Make sure that all RX buffers are touched when the
     1556             * device is initialized. */
     1557            static char aBuf[4096];
     1558            RTGCPHYS32 rbadr = PHYSADDR(pThis, rmd.rmd0.rbadr);
     1559            uint32_t cbBuf = 4096U-rmd.rmd1.bcnt;
     1560            /* don't change the content */
     1561            PDMDevHlpPhysRead(pDevIns, rbadr, aBuf, RT_MIN(sizeof(aBuf), cbBuf));
     1562            PDMDevHlpPhysWrite(pDevIns, rbadr, aBuf, RT_MIN(sizeof(aBuf), cbBuf));
     1563            cbRxBuffers += cbBuf;
     1564        }
     1565        PDMDevHlpPhysWrite(pDevIns, addr, (void*)&rmd, sizeof(rmd));
     1566    }
     1567
     1568    for (int i = CSR_XMTRL(pThis); i >= 1; i--)
     1569    {
     1570        TMD        tmd;
     1571        RTGCPHYS32 addr = pcnetRdraAddr(pThis, i);
     1572        if (pcnetTmdLoad(pThis, &tmd, PHYSADDR(pThis, addr), false))
     1573        {
     1574            /* Hack: Make sure that all TX buffers are touched when the
     1575             * device is initialized. */
     1576            static char aBuf[4096];
     1577            uint32_t cbBuf = 4096U-tmd.tmd1.bcnt;
     1578            RTGCPHYS32 tbadr = PHYSADDR(pThis, tmd.tmd0.tbadr);
     1579            /* don't change the content */
     1580            PDMDevHlpPhysRead(pDevIns, tbadr, aBuf, RT_MIN(sizeof(aBuf), cbBuf));
     1581            PDMDevHlpPhysWrite(pDevIns, tbadr, aBuf, RT_MIN(sizeof(aBuf), cbBuf));
     1582        }
     1583        PDMDevHlpPhysWrite(pDevIns, addr, (void*)&tmd, sizeof(tmd));
    15621584    }
    15631585
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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