> -----Original Message----- > From: Xueming Li <xuemi...@nvidia.com> > Sent: Thursday, October 21, 2021 13:09 > To: dev@dpdk.org; Zhang, Yuying <yuying.zh...@intel.com>; Li, Xiaoyun > <xiaoyun...@intel.com> > Cc: xuemi...@nvidia.com; Jerin Jacob <jerinjac...@gmail.com>; Yigit, Ferruh > <ferruh.yi...@intel.com>; Andrew Rybchenko > <andrew.rybche...@oktetlabs.ru>; Viacheslav Ovsiienko > <viachesl...@nvidia.com>; Thomas Monjalon <tho...@monjalon.net>; Lior > Margalit <lmarga...@nvidia.com>; Ananyev, Konstantin > <konstantin.anan...@intel.com>; Ajit Khaparde > <ajit.khapa...@broadcom.com> > 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 <xuemi...@nvidia.com> > Acked-by: Xiaoyun Li <xiaoyun...@intel.com>
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.khapa...@broadcom.com> I didn't see he ack this patch as well. Please remove these acks. > --- > 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> > 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. > #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