From: Alexander Kozyrev <akozyrev@nvidia.com>
To: <dev@dpdk.org>
Cc: <orika@nvidia.com>, <thomas@monjalon.net>,
<ivan.malov@oktetlabs.ru>, <andrew.rybchenko@oktetlabs.ru>,
<ferruh.yigit@intel.com>, <mohammad.abdul.awal@intel.com>,
<qi.z.zhang@intel.com>, <jerinj@marvell.com>,
<ajit.khaparde@broadcom.com>, <bruce.richardson@intel.com>
Subject: [PATCH v8 05/11] app/testpmd: add flow engine configuration
Date: Sun, 20 Feb 2022 05:44:03 +0200 [thread overview]
Message-ID: <20220220034409.2226860-6-akozyrev@nvidia.com> (raw)
In-Reply-To: <20220220034409.2226860-1-akozyrev@nvidia.com>
Add testpmd support for the rte_flow_configure API.
Provide the command line interface for the Flow management.
Usage example: flow configure 0 queues_number 8 queues_size 256
Implement rte_flow_info_get API to get available resources:
Usage example: flow info 0
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
---
app/test-pmd/cmdline_flow.c | 126 +++++++++++++++++++-
app/test-pmd/config.c | 61 ++++++++++
app/test-pmd/testpmd.h | 7 ++
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 61 +++++++++-
4 files changed, 252 insertions(+), 3 deletions(-)
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index c0644d678c..0533a33ca2 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -72,6 +72,8 @@ enum index {
/* Top-level command. */
FLOW,
/* Sub-level commands. */
+ INFO,
+ CONFIGURE,
INDIRECT_ACTION,
VALIDATE,
CREATE,
@@ -122,6 +124,13 @@ enum index {
DUMP_ALL,
DUMP_ONE,
+ /* Configure arguments */
+ CONFIG_QUEUES_NUMBER,
+ CONFIG_QUEUES_SIZE,
+ CONFIG_COUNTERS_NUMBER,
+ CONFIG_AGING_OBJECTS_NUMBER,
+ CONFIG_METERS_NUMBER,
+
/* Indirect action arguments */
INDIRECT_ACTION_CREATE,
INDIRECT_ACTION_UPDATE,
@@ -868,6 +877,11 @@ struct buffer {
enum index command; /**< Flow command. */
portid_t port; /**< Affected port ID. */
union {
+ struct {
+ struct rte_flow_port_attr port_attr;
+ uint32_t nb_queue;
+ struct rte_flow_queue_attr queue_attr;
+ } configure; /**< Configuration arguments. */
struct {
uint32_t *action_id;
uint32_t action_id_n;
@@ -949,6 +963,16 @@ static const enum index next_flex_item[] = {
ZERO,
};
+static const enum index next_config_attr[] = {
+ CONFIG_QUEUES_NUMBER,
+ CONFIG_QUEUES_SIZE,
+ CONFIG_COUNTERS_NUMBER,
+ CONFIG_AGING_OBJECTS_NUMBER,
+ CONFIG_METERS_NUMBER,
+ END,
+ ZERO,
+};
+
static const enum index next_ia_create_attr[] = {
INDIRECT_ACTION_CREATE_ID,
INDIRECT_ACTION_INGRESS,
@@ -2045,6 +2069,9 @@ static int parse_aged(struct context *, const struct token *,
static int parse_isolate(struct context *, const struct token *,
const char *, unsigned int,
void *, unsigned int);
+static int parse_configure(struct context *, const struct token *,
+ const char *, unsigned int,
+ void *, unsigned int);
static int parse_tunnel(struct context *, const struct token *,
const char *, unsigned int,
void *, unsigned int);
@@ -2270,7 +2297,9 @@ static const struct token token_list[] = {
.type = "{command} {port_id} [{arg} [...]]",
.help = "manage ingress/egress flow rules",
.next = NEXT(NEXT_ENTRY
- (INDIRECT_ACTION,
+ (INFO,
+ CONFIGURE,
+ INDIRECT_ACTION,
VALIDATE,
CREATE,
DESTROY,
@@ -2285,6 +2314,65 @@ static const struct token token_list[] = {
.call = parse_init,
},
/* Top-level command. */
+ [INFO] = {
+ .name = "info",
+ .help = "get information about flow engine",
+ .next = NEXT(NEXT_ENTRY(END),
+ NEXT_ENTRY(COMMON_PORT_ID)),
+ .args = ARGS(ARGS_ENTRY(struct buffer, port)),
+ .call = parse_configure,
+ },
+ /* Top-level command. */
+ [CONFIGURE] = {
+ .name = "configure",
+ .help = "configure flow engine",
+ .next = NEXT(next_config_attr,
+ NEXT_ENTRY(COMMON_PORT_ID)),
+ .args = ARGS(ARGS_ENTRY(struct buffer, port)),
+ .call = parse_configure,
+ },
+ /* Configure arguments. */
+ [CONFIG_QUEUES_NUMBER] = {
+ .name = "queues_number",
+ .help = "number of queues",
+ .next = NEXT(next_config_attr,
+ NEXT_ENTRY(COMMON_UNSIGNED)),
+ .args = ARGS(ARGS_ENTRY(struct buffer,
+ args.configure.nb_queue)),
+ },
+ [CONFIG_QUEUES_SIZE] = {
+ .name = "queues_size",
+ .help = "number of elements in queues",
+ .next = NEXT(next_config_attr,
+ NEXT_ENTRY(COMMON_UNSIGNED)),
+ .args = ARGS(ARGS_ENTRY(struct buffer,
+ args.configure.queue_attr.size)),
+ },
+ [CONFIG_COUNTERS_NUMBER] = {
+ .name = "counters_number",
+ .help = "number of counters",
+ .next = NEXT(next_config_attr,
+ NEXT_ENTRY(COMMON_UNSIGNED)),
+ .args = ARGS(ARGS_ENTRY(struct buffer,
+ args.configure.port_attr.nb_counters)),
+ },
+ [CONFIG_AGING_OBJECTS_NUMBER] = {
+ .name = "aging_counters_number",
+ .help = "number of aging objects",
+ .next = NEXT(next_config_attr,
+ NEXT_ENTRY(COMMON_UNSIGNED)),
+ .args = ARGS(ARGS_ENTRY(struct buffer,
+ args.configure.port_attr.nb_aging_objects)),
+ },
+ [CONFIG_METERS_NUMBER] = {
+ .name = "meters_number",
+ .help = "number of meters",
+ .next = NEXT(next_config_attr,
+ NEXT_ENTRY(COMMON_UNSIGNED)),
+ .args = ARGS(ARGS_ENTRY(struct buffer,
+ args.configure.port_attr.nb_meters)),
+ },
+ /* Top-level command. */
[INDIRECT_ACTION] = {
.name = "indirect_action",
.type = "{command} {port_id} [{arg} [...]]",
@@ -7736,6 +7824,33 @@ parse_isolate(struct context *ctx, const struct token *token,
return len;
}
+/** Parse tokens for info/configure command. */
+static int
+parse_configure(struct context *ctx, const struct token *token,
+ const char *str, unsigned int len,
+ void *buf, unsigned int size)
+{
+ struct buffer *out = buf;
+
+ /* Token name must match. */
+ if (parse_default(ctx, token, str, len, NULL, 0) < 0)
+ return -1;
+ /* Nothing else to do if there is no buffer. */
+ if (!out)
+ return len;
+ if (!out->command) {
+ if (ctx->curr != INFO && ctx->curr != CONFIGURE)
+ return -1;
+ if (sizeof(*out) > size)
+ return -1;
+ out->command = ctx->curr;
+ ctx->objdata = 0;
+ ctx->object = out;
+ ctx->objmask = NULL;
+ }
+ return len;
+}
+
static int
parse_flex(struct context *ctx, const struct token *token,
const char *str, unsigned int len,
@@ -8964,6 +9079,15 @@ static void
cmd_flow_parsed(const struct buffer *in)
{
switch (in->command) {
+ case INFO:
+ port_flow_get_info(in->port);
+ break;
+ case CONFIGURE:
+ port_flow_configure(in->port,
+ &in->args.configure.port_attr,
+ in->args.configure.nb_queue,
+ &in->args.configure.queue_attr);
+ break;
case INDIRECT_ACTION_CREATE:
port_action_handle_create(
in->port, in->args.vc.attr.group,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index de1ec14bc7..33a85cd7ca 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -1610,6 +1610,67 @@ action_alloc(portid_t port_id, uint32_t id,
return 0;
}
+/** Get info about flow management resources. */
+int
+port_flow_get_info(portid_t port_id)
+{
+ struct rte_flow_port_info port_info;
+ struct rte_flow_queue_info queue_info;
+ struct rte_flow_error error;
+
+ if (port_id_is_invalid(port_id, ENABLED_WARN) ||
+ port_id == (portid_t)RTE_PORT_ALL)
+ return -EINVAL;
+ /* Poisoning to make sure PMDs update it in case of error. */
+ memset(&error, 0x99, sizeof(error));
+ memset(&port_info, 0, sizeof(port_info));
+ memset(&queue_info, 0, sizeof(queue_info));
+ if (rte_flow_info_get(port_id, &port_info, &queue_info, &error))
+ return port_flow_complain(&error);
+ printf("Flow engine resources on port %u:\n"
+ "Number of queues: %d\n"
+ "Size of queues: %d\n"
+ "Number of counters: %d\n"
+ "Number of aging objects: %d\n"
+ "Number of meter actions: %d\n",
+ port_id, port_info.max_nb_queues,
+ queue_info.max_size,
+ port_info.max_nb_counters,
+ port_info.max_nb_aging_objects,
+ port_info.max_nb_meters);
+ return 0;
+}
+
+/** Configure flow management resources. */
+int
+port_flow_configure(portid_t port_id,
+ const struct rte_flow_port_attr *port_attr,
+ uint16_t nb_queue,
+ const struct rte_flow_queue_attr *queue_attr)
+{
+ struct rte_port *port;
+ struct rte_flow_error error;
+ const struct rte_flow_queue_attr *attr_list[nb_queue];
+ int std_queue;
+
+ if (port_id_is_invalid(port_id, ENABLED_WARN) ||
+ port_id == (portid_t)RTE_PORT_ALL)
+ return -EINVAL;
+ port = &ports[port_id];
+ port->queue_nb = nb_queue;
+ port->queue_sz = queue_attr->size;
+ for (std_queue = 0; std_queue < nb_queue; std_queue++)
+ attr_list[std_queue] = queue_attr;
+ /* Poisoning to make sure PMDs update it in case of error. */
+ memset(&error, 0x66, sizeof(error));
+ if (rte_flow_configure(port_id, port_attr, nb_queue, attr_list, &error))
+ return port_flow_complain(&error);
+ printf("Configure flows on port %u: "
+ "number of queues %d with %d elements\n",
+ port_id, nb_queue, queue_attr->size);
+ return 0;
+}
+
/** Create indirect action */
int
port_action_handle_create(portid_t port_id, uint32_t id,
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index 9967825044..096b6825eb 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -243,6 +243,8 @@ struct rte_port {
struct rte_eth_txconf tx_conf[RTE_MAX_QUEUES_PER_PORT+1]; /**< per queue tx configuration */
struct rte_ether_addr *mc_addr_pool; /**< pool of multicast addrs */
uint32_t mc_addr_nb; /**< nb. of addr. in mc_addr_pool */
+ queueid_t queue_nb; /**< nb. of queues for flow rules */
+ uint32_t queue_sz; /**< size of a queue for flow rules */
uint8_t slave_flag; /**< bonding slave port */
struct port_flow *flow_list; /**< Associated flows. */
struct port_indirect_action *actions_list;
@@ -885,6 +887,11 @@ struct rte_flow_action_handle *port_action_handle_get_by_id(portid_t port_id,
uint32_t id);
int port_action_handle_update(portid_t port_id, uint32_t id,
const struct rte_flow_action *action);
+int port_flow_get_info(portid_t port_id);
+int port_flow_configure(portid_t port_id,
+ const struct rte_flow_port_attr *port_attr,
+ uint16_t nb_queue,
+ const struct rte_flow_queue_attr *queue_attr);
int port_flow_validate(portid_t port_id,
const struct rte_flow_attr *attr,
const struct rte_flow_item *pattern,
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 9cc248084f..c8f048aeef 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -3308,8 +3308,8 @@ Flow rules management
---------------------
Control of the generic flow API (*rte_flow*) is fully exposed through the
-``flow`` command (validation, creation, destruction, queries and operation
-modes).
+``flow`` command (configuration, validation, creation, destruction, queries
+and operation modes).
Considering *rte_flow* overlaps with all `Filter Functions`_, using both
features simultaneously may cause undefined side-effects and is therefore
@@ -3332,6 +3332,18 @@ The first parameter stands for the operation mode. Possible operations and
their general syntax are described below. They are covered in detail in the
following sections.
+- Get info about flow engine::
+
+ flow info {port_id}
+
+- Configure flow engine::
+
+ flow configure {port_id}
+ [queues_number {number}] [queues_size {size}]
+ [counters_number {number}]
+ [aging_counters_number {number}]
+ [meters_number {number}]
+
- Check whether a flow rule can be created::
flow validate {port_id}
@@ -3391,6 +3403,51 @@ following sections.
flow tunnel list {port_id}
+Retrieving info about flow management engine
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``flow info`` retrieves info on pre-configurable resources in the underlying
+device to give a hint of possible values for flow engine configuration.
+
+``rte_flow_info_get()``::
+
+ flow info {port_id}
+
+If successful, it will show::
+
+ Flow engine resources on port #[...]:
+ Number of queues: #[...]
+ Size of queues: #[...]
+ Number of counters: #[...]
+ Number of aging objects: #[...]
+ Number of meters: #[...]
+
+Otherwise it will show an error message of the form::
+
+ Caught error type [...] ([...]): [...]
+
+Configuring flow management engine
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+``flow configure`` pre-allocates all the needed resources in the underlying
+device to be used later at the flow creation. Flow queues are allocated as well
+for asynchronous flow creation/destruction operations. It is bound to
+``rte_flow_configure()``::
+
+ flow configure {port_id}
+ [queues_number {number}] [queues_size {size}]
+ [counters_number {number}]
+ [aging_counters_number {number}]
+ [meters_number {number}]
+
+If successful, it will show::
+
+ Configure flows on port #[...]: number of queues #[...] with #[...] elements
+
+Otherwise it will show an error message of the form::
+
+ Caught error type [...] ([...]): [...]
+
Creating a tunnel stub for offload
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
2.18.2
next prev parent reply other threads:[~2022-02-20 3:45 UTC|newest]
Thread overview: 218+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20220206032526.816079-1-akozyrev@nvidia.com >
2022-02-09 21:37 ` [PATCH v4 00/10] ethdev: datapath-focused flow rules management Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 01/10] ethdev: introduce flow pre-configuration hints Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 02/10] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 03/10] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 04/10] app/testpmd: implement rte flow configuration Alexander Kozyrev
2022-02-10 9:32 ` Thomas Monjalon
2022-02-09 21:38 ` [PATCH v4 05/10] app/testpmd: implement rte flow template management Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 06/10] app/testpmd: implement rte flow table management Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 07/10] app/testpmd: implement rte flow queue flow operations Alexander Kozyrev
2022-02-09 21:53 ` Ori Kam
2022-02-09 21:38 ` [PATCH v4 08/10] app/testpmd: implement rte flow push operations Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 09/10] app/testpmd: implement rte flow pull operations Alexander Kozyrev
2022-02-09 21:38 ` [PATCH v4 10/10] app/testpmd: implement rte flow queue indirect actions Alexander Kozyrev
2022-02-10 16:00 ` [PATCH v4 00/10] ethdev: datapath-focused flow rules management Ferruh Yigit
2022-02-10 16:12 ` Asaf Penso
2022-02-10 16:33 ` Suanming Mou
2022-02-10 18:04 ` Ajit Khaparde
2022-02-11 10:22 ` Ivan Malov
2022-02-11 10:48 ` Jerin Jacob
2022-02-11 2:26 ` [PATCH v5 " Alexander Kozyrev
2022-02-11 2:26 ` [PATCH v5 01/10] ethdev: introduce flow pre-configuration hints Alexander Kozyrev
2022-02-11 10:16 ` Andrew Rybchenko
2022-02-11 18:47 ` Alexander Kozyrev
2022-02-16 13:03 ` Andrew Rybchenko
2022-02-16 22:17 ` Alexander Kozyrev
2022-02-17 10:35 ` Andrew Rybchenko
2022-02-17 10:57 ` Ori Kam
2022-02-17 11:04 ` Andrew Rybchenko
2022-02-11 2:26 ` [PATCH v5 02/10] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-11 11:27 ` Andrew Rybchenko
2022-02-11 22:25 ` Alexander Kozyrev
2022-02-16 13:14 ` Andrew Rybchenko
2022-02-16 14:18 ` Ori Kam
2022-02-17 10:44 ` Andrew Rybchenko
2022-02-17 11:11 ` Ori Kam
2022-02-11 2:26 ` [PATCH v5 03/10] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-11 12:42 ` Andrew Rybchenko
2022-02-12 2:19 ` Alexander Kozyrev
2022-02-12 9:25 ` Thomas Monjalon
2022-02-16 22:49 ` Alexander Kozyrev
2022-02-17 8:18 ` Thomas Monjalon
2022-02-17 11:02 ` Andrew Rybchenko
2022-02-16 13:34 ` Andrew Rybchenko
2022-02-16 14:53 ` Ori Kam
2022-02-17 10:52 ` Andrew Rybchenko
2022-02-17 11:08 ` Ori Kam
2022-02-17 14:16 ` Ori Kam
2022-02-17 14:34 ` Thomas Monjalon
2022-02-16 15:15 ` Ori Kam
2022-02-17 11:10 ` Andrew Rybchenko
2022-02-17 11:19 ` Ori Kam
2022-02-11 2:26 ` [PATCH v5 04/10] app/testpmd: add flow engine configuration Alexander Kozyrev
2022-02-11 2:26 ` [PATCH v5 05/10] app/testpmd: add flow template management Alexander Kozyrev
2022-02-11 2:26 ` [PATCH v5 06/10] app/testpmd: add flow table management Alexander Kozyrev
2022-02-11 2:26 ` [PATCH v5 07/10] app/testpmd: add async flow create/destroy operations Alexander Kozyrev
2022-02-11 2:26 ` [PATCH v5 08/10] app/testpmd: add flow queue push operation Alexander Kozyrev
2022-02-11 2:26 ` [PATCH v5 09/10] app/testpmd: add flow queue pull operation Alexander Kozyrev
2022-02-11 2:26 ` [PATCH v5 10/10] app/testpmd: add async indirect actions creation/destruction Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 00/10] ethdev: datapath-focused flow rules management Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 01/10] ethdev: introduce flow pre-configuration hints Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 02/10] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 03/10] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 04/10] app/testpmd: add flow engine configuration Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 05/10] app/testpmd: add flow template management Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 06/10] app/testpmd: add flow table management Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 07/10] app/testpmd: add async flow create/destroy operations Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 08/10] app/testpmd: add flow queue push operation Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 09/10] app/testpmd: add flow queue pull operation Alexander Kozyrev
2022-02-12 4:19 ` [PATCH v6 10/10] app/testpmd: add async indirect actions creation/destruction Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 00/10] ethdev: datapath-focused flow rules management Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 01/11] ethdev: introduce flow engine configuration Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 02/11] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 03/11] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 04/11] ethdev: bring in async indirect actions operations Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 05/11] app/testpmd: add flow engine configuration Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 06/11] app/testpmd: add flow template management Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 07/11] app/testpmd: add flow table management Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 08/11] app/testpmd: add async flow create/destroy operations Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 09/11] app/testpmd: add flow queue push operation Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 10/11] app/testpmd: add flow queue pull operation Alexander Kozyrev
2022-02-19 4:11 ` [PATCH v7 11/11] app/testpmd: add async indirect actions operations Alexander Kozyrev
2022-02-20 3:43 ` [PATCH v8 00/10] ethdev: datapath-focused flow rules management Alexander Kozyrev
2022-02-20 3:43 ` [PATCH v8 01/11] ethdev: introduce flow engine configuration Alexander Kozyrev
2022-02-21 9:47 ` Andrew Rybchenko
2022-02-21 9:52 ` Andrew Rybchenko
2022-02-21 12:53 ` Ori Kam
2022-02-21 14:33 ` Alexander Kozyrev
2022-02-21 14:53 ` Andrew Rybchenko
2022-02-21 15:49 ` Thomas Monjalon
2022-02-20 3:44 ` [PATCH v8 02/11] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-21 10:57 ` Andrew Rybchenko
2022-02-21 13:12 ` Ori Kam
2022-02-21 15:05 ` Andrew Rybchenko
2022-02-21 15:43 ` Ori Kam
2022-02-21 15:14 ` Alexander Kozyrev
2022-02-20 3:44 ` [PATCH v8 03/11] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-21 14:49 ` Andrew Rybchenko
2022-02-21 15:35 ` Alexander Kozyrev
2022-02-20 3:44 ` [PATCH v8 04/11] ethdev: bring in async indirect actions operations Alexander Kozyrev
2022-02-20 3:44 ` Alexander Kozyrev [this message]
2022-02-20 3:44 ` [PATCH v8 06/11] app/testpmd: add flow template management Alexander Kozyrev
2022-02-20 3:44 ` [PATCH v8 07/11] app/testpmd: add flow table management Alexander Kozyrev
2022-02-20 3:44 ` [PATCH v8 08/11] app/testpmd: add async flow create/destroy operations Alexander Kozyrev
2022-02-20 3:44 ` [PATCH v8 09/11] app/testpmd: add flow queue push operation Alexander Kozyrev
2022-02-20 3:44 ` [PATCH v8 10/11] app/testpmd: add flow queue pull operation Alexander Kozyrev
2022-02-20 3:44 ` [PATCH v8 11/11] app/testpmd: add async indirect actions operations Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 00/11] ethdev: datapath-focused flow rules management Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 01/11] ethdev: introduce flow engine configuration Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 02/11] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 03/11] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 04/11] ethdev: bring in async indirect actions operations Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 05/11] app/testpmd: add flow engine configuration Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 06/11] app/testpmd: add flow template management Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 07/11] app/testpmd: add flow table management Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 08/11] app/testpmd: add async flow create/destroy operations Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 09/11] app/testpmd: add flow queue push operation Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 10/11] app/testpmd: add flow queue pull operation Alexander Kozyrev
2022-02-21 23:02 ` [PATCH v9 11/11] app/testpmd: add async indirect actions operations Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 00/11] ethdev: datapath-focused flow rules management Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 01/11] ethdev: introduce flow engine configuration Alexander Kozyrev
2022-02-24 8:22 ` Andrew Rybchenko
2022-02-23 3:02 ` [PATCH v10 02/11] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-24 8:34 ` Andrew Rybchenko
2022-02-23 3:02 ` [PATCH v10 03/11] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-24 8:35 ` Andrew Rybchenko
2022-02-23 3:02 ` [PATCH v10 04/11] ethdev: bring in async indirect actions operations Alexander Kozyrev
2022-02-24 8:37 ` Andrew Rybchenko
2022-02-23 3:02 ` [PATCH v10 05/11] app/testpmd: add flow engine configuration Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 06/11] app/testpmd: add flow template management Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 07/11] app/testpmd: add flow table management Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 08/11] app/testpmd: add async flow create/destroy operations Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 09/11] app/testpmd: add flow queue push operation Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 10/11] app/testpmd: add flow queue pull operation Alexander Kozyrev
2022-02-23 3:02 ` [PATCH v10 11/11] app/testpmd: add async indirect actions operations Alexander Kozyrev
2022-02-24 13:07 ` [PATCH v10 00/11] ethdev: datapath-focused flow rules management Ferruh Yigit
2022-02-24 13:13 ` Ferruh Yigit
2022-02-24 13:14 ` Raslan Darawsheh
2022-02-22 16:41 ` [PATCH v8 00/10] " Ferruh Yigit
2022-02-22 16:49 ` Ferruh Yigit
2021-10-06 4:48 [dpdk-dev] [RFC 0/3] " Alexander Kozyrev
2021-10-06 4:48 ` [dpdk-dev] [PATCH 1/3] ethdev: introduce flow pre-configuration hints Alexander Kozyrev
2021-10-13 4:11 ` Ajit Khaparde
2021-10-13 13:15 ` Ori Kam
2021-10-31 17:27 ` Ajit Khaparde
2021-11-01 10:40 ` Ori Kam
2021-10-06 4:48 ` [dpdk-dev] [PATCH 2/3] ethdev: add flow item/action templates Alexander Kozyrev
2021-10-06 17:24 ` Ivan Malov
2021-10-13 1:25 ` Alexander Kozyrev
2021-10-13 2:26 ` Ajit Khaparde
2021-10-13 2:38 ` Alexander Kozyrev
2021-10-13 11:25 ` Ivan Malov
2021-10-06 4:48 ` [dpdk-dev] [PATCH 3/3] ethdev: add async queue-based flow rules operations Alexander Kozyrev
2021-10-06 16:24 ` Ivan Malov
2021-10-13 1:10 ` Alexander Kozyrev
2021-10-13 4:57 ` Ajit Khaparde
2021-10-13 13:17 ` Ori Kam
2022-01-18 15:30 ` [PATCH v2 00/10] ethdev: datapath-focused flow rules management Alexander Kozyrev
2022-01-18 15:30 ` [PATCH v2 01/10] ethdev: introduce flow pre-configuration hints Alexander Kozyrev
2022-01-24 14:36 ` Jerin Jacob
2022-01-24 17:35 ` Thomas Monjalon
2022-01-24 17:46 ` Jerin Jacob
2022-01-24 18:08 ` Bruce Richardson
2022-01-25 1:14 ` Alexander Kozyrev
2022-01-25 15:58 ` Ori Kam
2022-01-25 18:09 ` Bruce Richardson
2022-01-25 18:14 ` Bruce Richardson
2022-01-26 9:45 ` Ori Kam
2022-01-26 10:52 ` Bruce Richardson
2022-01-26 11:21 ` Thomas Monjalon
2022-01-26 12:19 ` Ori Kam
2022-01-26 13:41 ` Bruce Richardson
2022-01-26 15:12 ` Ori Kam
2022-01-24 17:40 ` Ajit Khaparde
2022-01-25 1:28 ` Alexander Kozyrev
2022-01-25 18:44 ` Jerin Jacob
2022-01-26 22:02 ` Alexander Kozyrev
2022-01-27 9:34 ` Jerin Jacob
2022-01-18 15:30 ` [PATCH v2 02/10] ethdev: add flow item/action templates Alexander Kozyrev
2022-01-18 15:30 ` [PATCH v2 03/10] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-01-18 15:30 ` [PATCH v2 04/10] app/testpmd: implement rte flow configure Alexander Kozyrev
2022-01-18 15:33 ` [v2,05/10] app/testpmd: implement rte flow item/action template Alexander Kozyrev
2022-01-18 15:34 ` [v2,06/10] app/testpmd: implement rte flow table Alexander Kozyrev
2022-01-18 15:35 ` [v2,07/10] app/testpmd: implement rte flow queue create flow Alexander Kozyrev
2022-01-18 15:35 ` [v2,08/10] app/testpmd: implement rte flow queue drain Alexander Kozyrev
2022-01-18 15:36 ` [v2,09/10] app/testpmd: implement rte flow queue dequeue Alexander Kozyrev
2022-01-18 15:37 ` [v2,10/10] app/testpmd: implement rte flow queue indirect action Alexander Kozyrev
2022-01-19 7:16 ` [PATCH v2 00/10] ethdev: datapath-focused flow rules management Suanming Mou
2022-01-24 15:10 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 " Alexander Kozyrev
2022-02-06 3:25 ` [PATCH v3 01/10] ethdev: introduce flow pre-configuration hints Alexander Kozyrev
2022-02-07 13:15 ` Ori Kam
2022-02-07 14:52 ` Jerin Jacob
2022-02-07 17:59 ` Alexander Kozyrev
2022-02-07 18:24 ` Jerin Jacob
2022-02-06 3:25 ` [PATCH v3 02/10] ethdev: add flow item/action templates Alexander Kozyrev
2022-02-07 13:16 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 03/10] ethdev: bring in async queue-based flow rules operations Alexander Kozyrev
2022-02-07 13:18 ` Ori Kam
2022-02-08 10:56 ` Jerin Jacob
2022-02-08 14:11 ` Alexander Kozyrev
2022-02-08 15:23 ` Ivan Malov
2022-02-09 5:40 ` Alexander Kozyrev
2022-02-08 17:36 ` Jerin Jacob
2022-02-09 5:50 ` Jerin Jacob
2022-02-06 3:25 ` [PATCH v3 04/10] app/testpmd: implement rte flow configuration Alexander Kozyrev
2022-02-07 13:19 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 05/10] app/testpmd: implement rte flow template management Alexander Kozyrev
2022-02-07 13:20 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 06/10] app/testpmd: implement rte flow table management Alexander Kozyrev
2022-02-07 13:22 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 07/10] app/testpmd: implement rte flow queue flow operations Alexander Kozyrev
2022-02-07 13:21 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 08/10] app/testpmd: implement rte flow push operations Alexander Kozyrev
2022-02-07 13:22 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 09/10] app/testpmd: implement rte flow pull operations Alexander Kozyrev
2022-02-07 13:23 ` Ori Kam
2022-02-06 3:25 ` [PATCH v3 10/10] app/testpmd: implement rte flow queue indirect actions Alexander Kozyrev
2022-02-07 13:23 ` Ori Kam
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=20220220034409.2226860-6-akozyrev@nvidia.com \
--to=akozyrev@nvidia.com \
--cc=ajit.khaparde@broadcom.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=ivan.malov@oktetlabs.ru \
--cc=jerinj@marvell.com \
--cc=mohammad.abdul.awal@intel.com \
--cc=orika@nvidia.com \
--cc=qi.z.zhang@intel.com \
--cc=thomas@monjalon.net \
/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).