From: Ronan Randles <ronan.randles@intel.com>
To: dev@dpdk.org
Cc: harry.van.haaren@intel.com
Subject: [PATCH 03/12] gen: add files for initial traffic generation library
Date: Tue, 14 Dec 2021 14:12:33 +0000 [thread overview]
Message-ID: <20211214141242.3383831-4-ronan.randles@intel.com> (raw)
In-Reply-To: <20211214141242.3383831-1-ronan.randles@intel.com>
From: Harry van Haaren <harry.van.haaren@intel.com>
This commit adds empty files to the DPDK build for a traffic
generation library, including the bare create and destroy functions.
Unit testing infrastructure is added for the create function.
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
---
app/test/meson.build | 2 ++
app/test/test_gen.c | 55 +++++++++++++++++++++++++++++++++++++++
doc/api/doxy-api-index.md | 3 ++-
doc/api/doxy-api.conf.in | 1 +
lib/gen/meson.build | 5 ++++
lib/gen/rte_gen.c | 33 +++++++++++++++++++++++
lib/gen/rte_gen.h | 44 +++++++++++++++++++++++++++++++
lib/gen/version.map | 6 +++++
lib/meson.build | 1 +
9 files changed, 149 insertions(+), 1 deletion(-)
create mode 100644 app/test/test_gen.c
create mode 100644 lib/gen/meson.build
create mode 100644 lib/gen/rte_gen.c
create mode 100644 lib/gen/rte_gen.h
create mode 100644 lib/gen/version.map
diff --git a/app/test/meson.build b/app/test/meson.build
index 4cf540fc74..0e4f3b810d 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -66,6 +66,7 @@ test_sources = files(
'test_fib6_perf.c',
'test_func_reentrancy.c',
'test_flow_classify.c',
+ 'test_gen.c',
'test_graph.c',
'test_graph_perf.c',
'test_hash.c',
@@ -173,6 +174,7 @@ test_deps = [
'eventdev',
'fib',
'flow_classify',
+ 'gen',
'graph',
'hash',
'ipsec',
diff --git a/app/test/test_gen.c b/app/test/test_gen.c
new file mode 100644
index 0000000000..f53f4a6608
--- /dev/null
+++ b/app/test/test_gen.c
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2021 Intel Corporation
+ */
+
+#include <rte_common.h>
+#include <rte_gen.h>
+#include <rte_mbuf.h>
+
+#include "test.h"
+
+static struct rte_mempool *mp;
+
+static int
+testsuite_setup(void)
+{
+ if (!mp) {
+ mp = rte_pktmbuf_pool_create("test_gen_mp", 8192, 256, 0, 2048,
+ SOCKET_ID_ANY);
+ }
+ return mp ? TEST_SUCCESS : TEST_FAILED;
+}
+
+static void
+testsuite_teardown(void)
+{
+ rte_mempool_free(mp);
+}
+
+static int
+test_gen_create(void)
+{
+ struct rte_gen *gen = rte_gen_create(mp);
+ TEST_ASSERT_FAIL(gen, "Expected valid pointer after create()");
+
+ rte_gen_destroy(gen);
+ return 0;
+}
+
+static struct unit_test_suite gen_suite = {
+ .suite_name = "gen: packet generator unit test suite",
+ .setup = testsuite_setup,
+ .teardown = testsuite_teardown,
+ .unit_test_cases = {
+ TEST_CASE_ST(NULL, NULL, test_gen_create),
+ TEST_CASES_END() /**< NULL terminate unit test array */
+ }
+};
+
+static int
+test_gen_suite(void)
+{
+ return unit_test_suite_runner(&gen_suite);
+}
+
+REGISTER_TEST_COMMAND(gen_autotest, test_gen_suite);
diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md
index 4245b9635c..f7ddadd21a 100644
--- a/doc/api/doxy-api-index.md
+++ b/doc/api/doxy-api-index.md
@@ -220,7 +220,8 @@ The public API headers are grouped by topics:
[log] (@ref rte_log.h),
[errno] (@ref rte_errno.h),
[trace] (@ref rte_trace.h),
- [trace_point] (@ref rte_trace_point.h)
+ [trace_point] (@ref rte_trace_point.h),
+ [gen] (@ref rte_gen.h)
- **misc**:
[EAL config] (@ref rte_eal.h),
diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in
index db2ca9b6ed..6344e949d9 100644
--- a/doc/api/doxy-api.conf.in
+++ b/doc/api/doxy-api.conf.in
@@ -41,6 +41,7 @@ INPUT = @TOPDIR@/doc/api/doxy-api-index.md \
@TOPDIR@/lib/eventdev \
@TOPDIR@/lib/fib \
@TOPDIR@/lib/flow_classify \
+ @TOPDIR@/lib/gen \
@TOPDIR@/lib/gpudev \
@TOPDIR@/lib/graph \
@TOPDIR@/lib/gro \
diff --git a/lib/gen/meson.build b/lib/gen/meson.build
new file mode 100644
index 0000000000..3c5d854645
--- /dev/null
+++ b/lib/gen/meson.build
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2021 Intel Corporation
+
+sources = files('rte_gen.c')
+headers = files('rte_gen.h')
diff --git a/lib/gen/rte_gen.c b/lib/gen/rte_gen.c
new file mode 100644
index 0000000000..d993772422
--- /dev/null
+++ b/lib/gen/rte_gen.c
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2021 Intel Corporation
+ */
+
+#include "rte_gen.h"
+
+#include <rte_malloc.h>
+
+/** Structure that represents a traffic generator. */
+struct rte_gen {
+ /* Mempool that buffers are retrieved from. */
+ struct rte_mempool *mp;
+};
+
+/* Allocate and initialize a traffic generator instance. */
+struct rte_gen *
+rte_gen_create(struct rte_mempool *mempool)
+{
+ struct rte_gen *gen = rte_zmalloc(NULL, sizeof(*gen), 0);
+ if (gen == NULL)
+ return NULL;
+
+ gen->mp = mempool;
+
+ return gen;
+}
+
+/* Free a traffic generator instance. */
+void
+rte_gen_destroy(struct rte_gen *gen)
+{
+ rte_free(gen);
+}
diff --git a/lib/gen/rte_gen.h b/lib/gen/rte_gen.h
new file mode 100644
index 0000000000..5b30430f9e
--- /dev/null
+++ b/lib/gen/rte_gen.h
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2021 Intel Corporation
+ */
+
+#ifndef _RTE_GEN_H_
+#define _RTE_GEN_H_
+
+/**
+ * @file
+ * RTE gen
+ *
+ * A library for the generation of packets, to allow easy generation
+ * of various flows of packets.
+ */
+
+#include <stdint.h>
+#include <rte_compat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** Structure that represents a logical traffic generator. */
+struct rte_gen;
+
+/* Forward declarations for DPDK componeents. */
+struct rte_mempool;
+
+/* Allocate and initialize a traffic generator instance. */
+__rte_experimental
+struct rte_gen *
+rte_gen_create(struct rte_mempool *mempool);
+
+/* Free a traffic generator instance. */
+__rte_experimental
+void
+rte_gen_destroy(struct rte_gen *gen);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTE_GEN_H_ */
diff --git a/lib/gen/version.map b/lib/gen/version.map
new file mode 100644
index 0000000000..d8a26eb53a
--- /dev/null
+++ b/lib/gen/version.map
@@ -0,0 +1,6 @@
+EXPERIMENTAL {
+ global:
+
+ rte_gen_create;
+ rte_gen_destroy;
+};
diff --git a/lib/meson.build b/lib/meson.build
index 018976df17..5b28cd3a89 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -35,6 +35,7 @@ libraries = [
'efd',
'eventdev',
'gpudev',
+ 'gen',
'gro',
'gso',
'ip_frag',
--
2.25.1
next prev parent reply other threads:[~2021-12-14 14:13 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-14 14:12 [PATCH 00/12] add packet generator library and example app Ronan Randles
2021-12-14 14:12 ` [PATCH 01/12] net: add string to IPv4 parse function Ronan Randles
2021-12-14 17:31 ` Morten Brørup
2021-12-15 9:27 ` Bruce Richardson
2021-12-15 9:35 ` Morten Brørup
2021-12-15 10:11 ` Bruce Richardson
2022-01-19 14:20 ` Thomas Monjalon
2021-12-14 14:12 ` [PATCH 02/12] net: add function to pretty print IPv4 Ronan Randles
2021-12-14 16:08 ` Stephen Hemminger
2021-12-14 17:42 ` Morten Brørup
2021-12-14 17:31 ` Morten Brørup
2021-12-15 1:06 ` Ananyev, Konstantin
2021-12-15 3:20 ` Stephen Hemminger
2021-12-15 7:23 ` Morten Brørup
2021-12-15 13:06 ` Ananyev, Konstantin
2022-01-19 14:24 ` Thomas Monjalon
2022-01-19 14:41 ` Van Haaren, Harry
2021-12-14 14:12 ` Ronan Randles [this message]
2021-12-14 14:12 ` [PATCH 04/12] gen: add basic Rx and Tx routines and tests Ronan Randles
2021-12-14 14:12 ` [PATCH 05/12] gen: add raw packet data API " Ronan Randles
2021-12-15 12:40 ` Jerin Jacob
2021-12-17 11:40 ` Van Haaren, Harry
2021-12-17 16:19 ` Thomas Monjalon
2021-12-20 10:21 ` Van Haaren, Harry
2022-01-19 14:56 ` Thomas Monjalon
2022-01-20 10:21 ` Van Haaren, Harry
2022-01-21 10:45 ` Van Haaren, Harry
2021-12-20 13:21 ` Jerin Jacob
2022-01-21 14:20 ` Xueming(Steven) Li
2021-12-14 14:12 ` [PATCH 06/12] gen: add parsing infrastructure and Ether protocol Ronan Randles
2021-12-14 14:12 ` [PATCH 07/12] gen: add gen IP parsing Ronan Randles
2021-12-14 14:12 ` [PATCH 08/12] examples/generator: import code from basicfwd.c Ronan Randles
2021-12-14 14:12 ` [PATCH 09/12] examples/generator: enable gen library for traffic gen Ronan Randles
2021-12-14 14:12 ` [PATCH 10/12] examples/generator: telemetry support Ronan Randles
2021-12-14 14:12 ` [PATCH 11/12] examples/generator: link status check added Ronan Randles
2021-12-14 14:12 ` [PATCH 12/12] examples/generator: line rate limiting Ronan Randles
2021-12-14 16:10 ` Stephen Hemminger
2021-12-14 14:57 ` [PATCH 00/12] add packet generator library and example app Bruce Richardson
2021-12-14 15:59 ` Randles, Ronan
2022-01-12 16:18 ` Morten Brørup
2021-12-15 12:31 ` Jerin Jacob
2021-12-15 14:07 ` Bruce Richardson
2022-01-21 10:31 ` [PATCH v2 00/15] " Ronan Randles
2022-01-21 10:31 ` [PATCH v2 01/15] net: add string to IPv4 parse function Ronan Randles
2022-01-21 10:31 ` [PATCH v2 02/15] net: add function to pretty print IPv4 Ronan Randles
2022-01-21 16:20 ` Stephen Hemminger
2022-01-21 10:31 ` [PATCH v2 03/15] gen: add files for initial traffic generation library Ronan Randles
2022-01-21 10:31 ` [PATCH v2 04/15] gen: add basic Rx and Tx routines and tests Ronan Randles
2022-01-21 10:31 ` [PATCH v2 05/15] gen: add raw packet data API " Ronan Randles
2022-01-21 10:31 ` [PATCH v2 06/15] gen: add parsing infrastructure and Ether protocol Ronan Randles
2022-01-21 10:31 ` [PATCH v2 07/15] gen: add gen IP parsing Ronan Randles
2022-01-21 10:31 ` [PATCH v2 08/15] examples/generator: import code from basicfwd.c Ronan Randles
2022-01-21 10:31 ` [PATCH v2 09/15] examples/generator: enable gen library for traffic gen Ronan Randles
2022-01-21 10:31 ` [PATCH v2 10/15] examples/generator: telemetry support Ronan Randles
2022-01-21 10:31 ` [PATCH v2 11/15] examples/generator: link status check added Ronan Randles
2022-01-21 10:31 ` [PATCH v2 12/15] examples/generator: line rate limiting Ronan Randles
2022-01-21 10:31 ` [PATCH v2 13/15] gen: add UDP support Ronan Randles
2022-01-21 10:31 ` [PATCH v2 14/15] net/vxlan: instance flag endianness refactored Ronan Randles
2022-01-21 10:31 ` [PATCH v2 15/15] gen: add VXLAN support Ronan Randles
2022-01-21 14:44 ` [PATCH 00/12] add packet generator library and example app Xueming(Steven) Li
2022-01-21 15:24 ` Van Haaren, Harry
2022-01-24 10:48 ` Ananyev, Konstantin
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=20211214141242.3383831-4-ronan.randles@intel.com \
--to=ronan.randles@intel.com \
--cc=dev@dpdk.org \
--cc=harry.van.haaren@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).