[PATCH v4 00/14] net/mlx5: add hardware steering
Raslan Darawsheh
rasland at nvidia.com
Thu Feb 24 22:12:26 CET 2022
Hi,
> -----Original Message-----
> From: Suanming Mou <suanmingm at nvidia.com>
> Sent: Thursday, February 24, 2022 3:41 PM
> To: Slava Ovsiienko <viacheslavo at nvidia.com>; Matan Azrad
> <matan at nvidia.com>
> Cc: Raslan Darawsheh <rasland at nvidia.com>; Ori Kam <orika at nvidia.com>;
> dev at 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
More information about the dev
mailing list