X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Fvirtio.rst;h=ac07d4d1e5618aa0c2f1ac4da82ad418a60fc584;hb=4f74cb68b96496acce845e75b5533f019f248b1e;hp=0341907ef2d953d315c662aaf857f056b734e175;hpb=49119e3855bd9cfcf3cdcb0db50aa53d5a746ecc;p=dpdk.git diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst index 0341907ef2..ac07d4d1e5 100644 --- a/doc/guides/nics/virtio.rst +++ b/doc/guides/nics/virtio.rst @@ -71,7 +71,7 @@ In this release, the virtio PMD driver provides the basic functionality of packe * Virtio supports software vlan stripping and inserting. -* Virtio supports using port IO to get PCI resource when uio/igb_uio module is not available. +* Virtio supports using port IO to get PCI resource when UIO module is not available. Prerequisites ------------- @@ -103,14 +103,15 @@ Host2VM communication example insmod rte_kni.ko - Other basic DPDK preparations like hugepage enabling, uio port binding are not listed here. + Other basic DPDK preparations like hugepage enabling, + UIO port binding are not listed here. Please refer to the *DPDK Getting Started Guide* for detailed instructions. #. Launch the kni user application: .. code-block:: console - examples/kni/build/app/kni -l 0-3 -n 4 -- -p 0x1 -P --config="(0,1,3)" + /examples/dpdk-kni -l 0-3 -n 4 -- -p 0x1 -P --config="(0,1,3)" This command generates one network device vEth0 for physical port. If specify more physical ports, the generated network device will be vEth1, vEth2, and so on. @@ -152,9 +153,9 @@ Host2VM communication example .. code-block:: console modprobe uio - echo 512 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages + dpdk-hugepages.py --setup 1G modprobe uio_pci_generic - python usertools/dpdk-devbind.py -b uio_pci_generic 00:03.0 + ./usertools/dpdk-devbind.py -b uio_pci_generic 00:03.0 We use testpmd as the forwarding application in this example. @@ -266,7 +267,7 @@ There is no vector callbacks for packed virtqueue for now. Example of using the vector version of the virtio poll mode driver in ``testpmd``:: - testpmd -l 0-2 -n 4 -- -i --rxq=1 --txq=1 --nb-cores=1 + dpdk-testpmd -l 0-2 -n 4 -- -i --rxq=1 --txq=1 --nb-cores=1 In-order callbacks only work on simulated virtio user vdev. @@ -329,7 +330,7 @@ To support Rx interrupts, .. code-block:: console - python usertools/dpdk-devbind.py -b vfio-pci 00:03.0 + ./usertools/dpdk-devbind.py -b vfio-pci 00:03.0 Example ~~~~~~~ @@ -340,7 +341,7 @@ Here we use l3fwd-power as an example to show how to get started. .. code-block:: console - $ l3fwd-power -l 0-1 -- -p 1 -P --config="(0,0,1)" \ + $ dpdk-l3fwd-power -l 0-1 -- -p 1 -P --config="(0,0,1)" \ --no-numa --parse-ptype @@ -361,7 +362,14 @@ Below devargs are supported by the PCI virtio driver: It is used to specify link speed of virtio device. Link speed is a part of link status structure. It could be requested by application using rte_eth_link_get_nowait function. - (Default: 10000 (10G)) + (Default: 0xffffffff (Unknown)) + +#. ``vectorized``: + + It is used to specify whether virtio device prefers to use vectorized path. + Afterwards, dependencies of vectorized path will be checked in path + election. + (Default: 0 (disabled)) Below devargs are supported by the virtio-user vdev: @@ -410,6 +418,20 @@ Below devargs are supported by the virtio-user vdev: It is used to enable virtio device packed virtqueue feature. (Default: 0 (disabled)) +#. ``speed``: + + It is used to specify link speed of virtio device. Link speed is a part of + link status structure. It could be requested by application using + rte_eth_link_get_nowait function. + (Default: 0xffffffff (Unknown)) + +#. ``vectorized``: + + It is used to specify whether virtio device prefers to use vectorized path. + Afterwards, dependencies of vectorized path will be checked in path + election. + (Default: 0 (disabled)) + Virtio paths Selection and Usage -------------------------------- @@ -461,6 +483,13 @@ according to below configuration: both negotiated, this path will be selected. #. Packed virtqueue in-order non-mergeable path: If in-order feature is negotiated and Rx mergeable is not negotiated, this path will be selected. +#. Packed virtqueue vectorized Rx path: If building and running environment support + (AVX512 || NEON) && in-order feature is negotiated && Rx mergeable + is not negotiated && TCP_LRO Rx offloading is disabled && vectorized option enabled, + this path will be selected. +#. Packed virtqueue vectorized Tx path: If building and running environment support + (AVX512 || NEON) && in-order feature is negotiated && vectorized option enabled, + this path will be selected. Rx/Tx callbacks of each Virtio path ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -483,6 +512,8 @@ are shown in below table: Packed virtqueue non-meregable path virtio_recv_pkts_packed virtio_xmit_pkts_packed Packed virtqueue in-order mergeable path virtio_recv_mergeable_pkts_packed virtio_xmit_pkts_packed Packed virtqueue in-order non-mergeable path virtio_recv_pkts_packed virtio_xmit_pkts_packed + Packed virtqueue vectorized Rx path virtio_recv_pkts_packed_vec virtio_xmit_pkts_packed + Packed virtqueue vectorized Tx path virtio_recv_pkts_packed virtio_xmit_pkts_packed_vec ============================================ ================================= ======================== Virtio paths Support Status from Release to Release @@ -500,20 +531,22 @@ All virtio paths support status are shown in below table: .. table:: Virtio Paths and Releases - ============================================ ============= ============= ============= - Virtio paths 16.11 ~ 18.05 18.08 ~ 18.11 19.02 ~ 19.11 - ============================================ ============= ============= ============= - Split virtqueue mergeable path Y Y Y - Split virtqueue non-mergeable path Y Y Y - Split virtqueue vectorized Rx path Y Y Y - Split virtqueue simple Tx path Y N N - Split virtqueue in-order mergeable path Y Y - Split virtqueue in-order non-mergeable path Y Y - Packed virtqueue mergeable path Y - Packed virtqueue non-mergeable path Y - Packed virtqueue in-order mergeable path Y - Packed virtqueue in-order non-mergeable path Y - ============================================ ============= ============= ============= + ============================================ ============= ============= ============= ======= + Virtio paths 16.11 ~ 18.05 18.08 ~ 18.11 19.02 ~ 19.11 20.05 ~ + ============================================ ============= ============= ============= ======= + Split virtqueue mergeable path Y Y Y Y + Split virtqueue non-mergeable path Y Y Y Y + Split virtqueue vectorized Rx path Y Y Y Y + Split virtqueue simple Tx path Y N N N + Split virtqueue in-order mergeable path Y Y Y + Split virtqueue in-order non-mergeable path Y Y Y + Packed virtqueue mergeable path Y Y + Packed virtqueue non-mergeable path Y Y + Packed virtqueue in-order mergeable path Y Y + Packed virtqueue in-order non-mergeable path Y Y + Packed virtqueue vectorized Rx path Y + Packed virtqueue vectorized Tx path Y + ============================================ ============= ============= ============= ======= QEMU Support Status ~~~~~~~~~~~~~~~~~~~