[v6 00/18] net/mlx5: Add HW steering low level support

Raslan Darawsheh rasland at nvidia.com
Mon Oct 24 12:56:43 CEST 2022


Hi,

> -----Original Message-----
> From: Alex Vesker <valex at nvidia.com>
> Sent: Thursday, October 20, 2022 6:58 PM
> To: Alex Vesker <valex at nvidia.com>; Slava Ovsiienko
> <viacheslavo at nvidia.com>; NBU-Contact-Thomas Monjalon (EXTERNAL)
> <thomas at monjalon.net>; Suanming Mou <suanmingm at nvidia.com>
> Cc: dev at dpdk.org; Ori Kam <orika at nvidia.com>
> Subject: [v6 00/18] net/mlx5: Add HW steering low level support
> 
> Mellanox ConnetX devices supports packet matching, packet modification
> and redirection. These functionalities are also referred to as flow-steering.
> To configure a steering rule, the rule is written to the device owned memory,
> this memory is accessed and cached by the device when processing a packet.
> 
> The highlight of this patchset is supporting HW Steering (HWS) which is the
> new technology supported in new ConnectX devices, HWS allows configuring
> steering rules directly to the HW using special HW queues with minimal CPU
> effort.
> 
> This patchset is the internal low layer implementation for HWS used by the
> mlx5 PMD. The mlx5dr (direct rule) is layer that bridges between the PMD
> and the HW by configuring the HW offloads based on the PMD logic
> 
> v2:
> Fix check patch and cosmetic changes
> 
> v3:
> -Fix unsupported items
> -Fix compilation with mlx5dv dependency
> 
> v4:
> -Fix compile on Windows
> 
> v5:
> -Fix compile on old rdma-core or no rdma core
> 
> v6:
> -Fix meson style and improve configure
> -Checkpatch and compilation fixes
> -Fix action number issue
> 
> Alex Vesker (8):
>   net/mlx5: Add additional glue functions for HWS
>   net/mlx5/hws: Add HWS send layer
>   net/mlx5/hws: Add HWS definer layer
>   net/mlx5/hws: Add HWS context object
>   net/mlx5/hws: Add HWS table object
>   net/mlx5/hws: Add HWS matcher object
>   net/mlx5/hws: Add HWS rule object
>   net/mlx5/hws: Enable HWS
> 
> Bing Zhao (2):
>   common/mlx5: query set capability of registers
>   net/mlx5: provide the available tag registers
> 
> Dariusz Sosnowski (1):
>   net/mlx5: add port to metadata conversion
> 
> Erez Shitrit (3):
>   net/mlx5/hws: Add HWS command layer
>   net/mlx5/hws: Add HWS pool and buddy
>   net/mlx5/hws: Add HWS action object
> 
> Hamdan Igbaria (1):
>   net/mlx5/hws: Add HWS debug layer
> 
> Suanming Mou (3):
>   net/mlx5: split flow item translation
>   net/mlx5: split flow item matcher and value translation
>   net/mlx5: add hardware steering item translation function
> 
>  doc/guides/nics/features/default.ini         |    1 +
>  doc/guides/nics/features/mlx5.ini            |    1 +
>  doc/guides/nics/mlx5.rst                     |    5 +-
>  doc/guides/rel_notes/release_22_11.rst       |    4 +
>  drivers/common/mlx5/linux/meson.build        |   11 +-
>  drivers/common/mlx5/linux/mlx5_glue.c        |  121 +-
>  drivers/common/mlx5/linux/mlx5_glue.h        |   17 +
>  drivers/common/mlx5/mlx5_devx_cmds.c         |   30 +
>  drivers/common/mlx5/mlx5_devx_cmds.h         |    2 +
>  drivers/common/mlx5/mlx5_prm.h               |  652 ++++-
>  drivers/net/mlx5/hws/meson.build             |   18 +
>  drivers/net/mlx5/{mlx5_dr.h => hws/mlx5dr.h} |  201 +-
>  drivers/net/mlx5/hws/mlx5dr_action.c         | 2237 +++++++++++++++
>  drivers/net/mlx5/hws/mlx5dr_action.h         |  253 ++
>  drivers/net/mlx5/hws/mlx5dr_buddy.c          |  200 ++
>  drivers/net/mlx5/hws/mlx5dr_buddy.h          |   22 +
>  drivers/net/mlx5/hws/mlx5dr_cmd.c            |  948 +++++++
>  drivers/net/mlx5/hws/mlx5dr_cmd.h            |  230 ++
>  drivers/net/mlx5/hws/mlx5dr_context.c        |  223 ++
>  drivers/net/mlx5/hws/mlx5dr_context.h        |   40 +
>  drivers/net/mlx5/hws/mlx5dr_debug.c          |  462 ++++
>  drivers/net/mlx5/hws/mlx5dr_debug.h          |   28 +
>  drivers/net/mlx5/hws/mlx5dr_definer.c        | 1968 ++++++++++++++
>  drivers/net/mlx5/hws/mlx5dr_definer.h        |  585 ++++
>  drivers/net/mlx5/hws/mlx5dr_internal.h       |   93 +
>  drivers/net/mlx5/hws/mlx5dr_matcher.c        |  919 +++++++
>  drivers/net/mlx5/hws/mlx5dr_matcher.h        |   76 +
>  drivers/net/mlx5/hws/mlx5dr_pat_arg.c        |  511 ++++
>  drivers/net/mlx5/hws/mlx5dr_pat_arg.h        |   83 +
>  drivers/net/mlx5/hws/mlx5dr_pool.c           |  672 +++++
>  drivers/net/mlx5/hws/mlx5dr_pool.h           |  152 ++
>  drivers/net/mlx5/hws/mlx5dr_rule.c           |  528 ++++
>  drivers/net/mlx5/hws/mlx5dr_rule.h           |   50 +
>  drivers/net/mlx5/hws/mlx5dr_send.c           |  844 ++++++
>  drivers/net/mlx5/hws/mlx5dr_send.h           |  275 ++
>  drivers/net/mlx5/hws/mlx5dr_table.c          |  248 ++
>  drivers/net/mlx5/hws/mlx5dr_table.h          |   44 +
>  drivers/net/mlx5/linux/mlx5_os.c             |   12 +-
>  drivers/net/mlx5/meson.build                 |    7 +-
>  drivers/net/mlx5/mlx5.c                      |    9 +-
>  drivers/net/mlx5/mlx5.h                      |    8 +-
>  drivers/net/mlx5/mlx5_defs.h                 |    2 +
>  drivers/net/mlx5/mlx5_devx.c                 |    2 +-
>  drivers/net/mlx5/mlx5_dr.c                   |  383 ---
>  drivers/net/mlx5/mlx5_flow.c                 |   29 +-
>  drivers/net/mlx5/mlx5_flow.h                 |  174 +-
>  drivers/net/mlx5/mlx5_flow_dv.c              | 2567 +++++++++---------
>  drivers/net/mlx5/mlx5_flow_hw.c              |  115 +-
>  48 files changed, 14368 insertions(+), 1694 deletions(-)  create mode 100644
> drivers/net/mlx5/hws/meson.build  rename drivers/net/mlx5/{mlx5_dr.h =>
> hws/mlx5dr.h} (67%)  create mode 100644
> drivers/net/mlx5/hws/mlx5dr_action.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_action.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_buddy.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_buddy.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_cmd.c  create mode
> 100644 drivers/net/mlx5/hws/mlx5dr_cmd.h  create mode 100644
> drivers/net/mlx5/hws/mlx5dr_context.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_context.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_debug.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_debug.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_definer.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_definer.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_internal.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_matcher.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_matcher.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_pat_arg.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_pat_arg.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_pool.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_pool.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_rule.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_rule.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_send.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_send.h
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_table.c
>  create mode 100644 drivers/net/mlx5/hws/mlx5dr_table.h
>  delete mode 100644 drivers/net/mlx5/mlx5_dr.c
> 
> --
> 2.18.1

Series applied to next-net-mlx with small modifications to the commit logs, 

Kindest regards,
Raslan Darawsheh


More information about the dev mailing list