Thread (266 messages) flat view 266 messages, 14 authors, 2021-11-05

Re: [dpdk-dev] [PATCH v12 7/7] app/testpmd: add forwarding engine for shared Rx queue

From: Li, Xiaoyun <hidden>
Date: 2021-10-21 06:33:54

-----Original Message-----
From: Xueming Li <redacted>
Sent: Thursday, October 21, 2021 13:09
To: dev@dpdk.org; Zhang, Yuying <redacted>; Li, Xiaoyun
[off-list ref]
Cc: xuemingl@nvidia.com; Jerin Jacob <redacted>; Yigit, Ferruh
[off-list ref]; Andrew Rybchenko
[off-list ref]; Viacheslav Ovsiienko
[off-list ref]; Thomas Monjalon [off-list ref]; Lior
Margalit [off-list ref]; Ananyev, Konstantin
[off-list ref]; Ajit Khaparde
[off-list ref]
Subject: [PATCH v12 7/7] app/testpmd: add forwarding engine for shared Rx
queue

To support shared Rx queue, this patch introduces dedicate forwarding engine.
The engine groups received packets by mbuf->port into sub-group, updates
stream statistics and simply frees packets.

Signed-off-by: Xueming Li <redacted>
Acked-by: Xiaoyun Li <redacted>
I didn't ack you on this patch. I remember I added "+1" to the comment about your includes issue.
It will confuse reviewers not to review new versions.
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
I didn't see he ack this patch as well.
Please remove these acks.
quoted hunk ↗ jump to hunk
---
 app/test-pmd/meson.build                    |   1 +
 app/test-pmd/shared_rxq_fwd.c               | 113 ++++++++++++++++++++
 app/test-pmd/testpmd.c                      |   1 +
 app/test-pmd/testpmd.h                      |   5 +
 doc/guides/testpmd_app_ug/run_app.rst       |   5 +-
 doc/guides/testpmd_app_ug/testpmd_funcs.rst |   5 +-
 6 files changed, 128 insertions(+), 2 deletions(-)  create mode 100644 app/test-
pmd/shared_rxq_fwd.c
diff --git a/app/test-pmd/meson.build b/app/test-pmd/meson.build index
1ad54caef2c..b5a0f7b6209 100644
--- a/app/test-pmd/meson.build
+++ b/app/test-pmd/meson.build
@@ -22,6 +22,7 @@ sources = files(
         'noisy_vnf.c',
         'parameters.c',
         'rxonly.c',
+        'shared_rxq_fwd.c',
         'testpmd.c',
         'txonly.c',
         'util.c',
diff --git a/app/test-pmd/shared_rxq_fwd.c b/app/test-pmd/shared_rxq_fwd.c
new file mode 100644 index 00000000000..c4684893674
--- /dev/null
+++ b/app/test-pmd/shared_rxq_fwd.c
@@ -0,0 +1,113 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright (c) 2021 NVIDIA Corporation & Affiliates  */
+
Please add "#include <rte_ethdev.h>" here.
Your shared_rxq_fwd.c only needs this include.
+#include "testpmd.h"
+
+/*
+ * Rx only sub-burst forwarding.
+ */
+static void
+forward_rx_only(uint16_t nb_rx, struct rte_mbuf **pkts_burst) {
+	rte_pktmbuf_free_bulk(pkts_burst, nb_rx); }
+
+/**
+ * Get packet source stream by source port and queue.
+ * All streams of same shared Rx queue locates on same core.
+ */
+static struct fwd_stream *
+forward_stream_get(struct fwd_stream *fs, uint16_t port) {
<snip>
quoted hunk ↗ jump to hunk
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index
9482dab3071..ef7a6199313 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -12,6 +12,10 @@
 #include <rte_gro.h>
 #include <rte_gso.h>
 #include <rte_os_shim.h>
+#include <rte_mbuf_dyn.h>
+#include <rte_flow.h>
+#include <rte_ethdev.h>
+
Please remove these includes and this blank line.
You only need to add the lib you need in your file like I said above.
quoted hunk ↗ jump to hunk
 #include <cmdline.h>
 #include <sys/queue.h>
 #ifdef RTE_HAS_JANSSON
@@ -339,6 +343,7 @@ extern struct fwd_engine five_tuple_swap_fwd_engine;
#ifdef RTE_LIBRTE_IEEE1588  extern struct fwd_engine ieee1588_fwd_engine;
#endif
+extern struct fwd_engine shared_rxq_engine;

 extern struct fwd_engine * fwd_engines[]; /**< NULL terminated array. */
extern cmdline_parse_inst_t cmd_set_raw; diff --git
a/doc/guides/testpmd_app_ug/run_app.rst
b/doc/guides/testpmd_app_ug/run_app.rst
index faa3efb902c..74412bb82ca 100644
--- a/doc/guides/testpmd_app_ug/run_app.rst
+++ b/doc/guides/testpmd_app_ug/run_app.rst
@@ -258,6 +258,7 @@ The command line options are:
        tm
        noisy
        5tswap
+       shared-rxq

 *   ``--rss-ip``
@@ -399,7 +400,9 @@ The command line options are:

     Create queues in shared Rx queue mode if device supports.
     Shared Rx queues are grouped per X ports. X defaults to UINT32_MAX,
-    implies all ports join share group 1.
+    implies all ports join share group 1. A new forwarding engine
+    "shared-rxq" should be used for shared Rx queues. This engine does
+    Rx only and update stream statistics accordingly.

 *   ``--eth-link-speed``
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 6d127d9a7bc..78d23429c42 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -314,7 +314,7 @@ set fwd
 Set the packet forwarding mode::

    testpmd> set fwd (io|mac|macswap|flowgen| \
-                     rxonly|txonly|csum|icmpecho|noisy|5tswap) (""|retry)
+
+ rxonly|txonly|csum|icmpecho|noisy|5tswap|shared-rxq) (""|retry)

 ``retry`` can be specified for forwarding engines except ``rx_only``.
@@ -357,6 +357,9 @@ The available information categories are:

   L4 swaps the source port and destination port of transport layer (TCP and UDP).

+* ``shared-rxq``: Receive only for shared Rx queue.
+  Resolve packet source port from mbuf and update stream statistics
accordingly.
+
 Example::

    testpmd> set fwd rxonly
--
2.33.0
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help