In the indirect list API, update action and update flow contexts are mutually exclusive. The patch splits legacy METER_MASK update structure to support indirect list API:
`struct rte_flow_indirect_update_action_meter_mark` defines METER_MARK action context that is shared between all flows that reference a given indirect list handle. `struct rte_flow_indirect_update_flow_meter_mark` defines METER_MARK context private to specific flow. Signed-off-by: Gregory Etelson <getel...@nvidia.com> --- lib/ethdev/rte_flow.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index a0d01a97e7..ce1aa336f2 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -3891,6 +3891,38 @@ struct rte_flow_update_meter_mark { uint32_t reserved:27; }; +/** + * @see RTE_FLOW_ACTION_TYPE_METER_MARK + * @see RTE_FLOW_ACTION_TYPE_INDIRECT_LIST + * + * Update action mutable context. + */ +struct rte_flow_indirect_update_action_meter_mark { + /** New meter_mark parameters to be updated. */ + struct rte_flow_action_meter_mark meter_mark; + /** The profile will be updated. */ + uint32_t profile_valid:1; + /** The policy will be updated. */ + uint32_t policy_valid:1; + /** The color mode will be updated. */ + uint32_t color_mode_valid:1; + /** The meter state will be updated. */ + uint32_t state_valid:1; + /** Reserved bits for the future usage. */ + uint32_t reserved:28; +}; + +/** + * @see RTE_FLOW_ACTION_TYPE_METER_MARK + * @see RTE_FLOW_ACTION_TYPE_INDIRECT_LIST + * + * Update flow mutable context. + */ +struct rte_flow_indirect_update_flow_meter_mark { + /** Updated init color applied to packet */ + enum rte_color init_color; +}; + /* Mbuf dynamic field offset for metadata. */ extern int32_t rte_flow_dynf_metadata_offs; -- 2.34.1