This patch explains all the versions of current virtio pmd implementation, what's the difference, and how to choose the right version.
Signed-off-by: Zhihong Wang <zhihong.wang at intel.com> --- doc/guides/nics/virtio.rst | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst index 06ca433..43ba686 100644 --- a/doc/guides/nics/virtio.rst +++ b/doc/guides/nics/virtio.rst @@ -211,3 +211,60 @@ In this example, the packet reception flow path is: The packet transmission flow is: IXIA packet generator-> Guest VM 82599 VF port1 rx burst-> Guest VM virtio port 0 tx burst-> tap -> Linux Bridge->82599 PF-> IXIA packet generator + +Virtio PMD Versions +------------------- + +Virtio driver has 3 versions of rx functions and 2 versions of tx functions. + +RX functions: + +* ``virtio_recv_pkts``: + + Regular version without mergeable rx buffers support + +* ``virtio_recv_mergeable_pkts``: + + Regular version with mergeable rx buffers support + +* ``virtio_recv_pkts_vec``: + + Simple version without mergeable rx buffers support, also fixes the avail ring and uses vector instructions to optimize performance + +TX functions: + +* ``virtio_xmit_pkts``: + + Regular version + +* ``virtio_xmit_pkts_simple``: + + Simple version fixes the avail ring to optimize performance + +By default, the non-vector versions are used: + +* For rx: If mergeable rx buffers is disabled then ``virtio_recv_pkts`` is used; otherwise ``virtio_recv_mergeable_pkts`` + +* For tx: ``virtio_xmit_pkts`` + +Setting ``txq_flags`` to ``VIRTIO_SIMPLE_FLAGS`` (0xf01) enables the simple version of virtio poll mode driver: + +* For rx: ``virtio_recv_pkts_vec`` + +* For tx: ``virtio_xmit_pkts_simple`` + +The simple version will only be enabled when: + +* Mergeable rx buffers is disabled + +* Single segment is specified + +* No offload support is needed + +Example to use the simple version of virtio poll mode driver in testpmd: + +.. code-block:: console + +./x86_64-native-linuxapp-gcc/app/testpmd -c 0x7 -n 4 + -- -i --txqflags=0xf01 --rxq=1 --txq=1 --nb-cores=1 + -- 2.5.0