numam-dpdk/app
Bing Zhao 4b61b8774b ethdev: introduce indirect flow action
Right now, rte_flow_shared_action_* APIs are used for some shared
actions, like RSS, count. The shared action should be created before
using it inside a flow. These shared actions sometimes are not
really shared but just some indirect actions decoupled from a flow.

The new functions rte_flow_action_handle_* are added to replace
the current shared functions rte_flow_shared_action_*.

There are two types of flow actions:
1. the direct (normal) actions that could be created and stored
   within a flow rule. Such action is tied to its flow rule and
   cannot be reused.
2. the indirect action, in the past, named shared_action. It is
   created from a direct actioni, like count or rss, and then used
   in the flow rules with an object handle. The PMD will take care
   of the retrieve from indirect action to the direct action
   when it is referenced.

The indirect action is accessed (update / query) w/o any flow rule,
just via the action object handle. For example, when querying or
resetting a counter, it could be done out of any flow using this
counter, but only the handle of the counter action object is
required.
The indirect action object could be shared by different flows or
used by a single flow, depending on the direct action type and
the real-life requirements.
The handle of an indirect action object is opaque and defined in
each driver and possibly different per direct action type.

The old name "shared" is improper in a sense and should be replaced.

Since the APIs are changed from "rte_flow_shared_action*" to the new
"rte_flow_action_handle*", the testpmd application code and command
line interfaces also need to be updated to do the adaption.
The testpmd application user guide is also updated. All the "shared
action" related parts are replaced with "indirect action" to have a
correct explanation.

The parameter of "update" interface is also changed. A general
pointer will replace the rte_flow_action struct pointer due to the
facts:
1. Some action may not support fields updating. In the example of a
   counter, the only "update" supported should be the reset. So
   passing a rte_flow_action struct pointer is meaningless and
   there is even no such corresponding action struct. What's more,
   if more than one operations should be supported, for some other
   action, such pointer parameter may not meet the need.
2. Some action may need conditional or partial update, the current
   parameter will not provide the ability to indicate which part(s)
   to update.
   For different types of indirect action objects, the pointer could
   either be the same of rte_flow_action* struct - in order not to
   break the current driver implementation, or some wrapper
   structures with bits as masks to indicate which part to be
   updated, depending on real needs of the corresponding direct
   action. For different direct actions, the structures of indirect
   action objects updating will be different.

All the underlayer PMD callbacks will be moved to these new APIs.

The RTE_FLOW_ACTION_TYPE_SHARED is kept for now in order not to
break the ABI. All the implementations are changed by using
RTE_FLOW_ACTION_TYPE_INDIRECT.

Since the APIs are changed from "rte_flow_shared_action*" to the new
"rte_flow_action_handle*" and the "update" interface's 3rd input
parameter is changed to generic pointer, the mlx5 PMD that uses these
APIs needs to do the adaption to the new APIs as well.

Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Andrey Vesnovaty <andreyv@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
2021-04-19 18:25:42 +02:00
..
pdump pdump: free mbuf in bulk 2021-01-19 15:24:46 +01:00
proc-info app/procinfo: fix security context info 2021-01-26 14:07:24 +01:00
test test/power: round CPU frequency to check 2021-04-21 19:19:58 +02:00
test-acl eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test-bbdev app: reduce indentation in build files 2021-04-21 14:04:09 +02:00
test-cmdline cmdline: avoid name clash with Windows system types 2020-11-05 17:49:00 +01:00
test-compress-perf app: reduce indentation in build files 2021-04-21 14:04:09 +02:00
test-crypto-perf app: reduce indentation in build files 2021-04-21 14:04:09 +02:00
test-eventdev app: reduce indentation in build files 2021-04-21 14:04:09 +02:00
test-fib fix spellings that Lintian complains about 2020-11-04 20:11:31 +01:00
test-flow-perf app: reduce indentation in build files 2021-04-21 14:04:09 +02:00
test-pipeline app: reduce indentation in build files 2021-04-21 14:04:09 +02:00
test-pmd ethdev: introduce indirect flow action 2021-04-19 18:25:42 +02:00
test-regex app/regex: fix usage text 2021-04-09 14:31:41 +02:00
test-sad eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
meson.build app: reduce indentation in build files 2021-04-21 14:04:09 +02:00