From: Alex Vesker <valex@nvidia.com>
To: <valex@nvidia.com>, <viacheslavo@nvidia.com>,
<thomas@monjalon.net>, <suanmingm@nvidia.com>
Cc: <dev@dpdk.org>, <orika@nvidia.com>
Subject: [v6 00/18] net/mlx5: Add HW steering low level support
Date: Thu, 20 Oct 2022 18:57:30 +0300 [thread overview]
Message-ID: <20221020155749.16643-1-valex@nvidia.com> (raw)
In-Reply-To: <20220922190345.394-1-valex@nvidia.com>
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
next prev parent reply other threads:[~2022-10-20 15:59 UTC|newest]
Thread overview: 134+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-22 19:03 [v1 00/19] " Alex Vesker
2022-09-22 19:03 ` [v1 01/19] net/mlx5: split flow item translation Alex Vesker
2022-09-22 19:03 ` [v1 02/19] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-09-22 19:03 ` [v1 03/19] net/mlx5: add hardware steering item translation function Alex Vesker
2022-09-22 19:03 ` [v1 04/19] net/mlx5: add port to metadata conversion Alex Vesker
2022-09-22 19:03 ` [v1 05/19] common/mlx5: query set capability of registers Alex Vesker
2022-09-22 19:03 ` [v1 06/19] net/mlx5: provide the available tag registers Alex Vesker
2022-09-22 19:03 ` [v1 07/19] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-09-22 19:03 ` [v1 08/19] net/mlx5: Remove stub HWS support Alex Vesker
2022-09-22 19:03 ` [v1 09/19] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-09-22 19:03 ` [v1 10/19] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-09-22 19:03 ` [v1 11/19] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-09-22 19:03 ` [v1 12/19] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-09-22 19:03 ` [v1 13/19] net/mlx5/hws: Add HWS context object Alex Vesker
2022-09-22 19:03 ` [v1 14/19] net/mlx5/hws: Add HWS table object Alex Vesker
2022-09-22 19:03 ` [v1 15/19] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-09-22 19:03 ` [v1 16/19] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-09-22 19:03 ` [v1 17/19] net/mlx5/hws: Add HWS action object Alex Vesker
2022-09-22 19:03 ` [v1 18/19] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-09-22 19:03 ` [v1 19/19] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-06 15:03 ` [v2 00/19] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-06 15:03 ` [v2 01/19] net/mlx5: split flow item translation Alex Vesker
2022-10-06 15:03 ` [v2 02/19] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-06 15:03 ` [v2 03/19] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-06 15:03 ` [v2 04/19] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-06 15:03 ` [v2 05/19] common/mlx5: query set capability of registers Alex Vesker
2022-10-06 15:03 ` [v2 06/19] net/mlx5: provide the available tag registers Alex Vesker
2022-10-06 15:03 ` [v2 07/19] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-06 15:03 ` [v2 08/19] net/mlx5: Remove stub HWS support Alex Vesker
2022-10-06 15:03 ` [v2 09/19] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-06 15:03 ` [v2 10/19] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-06 15:03 ` [v2 11/19] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-06 15:03 ` [v2 12/19] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-06 15:03 ` [v2 13/19] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-06 15:03 ` [v2 14/19] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-06 15:03 ` [v2 15/19] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-06 15:03 ` [v2 16/19] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-06 15:03 ` [v2 17/19] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-06 15:03 ` [v2 18/19] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-06 15:03 ` [v2 19/19] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-14 11:48 ` [v3 00/18] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-14 11:48 ` [v3 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-14 11:48 ` [v3 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-14 11:48 ` [v3 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-14 11:48 ` [v3 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-14 11:48 ` [v3 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-14 11:48 ` [v3 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-14 11:48 ` [v3 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-14 11:48 ` [v3 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-14 11:48 ` [v3 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-14 11:48 ` [v3 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-14 11:48 ` [v3 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-14 11:48 ` [v3 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-14 11:48 ` [v3 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-14 11:48 ` [v3 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-14 11:48 ` [v3 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-14 11:48 ` [v3 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-14 11:48 ` [v3 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-14 11:48 ` [v3 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-19 14:42 ` [v4 00/18] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-19 14:42 ` [v4 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-19 14:42 ` [v4 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-19 14:42 ` [v4 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-19 14:42 ` [v4 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-19 14:42 ` [v4 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-19 14:42 ` [v4 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-19 14:42 ` [v4 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-19 14:42 ` [v4 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-19 14:42 ` [v4 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-19 14:42 ` [v4 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-19 14:42 ` [v4 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-19 14:42 ` [v4 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-19 14:42 ` [v4 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-19 14:42 ` [v4 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-19 14:42 ` [v4 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-19 14:42 ` [v4 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-19 14:42 ` [v4 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-19 14:42 ` [v4 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-19 20:57 ` [v5 00/18] net/mlx5: Add HW steering low level support Alex Vesker
2022-10-19 20:57 ` [v5 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-19 20:57 ` [v5 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-19 20:57 ` [v5 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-19 20:57 ` [v5 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-19 20:57 ` [v5 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-19 20:57 ` [v5 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-19 20:57 ` [v5 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-19 20:57 ` [v5 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-19 20:57 ` [v5 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-19 20:57 ` [v5 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-19 20:57 ` [v5 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-19 20:57 ` [v5 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-19 20:57 ` [v5 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-19 20:57 ` [v5 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-19 20:57 ` [v5 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-19 20:57 ` [v5 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-19 20:57 ` [v5 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-19 20:57 ` [v5 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-20 15:57 ` Alex Vesker [this message]
2022-10-20 15:57 ` [v6 01/18] net/mlx5: split flow item translation Alex Vesker
2022-10-24 6:47 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 02/18] net/mlx5: split flow item matcher and value translation Alex Vesker
2022-10-24 6:49 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 03/18] net/mlx5: add hardware steering item translation function Alex Vesker
2022-10-24 6:50 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 04/18] net/mlx5: add port to metadata conversion Alex Vesker
2022-10-24 6:50 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 05/18] common/mlx5: query set capability of registers Alex Vesker
2022-10-24 6:50 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 06/18] net/mlx5: provide the available tag registers Alex Vesker
2022-10-24 6:51 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 07/18] net/mlx5: Add additional glue functions for HWS Alex Vesker
2022-10-24 6:52 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 08/18] net/mlx5/hws: Add HWS command layer Alex Vesker
2022-10-24 6:52 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 09/18] net/mlx5/hws: Add HWS pool and buddy Alex Vesker
2022-10-24 6:52 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 10/18] net/mlx5/hws: Add HWS send layer Alex Vesker
2022-10-24 6:53 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 11/18] net/mlx5/hws: Add HWS definer layer Alex Vesker
2022-10-24 6:53 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 12/18] net/mlx5/hws: Add HWS context object Alex Vesker
2022-10-24 6:53 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 13/18] net/mlx5/hws: Add HWS table object Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 14/18] net/mlx5/hws: Add HWS matcher object Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 15/18] net/mlx5/hws: Add HWS rule object Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 16/18] net/mlx5/hws: Add HWS action object Alex Vesker
2022-10-20 15:57 ` [v6 17/18] net/mlx5/hws: Add HWS debug layer Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-20 15:57 ` [v6 18/18] net/mlx5/hws: Enable HWS Alex Vesker
2022-10-24 6:54 ` Slava Ovsiienko
2022-10-24 10:56 ` [v6 00/18] net/mlx5: Add HW steering low level support Raslan Darawsheh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221020155749.16643-1-valex@nvidia.com \
--to=valex@nvidia.com \
--cc=dev@dpdk.org \
--cc=orika@nvidia.com \
--cc=suanmingm@nvidia.com \
--cc=thomas@monjalon.net \
--cc=viacheslavo@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).