VirtualBox

Changeset 94969 in vbox for trunk/src/VBox/Devices/Storage


Ignore:
Timestamp:
May 9, 2022 5:06:17 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
151379
Message:

Devices/Virtio|ai: Fixes and performance improvements for the 1.0 virtio-net implementation, bugref:8651

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DevVirtioSCSI.cpp

    r93614 r94969  
    16021602             for (int i = 0; i < pWorkerR3->cRedoDescs; i++)
    16031603             {
     1604#ifdef VIRTIO_VBUF_ON_STACK
     1605                PVIRTQBUF pVirtqBuf = virtioCoreR3VirtqBufAlloc();
     1606                if (!pVirtqBuf)
     1607                {
     1608                    LogRel(("Failed to allocate memory for VIRTQBUF\n"));
     1609                    break;  /* No point in trying to allocate memory for other descriptor chains */
     1610                }
     1611                int rc = virtioCoreR3VirtqAvailBufGet(pDevIns, &pThis->Virtio, uVirtqNbr,
     1612                                                    pWorkerR3->auRedoDescs[i], pVirtqBuf);
     1613#else /* !VIRTIO_VBUF_ON_STACK */
    16041614                  PVIRTQBUF pVirtqBuf;
    16051615                  int rc = virtioCoreR3VirtqAvailBufGet(pDevIns, &pThis->Virtio, uVirtqNbr,
    16061616                                                        pWorkerR3->auRedoDescs[i], &pVirtqBuf);
     1617#endif /* !VIRTIO_VBUF_ON_STACK */
    16071618                  if (RT_FAILURE(rc))
    16081619                      LogRel(("Error fetching desc chain to redo, %Rrc", rc));
     
    16171628
    16181629             Log6Func(("fetching next descriptor chain from %s\n", VIRTQNAME(uVirtqNbr)));
     1630#ifdef VIRTIO_VBUF_ON_STACK
     1631            PVIRTQBUF pVirtqBuf = virtioCoreR3VirtqBufAlloc();
     1632            if (!pVirtqBuf)
     1633                LogRel(("Failed to allocate memory for VIRTQBUF\n"));
     1634            else
     1635            {
     1636             int rc = virtioCoreR3VirtqAvailBufGet(pDevIns, &pThis->Virtio, uVirtqNbr, pVirtqBuf, true);
     1637#else /* !VIRTIO_VBUF_ON_STACK */
    16191638             PVIRTQBUF pVirtqBuf = NULL;
    16201639             int rc = virtioCoreR3VirtqAvailBufGet(pDevIns, &pThis->Virtio, uVirtqNbr, &pVirtqBuf, true);
     1640#endif /* !VIRTIO_VBUF_ON_STACK */
    16211641             if (rc == VERR_NOT_AVAILABLE)
    16221642             {
     
    16361656
    16371657             virtioCoreR3VirtqBufRelease(&pThis->Virtio, pVirtqBuf);
     1658#ifdef VIRTIO_VBUF_ON_STACK
     1659            }
     1660#endif /* VIRTIO_VBUF_ON_STACK */
    16381661        }
    16391662    }
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