Hi,

> -----Original Message-----
> From: Suanming Mou <suanmi...@nvidia.com>
> Sent: Thursday, February 24, 2022 3:41 PM
> To: Slava Ovsiienko <viachesl...@nvidia.com>; Matan Azrad
> <ma...@nvidia.com>
> Cc: Raslan Darawsheh <rasl...@nvidia.com>; Ori Kam <or...@nvidia.com>;
> dev@dpdk.org
> Subject: [PATCH v4 00/14] net/mlx5: add hardware steering
> 
> The Connect-X steering is a lookup hardware mechanism that accesses flow
> tables, matches packets to the rules, and performs specified actions.
> Historically, mlx5 PMD implements several software engines to manage steering
> hardware facility:
> 
>    - FW Steering - Verbs/Direct Verbs, uses FW calls to manage flows
>    - SW Steering - DevX/mlx5dv, uses WQEs to access table memory directly
> 
> However, there are still some disadvantages:
> 
>    - performance is limited, we should invoke firmware either to
>      manage the entire flow, or to handle some internal steering objects
> 
>    - organizing and preparing flow infrastructure (actions, matchers,
>      groups, etc.) on the flow inserting is sure to cause slow flow
>      insertion
> 
>    - security, exposing the low-level steering entries directly to the
>      userspace may cause security risks
> 
> A new hardware WQE based steering operation with codename "HW Steering"
> is going to be introduced to get rid of the security risks. And it will take
> advantage of the recently new introduced async queue-based rte_flow APIs to
> prepare everything in advance to achieve high insertion rate.
> 
> In this new HW steering engine, the original SW steering rte_flow API will 
> not be
> supported in the first implementation, only the new async queue-based flow
> operations is going to be supported. A new steering mode parameter for
> dv_flow_en will be introduced and user will be able to engage the new steering
> engine.
> 
> ---
> 
> v4:
> v3:
>  - rebase to the latest version.
> 
> v2:
>  - New HW steering low-level abstract code added.
>  - commit message improvement.
>  - add protection for rte_flow and rte_flow_async callbacks.
>  - rebase to rte_flow_async v9.
>  - fix some rte_flow error not filled bugs.
> 
> Suanming Mou (14):
>   net/mlx5: introduce hardware steering operation
>   net/mlx5: add HW steering low-level abstract code
>   net/mlx5: introduce hardware steering enable routine
>   net/mlx5: add port flow configuration
>   net/mlx5: add pattern template management
>   net/mlx5: add action template management
>   net/mlx5: add table management
>   net/mlx5: add basic flow queue operation
>   net/mlx5: add flow flush function
>   net/mlx5: add flow jump action
>   net/mlx5: add queue and RSS action
>   net/mlx5: add mark action
>   net/mlx5: add indirect action
>   net/mlx5: add header reformat action
> 
>  doc/guides/nics/mlx5.rst                |   19 +-
>  doc/guides/rel_notes/release_22_03.rst  |    1 +
>  drivers/net/mlx5/linux/mlx5_flow_os.h   |    1 +
>  drivers/net/mlx5/linux/mlx5_os.c        |   22 +-
>  drivers/net/mlx5/meson.build            |    2 +
>  drivers/net/mlx5/mlx5.c                 |   55 +-
>  drivers/net/mlx5/mlx5.h                 |   66 +-
>  drivers/net/mlx5/mlx5_devx.c            |   10 +
>  drivers/net/mlx5/mlx5_dr.c              |  383 ++++
>  drivers/net/mlx5/mlx5_dr.h              |  456 +++++
>  drivers/net/mlx5/mlx5_flow.c            |  721 ++++++-
>  drivers/net/mlx5/mlx5_flow.h            |  287 +++
>  drivers/net/mlx5/mlx5_flow_dv.c         |  186 +-
>  drivers/net/mlx5/mlx5_flow_hw.c         | 2337 +++++++++++++++++++++++
>  drivers/net/mlx5/mlx5_flow_verbs.c      |    7 +-
>  drivers/net/mlx5/mlx5_rx.h              |    9 +-
>  drivers/net/mlx5/mlx5_rxq.c             |   85 +-
>  drivers/net/mlx5/windows/mlx5_flow_os.h |    1 +
>  18 files changed, 4468 insertions(+), 180 deletions(-)  create mode 100644
> drivers/net/mlx5/mlx5_dr.c  create mode 100644 drivers/net/mlx5/mlx5_dr.h
> create mode 100644 drivers/net/mlx5/mlx5_flow_hw.c
> 
> --
> 2.25.1

Series applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh

Reply via email to