Indirect Actions List
Extended Indirect action to support an indirect action list (multiple actions in a list), to enable multiple flows to reuse the same list of actions. When utilizing the indirect action list, the application can share fixed actions along with flow-specific changeable ones (same action type, different attribute value). These values are provided during the offloading and reusing of the indirect action list.
METER_MARK is the sole action currently supporting updates.
The use of indirect action list allows efficient utilization when used and shared by mass number of rules in cases where the action list needs to be modified. In such case, the indirect action list is modified once and influences all the rules that reuse it instead of updating mass number of rules with similar action list scheme.
Indirect actions list expands the indirect single action API:
New indirect action list API creates a handle for one or several flow actions, while legacy indirect action handle API references single action only.
Input flow actions are arranged in a list with RTE_FLOW_ACTION_TYPE_END terminated.
Flow rule can provide rule specific configuration parameters to the existing indirect action list handle.
Base action configuration was set during the action creation and updating flow rule specific configuration will not change the base action configuration.
Indirect action list handle defines two types of resources:
Mutable( changeable ) handle resource that can be changed during the handle lifespan.
Immutable handle resource value that is set during that handle creation and cannot be changed.
There are the types of mutable indirect handle contexts:
Indirect action list structure:
struct rte_flow_action_indirect_list {
/** Indirect action list handle */
struct rte_flow_action_list_handle *handle;/**
* Flow mutable configuration array.
* NULL if the handle has no flow mutable configuration update.
* Otherwise, if the handle was created with list A1 / A2 .. An / END
* size of conf is n.
* conf[i] points to flow mutable update of Ai in the handle actions list or NULL if Ai has no update.
*/
const
void
**conf; };Indirect action list structure:
struct rte_flow_action_indirect_list {
/** Indirect action list handle */
struct rte_flow_action_list_handle *handle;/**
* Flow mutable configuration array.
* NULL if the handle has no flow mutable configuration update.
* Otherwise, if the handle was created with list A1 / A2 .. An / END
* size of conf is n.
* conf[i] points to flow mutable update of Ai in the handle actions list or NULL if Ai has no update.
*/
const
void
**conf; };
Indirect actions list is used in both action and mask template action parts.
The action MUST provide a non-zero handle in the action template action part.
If an indirect actions list handle is non masked, PMD will use the handle as reference to action type in template creation.
If an indirect actions list handle iss masked, PMD will use that mask in template creation and flow rule.