Hello Andrew, []
> > diff --git a/doc/guides/rel_notes/release_23_03.rst > b/doc/guides/rel_notes/release_23_03.rst > > index c15f6fbb9f..5b98e18032 100644 > > --- a/doc/guides/rel_notes/release_23_03.rst > > +++ b/doc/guides/rel_notes/release_23_03.rst > > @@ -68,6 +68,13 @@ New Features > > * With this change, the application no longer needs to account for the > > ``rte_event_dev_config::nb_single_link_event_port_queues`` > parameter > > required for eth_rx, eth_tx, crypto and timer eventdev adapters. > > empty line is required here > Will fix in v8. [] > > +/** > > + * @warning > > + * @b EXPERIMENTAL: this API may change without prior notice. > > + * > > + * Query and update operational mode. > > + * > > + * RTE_FLOW_QU_QUERY_FIRST > > + * Force port to query action before update. > > + * RTE_FLOW_QU_UPDATE_FIRST > > + * Force port to update action before query. > > Do not duplicate enum members. > There is no duplication - query_first update_first > > + * > > + * @see rte_flow_action_handle_query_update() > > + * @see rte_flow_async_action_handle_query_update() > > + */ > > +enum rte_flow_query_update_mode { > > + RTE_FLOW_QU_QUERY_FIRST, /* query before update */ > > /**< to document enum member > > /**< Force port to query action before update. */ > > if it fits line length or before the enum member: > > /** Force port to query action before update. */ > Will fix in v8. > > + RTE_FLOW_QU_UPDATE_FIRST, /* query after update */ > > same > Will fix in v8. > > +}; > > + > > +/** > > + * @warning > > + * @b EXPERIMENTAL: this API may change without prior notice. > > + * > > + * Query and/or update indirect flow action. > > + * If both query and update not NULL, the function atomically > > + * queries and updates indirect action. Query and update are carried in > order > > + * specified in the mode parameter. > > + * > > + * @param port_id > > + * Port identifier of Ethernet device. > > + * @param handle > > + * Handle for the indirect action object to be updated. > > + * @param update > > + * If not NULL, update profile specification used to modify the action > > + * pointed by handle. > > + * @param query > > + * If not NULL pointer to storage for the associated query data type. > > + * @param mode > > + * Operational mode. > > + * Required if both *update* and *query* are not NULL. > > + * @param error > > + * Perform verbose error reporting if not NULL. > > + * PMDs initialize this structure in case of error only. > > + * > > + * @return > > + * 0 on success, a negative errno value otherwise and rte_errno is set. > > + * - (-ENODEV) if *port_id* invalid. > > + * - (-ENOTSUP) if underlying device does not support this functionality. > > + * - (-EINVAL) - if *handle* invalid or both *query* and *update* are > NULL. > > Be consistent. You have no '-' before if in two cases above and > have in the EINVAL case. > Will fix in v8. > > + */ > > +__rte_experimental > > +int > > +rte_flow_action_handle_query_update(uint16_t port_id, > > + struct rte_flow_action_handle *handle, > > + const void *update, void *query, > > + enum rte_flow_query_update_mode mode, > > + struct rte_flow_error *error); > > + > > +/** > > + * @warning > > + * @b EXPERIMENTAL: this API may change without prior notice. > > + * > > + * Enqueue async indirect flow action query and/or update > > + * > > + * @param port_id > > + * Port identifier of Ethernet device. > > + * @param queue_id > > + * Flow queue which is used to update the rule. > > + * @param attr > > + * Indirect action update operation attributes. > > + * @param handle > > + * Handle for the indirect action object to be updated. > > + * @param update > > + * If not NULL, update profile specification used to modify the action > > + * pointed by handle. > > + * @param query > > + * If not NULL, pointer to storage for the associated query data type. > > + * Query result returned on async completion event. > > + * @param mode > > + * Operational mode. > > + * Required if both *update* and *query* are not NULL. > > + * @param user_data > > + * The user data that will be returned on async completion event. > > + * @param error > > + * Perform verbose error reporting if not NULL. > > + * PMDs initialize this structure in case of error only. > > + * > > + * @return > > + * 0 on success, a negative errno value otherwise and rte_errno is set. > > + * - (-ENODEV) if *port_id* invalid. > > + * - (-ENOTSUP) if underlying device does not support this functionality. > > + * - (-EINVAL) - if *handle* invalid or both *update* and *query* are > NULL. > > same > Will fix in v8. > > + */ > > +__rte_experimental > > +int > > +rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t > queue_id, > > + const struct rte_flow_op_attr *attr, > > + struct rte_flow_action_handle > > *handle, > > + const void *update, void *query, > > + enum rte_flow_query_update_mode > > mode, > > + void *user_data, > > + struct rte_flow_error *error); > > + > > #ifdef __cplusplus > > } > > #endif > > [snip]