[v1 00/19] net/mlx5: Add HW steering low level support
Alex Vesker
valex at nvidia.com
Thu Sep 22 21:03:25 CEST 2022
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
This is the initial draft to present the code to the community and it will
be reworked.
Alex Vesker (13):
net/mlx5: Add additional glue functions for HWS
net/mlx5: Remove stub HWS support
net/mlx5/hws: Add HWS command layer
net/mlx5/hws: Add HWS pool and buddy
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: Add HWS action object
net/mlx5/hws: Add HWS debug layer
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
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
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 | 653 ++++-
drivers/net/mlx5/hws/meson.build | 18 +
drivers/net/mlx5/{mlx5_dr.h => hws/mlx5dr.h} | 210 +-
drivers/net/mlx5/hws/mlx5dr_action.c | 2217 +++++++++++++++
drivers/net/mlx5/hws/mlx5dr_action.h | 251 ++
drivers/net/mlx5/hws/mlx5dr_buddy.c | 201 ++
drivers/net/mlx5/hws/mlx5dr_buddy.h | 18 +
drivers/net/mlx5/hws/mlx5dr_cmd.c | 957 +++++++
drivers/net/mlx5/hws/mlx5dr_cmd.h | 232 ++
drivers/net/mlx5/hws/mlx5dr_context.c | 222 ++
drivers/net/mlx5/hws/mlx5dr_context.h | 40 +
drivers/net/mlx5/hws/mlx5dr_debug.c | 459 ++++
drivers/net/mlx5/hws/mlx5dr_debug.h | 28 +
drivers/net/mlx5/hws/mlx5dr_definer.c | 1866 +++++++++++++
drivers/net/mlx5/hws/mlx5dr_definer.h | 582 ++++
drivers/net/mlx5/hws/mlx5dr_internal.h | 93 +
drivers/net/mlx5/hws/mlx5dr_matcher.c | 920 +++++++
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 | 76 +
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 | 849 ++++++
drivers/net/mlx5/hws/mlx5dr_send.h | 273 ++
drivers/net/mlx5/hws/mlx5dr_table.c | 248 ++
drivers/net/mlx5/hws/mlx5dr_table.h | 44 +
drivers/net/mlx5/linux/mlx5_os.c | 7 +-
drivers/net/mlx5/meson.build | 2 +-
drivers/net/mlx5/mlx5.c | 3 +
drivers/net/mlx5/mlx5.h | 3 +-
drivers/net/mlx5/mlx5_defs.h | 2 +
drivers/net/mlx5/mlx5_dr.c | 383 ---
drivers/net/mlx5/mlx5_flow.c | 17 +
drivers/net/mlx5/mlx5_flow.h | 128 +
drivers/net/mlx5/mlx5_flow_dv.c | 2599 +++++++++---------
drivers/net/mlx5/mlx5_flow_hw.c | 109 +-
42 files changed, 14189 insertions(+), 1680 deletions(-)
create mode 100644 drivers/net/mlx5/hws/meson.build
rename drivers/net/mlx5/{mlx5_dr.h => hws/mlx5dr.h} (65%)
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
More information about the dev
mailing list