ethdev: add async flow connection tracking configuration

In queue based async flow engine, in order to optimize the flow
insertion rate, PMD can use the hints from application to have
resources pre-allocate during initialization phase for actions
such as count/meter/aging.

This commit adds the connection tracking action hints.

Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
This commit is contained in:
Suanming Mou 2022-09-20 10:10:36 +03:00 committed by Andrew Rybchenko
parent 3f9acb5c83
commit 3d7c08e4ef
3 changed files with 26 additions and 0 deletions

View File

@ -220,6 +220,7 @@ enum index {
CONFIG_COUNTERS_NUMBER,
CONFIG_AGING_OBJECTS_NUMBER,
CONFIG_METERS_NUMBER,
CONFIG_CONN_TRACK_NUMBER,
/* Indirect action arguments */
INDIRECT_ACTION_CREATE,
@ -1076,6 +1077,7 @@ static const enum index next_config_attr[] = {
CONFIG_COUNTERS_NUMBER,
CONFIG_AGING_OBJECTS_NUMBER,
CONFIG_METERS_NUMBER,
CONFIG_CONN_TRACK_NUMBER,
END,
ZERO,
};
@ -2639,6 +2641,14 @@ static const struct token token_list[] = {
.args = ARGS(ARGS_ENTRY(struct buffer,
args.configure.port_attr.nb_meters)),
},
[CONFIG_CONN_TRACK_NUMBER] = {
.name = "conn_tracks_number",
.help = "number of connection trackings",
.next = NEXT(next_config_attr,
NEXT_ENTRY(COMMON_UNSIGNED)),
.args = ARGS(ARGS_ENTRY(struct buffer,
args.configure.port_attr.nb_conn_tracks)),
},
/* Top-level command. */
[PATTERN_TEMPLATE] = {
.name = "pattern_template",

View File

@ -55,6 +55,12 @@ New Features
Also, make sure to start the actual text at the margin.
=======================================================
* **Added configuration for asynchronous flow connection tracking.**
Added connection tracking action number hint to ``rte_flow_configure``
and ``rte_flow_info_get``.
PMD can prepare the connection tracking resources according to the hint.
* **Updated Intel iavf driver.**
* Added flow subscription support.

View File

@ -4761,6 +4761,11 @@ struct rte_flow_port_info {
* @see RTE_FLOW_ACTION_TYPE_METER
*/
uint32_t max_nb_meters;
/**
* Maximum number connection trackings.
* @see RTE_FLOW_ACTION_TYPE_CONNTRACK
*/
uint32_t max_nb_conn_tracks;
};
/**
@ -4830,6 +4835,11 @@ struct rte_flow_port_attr {
* @see RTE_FLOW_ACTION_TYPE_METER
*/
uint32_t nb_meters;
/**
* Number of connection trackings to configure.
* @see RTE_FLOW_ACTION_TYPE_CONNTRACK
*/
uint32_t nb_conn_tracks;
};
/**