ethdev: allow action with any config object type

In current implementation, an action which requires parameters
must accept them enclosed in a structure.
Some actions require a single, trivial type parameter, but it still
must be enclosed in a structure.
This obligation results in multiple, action-specific structures, each
containing a single trivial type parameter.

This patch introduces a new approach, allowing an action configuration
object of any type, trivial or a structure.

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
Dekel Peled 2019-07-02 17:17:26 +03:00 committed by Ferruh Yigit
parent 4f538fa249
commit f10409b766
2 changed files with 9 additions and 7 deletions

View File

@ -1213,8 +1213,9 @@ Matches an application specific 32 bit metadata item.
Actions
~~~~~~~
Each possible action is represented by a type. Some have associated
configuration structures. Several actions combined in a list can be assigned
Each possible action is represented by a type.
An action can have an associated configuration object.
Several actions combined in a list can be assigned
to a flow rule and are performed in order.
They fall in three categories:

View File

@ -1244,9 +1244,10 @@ struct rte_flow_item {
/**
* Action types.
*
* Each possible action is represented by a type. Some have associated
* configuration structures. Several actions combined in a list can be
* assigned to a flow rule and are performed in order.
* Each possible action is represented by a type.
* An action can have an associated configuration object.
* Several actions combined in a list can be assigned
* to a flow rule and are performed in order.
*
* They fall in three categories:
*
@ -2192,11 +2193,11 @@ struct rte_flow_action_set_mac {
*
* A list of actions is terminated by a END action.
*
* For simple actions without a configuration structure, conf remains NULL.
* For simple actions without a configuration object, conf remains NULL.
*/
struct rte_flow_action {
enum rte_flow_action_type type; /**< Action type. */
const void *conf; /**< Pointer to action configuration structure. */
const void *conf; /**< Pointer to action configuration object. */
};
/**