From: Tiwei Bie <tiwei.bie@intel.com>
To: maxime.coquelin@redhat.com, zhihong.wang@intel.com,
john.mcnamara@intel.com, marko.kovacevic@intel.com, dev@dpdk.org
Subject: [dpdk-dev] [PATCH 5/6] doc: document packed virtqueue for virtio
Date: Tue, 13 Aug 2019 10:07:29 +0800 [thread overview]
Message-ID: <20190813020730.10038-6-tiwei.bie@intel.com> (raw)
In-Reply-To: <20190813020730.10038-1-tiwei.bie@intel.com>
Document the packed virtqueue layout support in virtio net PMD.
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
doc/guides/nics/virtio.rst | 63 ++++++++++++++++++++++++++++----------
1 file changed, 47 insertions(+), 16 deletions(-)
diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
index 993e691f5..011954ff6 100644
--- a/doc/guides/nics/virtio.rst
+++ b/doc/guides/nics/virtio.rst
@@ -24,15 +24,19 @@ standard qemu vhost back end and vhost kni back end.
Virtio Implementation in DPDK
-----------------------------
-For details about the virtio spec, refer to Virtio PCI Card Specification written by Rusty Russell.
+For details about the virtio spec, refer to the latest
+`VIRTIO (Virtual I/O) Device Specification
+<https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=virtio>`_.
-As a PMD, virtio provides packet reception and transmission callbacks virtio_recv_pkts and virtio_xmit_pkts.
+As a PMD, virtio provides packet reception and transmission callbacks.
-In virtio_recv_pkts, index in range [vq->vq_used_cons_idx , vq->vq_ring.used->idx) in vring is available for virtio to burst out.
+In Rx, packets described by the used descriptors in vring are available
+for virtio to burst out.
-In virtio_xmit_pkts, same index range in vring is available for virtio to clean.
-Virtio will enqueue to be transmitted packets into vring, advance the vq->vq_ring.avail->idx,
-and then notify the host back end if necessary.
+In Tx, packets described by the used descriptors in vring are available
+for virtio to clean. Virtio will enqueue to be transmitted packets into
+vring, make them available to the device, and then notify the host back
+end if necessary.
Features and Limitations of virtio PMD
--------------------------------------
@@ -201,37 +205,52 @@ The packet transmission flow is:
Virtio PMD Rx/Tx Callbacks
--------------------------
-Virtio driver has 4 Rx callbacks and 2 Tx callbacks.
+Virtio driver has 6 Rx callbacks and 3 Tx callbacks.
Rx callbacks:
#. ``virtio_recv_pkts``:
- Regular version without mergeable Rx buffer support.
+ Regular version without mergeable Rx buffer support for split virtqueue.
#. ``virtio_recv_mergeable_pkts``:
- Regular version with mergeable Rx buffer support.
+ Regular version with mergeable Rx buffer support for split virtqueue.
#. ``virtio_recv_pkts_vec``:
Vector version without mergeable Rx buffer support, also fixes the available
- ring indexes and uses vector instructions to optimize performance.
+ ring indexes and uses vector instructions to optimize performance for split
+ virtqueue.
#. ``virtio_recv_pkts_inorder``:
- In-order version with mergeable and non-mergeable Rx buffer support.
+ In-order version with mergeable and non-mergeable Rx buffer support
+ for split virtqueue.
+
+#. ``virtio_recv_pkts_packed``:
+ Regular and in-order version without mergeable Rx buffer support for
+ packed virtqueue.
+
+#. ``virtio_recv_mergeable_pkts_packed``:
+ Regular and in-order version with mergeable Rx buffer support for packed
+ virtqueue.
Tx callbacks:
#. ``virtio_xmit_pkts``:
- Regular version.
+ Regular version for split virtqueue.
#. ``virtio_xmit_pkts_inorder``:
- In-order version.
+ In-order version for split virtqueue.
+
+#. ``virtio_xmit_pkts_packed``:
+ Regular and in-order version for packed virtqueue.
By default, the non-vector callbacks are used:
-* For Rx: If mergeable Rx buffers is disabled then ``virtio_recv_pkts`` is
- used; otherwise ``virtio_recv_mergeable_pkts``.
+* For Rx: If mergeable Rx buffers is disabled then ``virtio_recv_pkts``
+ or ``virtio_recv_pkts_packed`` will be used, otherwise
+ ``virtio_recv_mergeable_pkts`` or ``virtio_recv_mergeable_pkts_packed``
+ will be used.
-* For Tx: ``virtio_xmit_pkts``.
+* For Tx: ``virtio_xmit_pkts`` or ``virtio_xmit_pkts_packed`` will be used.
Vector callbacks will be used when:
@@ -242,6 +261,8 @@ The corresponding callbacks are:
* For Rx: ``virtio_recv_pkts_vec``.
+There is no vector callbacks for packed virtqueue for now.
+
Example of using the vector version of the virtio poll mode driver in
``testpmd``::
@@ -250,10 +271,15 @@ Example of using the vector version of the virtio poll mode driver in
In-order callbacks only work on simulated virtio user vdev.
+For split virtqueue:
+
* For Rx: If in-order is enabled then ``virtio_recv_pkts_inorder`` is used.
* For Tx: If in-order is enabled then ``virtio_xmit_pkts_inorder`` is used.
+For packed virtqueue, the default callbacks already support the
+in-order feature.
+
Interrupt mode
--------------
@@ -372,3 +398,8 @@ Below devargs are supported by the virtio-user vdev:
It is used to enable virtio device in-order feature.
(Default: 1 (enabled))
+
+#. ``packed_vq``:
+
+ It is used to enable virtio device packed virtqueue feature.
+ (Default: 0 (disabled))
--
2.17.1
next prev parent reply other threads:[~2019-08-13 2:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-13 2:07 [dpdk-dev] [PATCH 0/6] Some updates for virtio guide Tiwei Bie
2019-08-13 2:07 ` [dpdk-dev] [PATCH 1/6] net/virtio: remove remaining simple Tx related stuff Tiwei Bie
2019-09-06 13:15 ` Maxime Coquelin
2019-08-13 2:07 ` [dpdk-dev] [PATCH 2/6] doc: fix typo in virtio in-order Rx function name Tiwei Bie
2019-09-06 13:16 ` Maxime Coquelin
2019-08-13 2:07 ` [dpdk-dev] [PATCH 3/6] doc: update the description for in-order Rx path Tiwei Bie
2019-09-06 13:18 ` Maxime Coquelin
2019-08-13 2:07 ` [dpdk-dev] [PATCH 4/6] doc: document the devargs for virtio-user Tiwei Bie
2019-09-06 13:20 ` Maxime Coquelin
2019-08-13 2:07 ` Tiwei Bie [this message]
2019-09-06 13:21 ` [dpdk-dev] [PATCH 5/6] doc: document packed virtqueue for virtio Maxime Coquelin
2019-08-13 2:07 ` [dpdk-dev] [PATCH 6/6] doc: fix format for virtio guide Tiwei Bie
2019-09-06 13:22 ` Maxime Coquelin
2019-09-06 13:37 ` [dpdk-dev] [PATCH 0/6] Some updates " Maxime Coquelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190813020730.10038-6-tiwei.bie@intel.com \
--to=tiwei.bie@intel.com \
--cc=dev@dpdk.org \
--cc=john.mcnamara@intel.com \
--cc=marko.kovacevic@intel.com \
--cc=maxime.coquelin@redhat.com \
--cc=zhihong.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).