[PATCH v10 00/11] ethdev: datapath-focused flow rules management

Ferruh Yigit ferruh.yigit at intel.com
Thu Feb 24 14:07:35 CET 2022


On 2/23/2022 3:02 AM, Alexander Kozyrev wrote:
> Three major changes to a generic RTE Flow API were implemented in order
> to speed up flow rule insertion/destruction and adapt the API to the
> needs of a datapath-focused flow rules management applications:
> 
> 1. Pre-configuration hints.
> Application may give us some hints on what type of resources are needed.
> Introduce the configuration routine to prepare all the needed resources
> inside a PMD/HW before any flow rules are created at the init stage.
> 
> 2. Flow grouping using templates.
> Use the knowledge about which flow rules are to be used in an application
> and prepare item and action templates for them in advance. Group flow rules
> with common patterns and actions together for better resource management.
> 
> 3. Queue-based flow management.
> Perform flow rule insertion/destruction asynchronously to spare the datapath
> from blocking on RTE Flow API and allow it to continue with packet processing.
> Enqueue flow rules operations and poll for the results later.
> 
> testpmd examples are part of the patch series. PMD changes will follow.
> 
> RFC:https://patchwork.dpdk.org/project/dpdk/cover/20211006044835.3936226-1-akozyrev@nvidia.com/
> 
> Signed-off-by: Alexander Kozyrev<akozyrev at nvidia.com>
> Acked-by: Ori Kam<orika at nvidia.com>
> Acked-by: Ajit Khaparde<ajit.khaparde at broadcom.com>
> 
> ---
> v10: removed missed check in async API
> 
> v9:
> - changed sanity checks order
> - added reconfiguration explanation
> - added remarks on mandatory direction
> - renamed operation attributes
> - removed all checks in async API
> - removed all errno descriptions
> 
> v8: fixed documentation indentation
> 
> v7:
> - added sanity checks and device state validation
> - added flow engine state validation
> - added ingress/egress/transfer attibutes to templates
> - moved user_data to a parameter list
> - renamed asynchronous functions from "_q_" to"_async_"
> - created a separate commit for indirect actions
> 
> v6: addressed more review comments
> - fixed typos
> - rewrote code snippets
> - add a way to get queue size
> - renamed port/queue attibutes parameters
> 
> v5: changed titles for testpmd commits
> 
> v4:
> - removed structures versioning
> - introduced new rte_flow_port_info structure for rte_flow_info_get API
> - renamed rte_flow_table_create to rte_flow_template_table_create
> 
> v3: addressed review comments and updated documentation
> - added API to get info about pre-configurable resources
> - renamed rte_flow_item_template to rte_flow_pattern_template
> - renamed drain operation attribute to postpone
> - renamed rte_flow_q_drain to rte_flow_q_push
> - renamed rte_flow_q_dequeue to rte_flow_q_pull
> 
> v2: fixed patch series thread
> 
> Alexander Kozyrev (11):
>    ethdev: introduce flow engine configuration
>    ethdev: add flow item/action templates
>    ethdev: bring in async queue-based flow rules operations
>    ethdev: bring in async indirect actions operations
>    app/testpmd: add flow engine configuration
>    app/testpmd: add flow template management
>    app/testpmd: add flow table management
>    app/testpmd: add async flow create/destroy operations
>    app/testpmd: add flow queue push operation
>    app/testpmd: add flow queue pull operation
>    app/testpmd: add async indirect actions operations

Series applied to dpdk-next-net/main, thanks.


More information about the dev mailing list