mbox series

[net-next,00/13] mlx5 HW-Managed Flow Steering in FS core level

Message ID 20250107060708.1610882-1-tariqt@nvidia.com (mailing list archive)
Headers show
Series mlx5 HW-Managed Flow Steering in FS core level | expand

Message

Tariq Toukan Jan. 7, 2025, 6:06 a.m. UTC
This patchset by Moshe follows Yevgeny's patchsets [1][2] on subject
"HW-Managed Flow Steering in mlx5 driver". As introduced there in HW
managed Flow Steering mode (HWS) the driver is configuring steering
rules directly to the HW using WQs with a special new type of WQE (Work
Queue Element). This way we can reach higher rule insertion/deletion
rate with much lower CPU utilization compared to SW Managed Flow
Steering (SWS).

This patchset adds API to manage namespace, flow tables, flow groups and
prepare FTE (Flow Table Entry) rules. It also adds caching and pool
mechanisms for HWS actions to allow sharing of steering actions among
different rules. The implementation of this API in FS layer, allows FS
core to use HW Managed Flow Steering in addition to the existing FW or
SW Managed Flow Steering.

The last patch of this series adds support for configuring HW Managed
Flow Steering mode through devlink param, similar to configuring SW
Managed Flow Steering mode:

 # devlink dev param set pci/0000:08:00.0 name flow_steering_mode \
      cmode runtime value hmfs

[1] https://lore.kernel.org/netdev/20240903031948.78006-1-saeed@kernel.org/
[2] https://lore.kernel.org/all/20250102181415.1477316-1-tariqt@nvidia.com/

Regards,
Tariq

Moshe Shemesh (13):
  net/mlx5: fs, add HWS root namespace functions
  net/mlx5: fs, add HWS flow table API functions
  net/mlx5: fs, add HWS flow group API functions
  net/mlx5: fs, add HWS actions pool
  net/mlx5: fs, add HWS packet reformat API function
  net/mlx5: fs, add HWS modify header API function
  net/mlx5: fs, manage flow counters HWS action sharing by refcount
  net/mlx5: fs, add dest table cache
  net/mlx5: fs, add HWS fte API functions
  net/mlx5: fs, add support for dest vport HWS action
  net/mlx5: fs, set create match definer to not supported by HWS
  net/mlx5: fs, add HWS get capabilities
  net/mlx5: fs, add HWS to steering mode options

 .../net/ethernet/mellanox/mlx5/core/Makefile  |    5 +-
 .../net/ethernet/mellanox/mlx5/core/fs_core.c |   50 +-
 .../net/ethernet/mellanox/mlx5/core/fs_core.h |   62 +-
 .../ethernet/mellanox/mlx5/core/fs_counters.c |   42 +-
 .../net/ethernet/mellanox/mlx5/core/fs_pool.c |    5 +-
 .../net/ethernet/mellanox/mlx5/core/fs_pool.h |    5 +-
 .../mellanox/mlx5/core/steering/hws/fs_hws.c  | 1363 +++++++++++++++++
 .../mellanox/mlx5/core/steering/hws/fs_hws.h  |   80 +
 .../mlx5/core/steering/hws/fs_hws_pools.c     |  449 ++++++
 .../mlx5/core/steering/hws/fs_hws_pools.h     |   73 +
 include/linux/mlx5/mlx5_ifc.h                 |    1 +
 11 files changed, 2077 insertions(+), 58 deletions(-)
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws_pools.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws_pools.h


base-commit: 49afc040f4d707a4149a05180edc42bc590641a4