mbox

[pull,request,net-next,00/15] mlx5 updates 2022-12-08

Message ID 20221209001420.142794-1-saeed@kernel.org (mailing list archive)
State Accepted
Headers show

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2022-12-08

Message

Saeed Mahameed Dec. 9, 2022, 12:14 a.m. UTC
From: Saeed Mahameed <saeedm@nvidia.com>

This series provides
1) steering RANGE matching hardware offloads and tc meter mtu offoad
2) multipath, support routes with more than 2 nexthops
3) vport representors counter improvements

For more information please see tag log below.

Please pull and let me know if there is any problem.

Thanks,
Saeed.


The following changes since commit ff36c447e2330625066d193a25a8f94c1408d9d9:

  Merge branch 'mlx4-better-big-tcp-support' (2022-12-08 14:27:50 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2022-12-08

for you to fetch changes up to 4fe1b3a5f8fe2fdcedcaba9561e5b0ae5cb1d15b:

  net/mlx5: Expose steering dropped packets counter (2022-12-08 16:10:56 -0800)

----------------------------------------------------------------
mlx5-updates-2022-12-08

1) Support range match action in SW steering

Yevgeny Kliteynik says:
=======================

The following patch series adds support for a range match action in
SW Steering.

SW steering is able to match only on the exact values of the packet fields,
as requested by the user: the user provides mask for the fields that are of
interest, and the exact values to be matched on when the traffic is handled.

The following patch series add new type of action - Range Match, where the
user provides a field to be matched on and a range of values (min to max)
that will be considered as hit.

There are several new notions that were implemented in order to support
Range Match:
 - MATCH_RANGES Steering Table Entry (STE): the new STE type that allows
   matching the packets' fields on the range of values instead of a specific
   value.
 - Match Definer: this is a general FW object that defines which fields
   in the packet will be referenced by the mask and tag of each STE.
   Match definer ID is part of STE fields, and it defines how the HW needs
   to interpret the STE's mask/tag values.
   Till now SW steering used the definers that were managed by FW and
   implemented the STE layout as described by the HW spec.
   Now that we're adding a new type of STE, SW steering needs to also be
   able to define this new STE's layout, and this is do

=======================

2) From OZ add support for meter mtu offload
   2.1: Refactor the code to allow both metering and range post actions as a
        pre-step for adding police mtu offload support.
   2.2: Instantiate mtu green/red flow tables with a single match-all rule.
        Add the green/red actions to the hit/miss table accordingly
   2.3: Initialize the meter object with the TC police mtu parameter.
        Use the hardware range match action feature.

3) From MaorD, support routes with more than 2 nexthops in multipath

4) Michael and Or, improve and extend vport representor counters.

----------------------------------------------------------------
Maor Dickman (1):
      net/mlx5e: multipath, support routes with more than 2 nexthops

Michael Guralnik (1):
      net/mlx5: Expose steering dropped packets counter

Or Har-Toov (1):
      net/mlx5: Refactor and expand rep vport stat group

Oz Shlomo (3):
      net/mlx5e: meter, refactor to allow multiple post meter tables
      net/mlx5e: meter, add mtu post meter tables
      net/mlx5e: TC, add support for meter mtu offload

Yevgeny Kliteynik (9):
      net/mlx5: mlx5_ifc updates for MATCH_DEFINER general object
      net/mlx5: fs, add match on ranges API
      net/mlx5: DR, Add functions to create/destroy MATCH_DEFINER general object
      net/mlx5: DR, Rework is_fw_table function
      net/mlx5: DR, Handle FT action in a separate function
      net/mlx5: DR, Manage definers with refcounts
      net/mlx5: DR, Some refactoring of miss address handling
      net/mlx5: DR, Add function that tells if STE miss addr has been initialized
      net/mlx5: DR, Add support for range match action

 drivers/net/ethernet/mellanox/mlx5/core/Makefile   |   1 +
 .../mellanox/mlx5/core/diag/fs_tracepoint.c        |  16 +
 .../ethernet/mellanox/mlx5/core/en/tc/act/police.c |  20 +-
 .../net/ethernet/mellanox/mlx5/core/en/tc/meter.c  |  15 +-
 .../net/ethernet/mellanox/mlx5/core/en/tc/meter.h  |   1 +
 .../ethernet/mellanox/mlx5/core/en/tc/post_meter.c | 336 +++++++++++++++++----
 .../ethernet/mellanox/mlx5/core/en/tc/post_meter.h |  31 ++
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c   |  94 ++++--
 drivers/net/ethernet/mellanox/mlx5/core/en_stats.h |  16 +
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c    |   8 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.h    |   1 +
 .../net/ethernet/mellanox/mlx5/core/esw/debugfs.c  |  22 +-
 .../ethernet/mellanox/mlx5/core/eswitch_offloads.c |  19 ++
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c  |  11 +-
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.h  |   1 +
 drivers/net/ethernet/mellanox/mlx5/core/lag/mp.c   |  79 +++--
 .../mellanox/mlx5/core/steering/dr_action.c        | 300 +++++++++++++++---
 .../ethernet/mellanox/mlx5/core/steering/dr_cmd.c  |  77 +++++
 .../ethernet/mellanox/mlx5/core/steering/dr_dbg.c  |  29 +-
 .../mellanox/mlx5/core/steering/dr_definer.c       | 151 +++++++++
 .../mellanox/mlx5/core/steering/dr_domain.c        |   7 +-
 .../ethernet/mellanox/mlx5/core/steering/dr_rule.c |  27 +-
 .../ethernet/mellanox/mlx5/core/steering/dr_ste.c  |  10 +
 .../ethernet/mellanox/mlx5/core/steering/dr_ste.h  |   1 +
 .../mellanox/mlx5/core/steering/dr_ste_v1.c        |  69 +++++
 .../mellanox/mlx5/core/steering/dr_ste_v1.h        |   1 +
 .../mellanox/mlx5/core/steering/dr_ste_v2.c        |   1 +
 .../mellanox/mlx5/core/steering/dr_types.h         |  43 +++
 .../ethernet/mellanox/mlx5/core/steering/fs_dr.c   |  53 +++-
 .../mlx5/core/steering/mlx5_ifc_dr_ste_v1.h        |  35 +++
 .../ethernet/mellanox/mlx5/core/steering/mlx5dr.h  |  13 +
 include/linux/mlx5/fs.h                            |  12 +
 include/linux/mlx5/mlx5_ifc.h                      |  68 ++++-
 33 files changed, 1373 insertions(+), 195 deletions(-)
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_definer.c