VirtualBox

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


Ignore:
Timestamp:
Jul 8, 2020 2:03:45 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
139043
Message:

Resolved other part of xtracker #9766. Rearranged structs, arrays and pointers to improve cache locality (impacts: Network/DevVirtioNet.cpp, DevVirtioNet_1_0.cpp, and VirtIO/VirtioCore.*)

Location:
trunk/src/VBox/Devices/Network
Files:
2 edited

Legend:

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

    r85083 r85109  
    903903                return VERR_INVALID_PARAMETER;
    904904        }
    905         Hdr.Hdr.u16HdrLen = pGso->cbHdrsTotal;
    906         Hdr.Hdr.u16GSOSize = pGso->cbMaxSeg;
     905        Hdr.Hdr.u16HdrLen    = pGso->cbHdrsTotal;
     906        Hdr.Hdr.u16GSOSize   = pGso->cbMaxSeg;
    907907        Hdr.Hdr.u16CSumStart = pGso->offHdr2;
     908        Hdr.u16NumBufs       = 0;
    908909        STAM_REL_COUNTER_INC(&pThis->StatReceiveGSO);
    909910    }
    910911    else
    911912    {
    912         Hdr.Hdr.u8Flags   = 0;
    913         Hdr.Hdr.u8GSOType = VNETHDR_GSO_NONE;
     913        Hdr.Hdr.u8Flags       = 0;
     914        Hdr.Hdr.u8GSOType     = VNETHDR_GSO_NONE;
     915        Hdr.Hdr.u16HdrLen     = 0;
     916        Hdr.Hdr.u16GSOSize    = 0;
     917        Hdr.Hdr.u16CSumStart  = 0;
     918        Hdr.Hdr.u16CSumOffset = 0;
     919        Hdr.u16NumBufs        = 0;
    914920    }
    915921
  • trunk/src/VBox/Devices/Network/DevVirtioNet_1_0.cpp

    r85083 r85109  
    16841684
    16851685static int virtioNetR3CopyRxPktToGuest(PPDMDEVINS pDevIns, PVIRTIONET pThis, const void *pvBuf, size_t cb,
    1686                                        VIRTIONETPKTHDR *rxPktHdr, uint16_t cSegsAllocated,
     1686                                       PVIRTIONETPKTHDR rxPktHdr, uint16_t cSegsAllocated,
    16871687                                       PRTSGBUF pVirtSegBufToGuest, PRTSGSEG paVirtSegsToGuest,
    16881688                                       PVIRTIONETVIRTQ pRxVirtq)
     
    18061806
    18071807    LogFunc(("%s (%RTmac) pGso %s\n", pThis->szInst, pvBuf, pGso ? "present" : "not present"));
    1808     VIRTIONETPKTHDR rxPktHdr = { 0 };
     1808    VIRTIONETPKTHDR rxPktHdr;
    18091809
    18101810    if (pGso)
     
    18321832                return VERR_INVALID_PARAMETER;
    18331833        }
    1834         rxPktHdr.uHdrLen = pGso->cbHdrsTotal;
    1835         rxPktHdr.uGsoSize = pGso->cbMaxSeg;
    1836         rxPktHdr.uChksumStart = pGso->offHdr2;
     1834        rxPktHdr.uHdrLen        = pGso->cbHdrsTotal;
     1835        rxPktHdr.uGsoSize       = pGso->cbMaxSeg;
     1836        rxPktHdr.uChksumStart   = pGso->offHdr2;
     1837        rxPktHdr.uNumBuffers    = 0;
    18371838        STAM_REL_COUNTER_INC(&pThis->StatReceiveGSO);
    18381839    }
    18391840    else
    18401841    {
    1841         rxPktHdr.uFlags = 0;
    1842         rxPktHdr.uGsoType = VIRTIONET_HDR_GSO_NONE;
     1842        rxPktHdr.uFlags         = 0;
     1843        rxPktHdr.uGsoType       = VIRTIONET_HDR_GSO_NONE;
     1844        rxPktHdr.uHdrLen        = 0;
     1845        rxPktHdr.uGsoSize       = 0;
     1846        rxPktHdr.uChksumStart   = 0;
     1847        rxPktHdr.uChksumOffset  = 0;
     1848        rxPktHdr.uNumBuffers    = 0;
    18431849    }
    18441850
     
    23072313                    pGso->cbHdrsTotal = pPktHdr->uChksumStart +
    23082314                        ((PRTNETTCP)(((uint8_t*)pSgBuf->aSegs[0].pvSeg) + pPktHdr->uChksumStart))->th_off * 4;
     2315
    23092316                    AssertMsgReturn(pSgBuf->cbUsed > pGso->cbHdrsTotal,
    2310                                     ("cbHdrsTotal exceeds size of frame"), VERR_BUFFER_OVERFLOW);
     2317                        ("cbHdrsTotal exceeds size of frame"), VERR_BUFFER_OVERFLOW);
     2318
    23112319                    pGso->cbHdrsSeg   = pGso->cbHdrsTotal;
    23122320                    break;
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