Subject: [pull request][net-next 00/15] mlx5 updates 2022-12-03

From: Saeed Mahameed <[email-masked]>
Date: Sat, 3 Dec 2022 14:13:22 -0800

From: Saeed Mahameed <[email-masked]>

Two updates to mlx5 driver:
  1) Support tc police jump conform-exceed attribute
  2) Support 802.1ad in SRIOV VST

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 65e6af6cebefbf7d8d8ac52b71cd251c2071ad00:

  net: ethernet: mtk_wed: fix sleep while atomic in mtk_wed_wo_queue_refill (2022-12-02 21:23:02 -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-03

for you to fetch changes up to aab2e7ac34c563f9f580458956799e281cf3ad48:

  net/mlx5: SRIOV, Allow ingress tagged packets on VST (2022-12-03 14:10:44 -0800)

----------------------------------------------------------------
mlx5-updates-2022-12-03

1) Support tc police jump conform-exceed attribute

The tc police action conform-exceed option defines how to handle
packets which exceed or conform to the configured bandwidth limit.
One of the possible conform-exceed values is jump, which skips over
a specified number of actions.
This series adds support for conform-exceed jump action.

The series adds platform support for branching actions by providing
true/false flow attributes to the branching action.
This is necessary for supporting police jump, as each branch may
execute a different action list.

The first five patches are preparation patches:
- Patches 1 and 2 add support for actions with no destinations (e.g. drop)
- Patch 3 refactor the code for subsequent function reuse
- Patch 4 defines an abstract way for identifying terminating actions
- Patch 5 updates action list validations logic considering branching actions

The following three patches introduce an interface for abstracting branching actions:
- Patch 6 introduces an abstract api for defining branching actions
- Patch 7 generically instantiates the branching flow attributes using the abstract API

Patch 8 adds the platform support for jump actions, by executing the following sequence:
  a. Store the jumping flow attr
  b. Identify the jump target action while iterating the actions list.
  c. Instantiate a new flow attribute after the jump target action.
     This is the flow attribute that the branching action should jump to.
  d. Set the target post action id on:
    d.1. The jumping attribute, thus realizing the jump functionality.
    d.2. The attribute preceding the target jump attr, if not terminating.

The next patches apply the platform's branching attributes to the police action:
- Patch 9 is a refactor patch
- Patch 10 initializes the post meter table with the red/green flow attributes,
           as were initialized by the platform
- Patch 11 enables the offload of meter actions using jump conform-exceed value.

2) Support 802.1ad in SRIOV VST
  2.1) Refactor ACL table creation and layout to support the new vlan mode
  2.2)  Implement 802.1ad VST when device supports push vlan and pop vlan
    steering actions on vport ACLs. In case device doesn't support these
    steering actions, fall back to setting eswitch vport context, which
    supports only 802.1q.

----------------------------------------------------------------
Moshe Shemesh (4):
      net/mlx5: SRIOV, Remove two unused ingress flow group
      net/mlx5: SRIOV, Recreate egress ACL table on config change
      net/mlx5: SRIOV, Add 802.1ad VST support
      net/mlx5: SRIOV, Allow ingress tagged packets on VST

Oz Shlomo (11):
      net/mlx5e: E-Switch, handle flow attribute with no destinations
      net/mlx5: fs, assert null dest pointer when dest_num is 0
      net/mlx5e: TC, reuse flow attribute post parser processing
      net/mlx5e: TC, add terminating actions
      net/mlx5e: TC, validate action list per attribute
      net/mlx5e: TC, set control params for branching actions
      net/mlx5e: TC, initialize branch flow attributes
      net/mlx5e: TC, initialize branching action with target attr
      net/mlx5e: TC, rename post_meter actions
      net/mlx5e: TC, init post meter rules with branching attributes
      net/mlx5e: TC, allow meter jump control action

 .../ethernet/mellanox/mlx5/core/en/tc/act/accept.c |   1 +
 .../ethernet/mellanox/mlx5/core/en/tc/act/act.c    |   2 +-
 .../ethernet/mellanox/mlx5/core/en/tc/act/act.h    |  12 +
 .../ethernet/mellanox/mlx5/core/en/tc/act/drop.c   |   1 +
 .../ethernet/mellanox/mlx5/core/en/tc/act/goto.c   |   1 +
 .../ethernet/mellanox/mlx5/core/en/tc/act/mirred.c |   7 +
 .../mellanox/mlx5/core/en/tc/act/mirred_nic.c      |   1 +
 .../ethernet/mellanox/mlx5/core/en/tc/act/police.c |  66 +++-
 .../net/ethernet/mellanox/mlx5/core/en/tc/meter.c  |  24 +-
 .../net/ethernet/mellanox/mlx5/core/en/tc/meter.h  |   4 +-
 .../ethernet/mellanox/mlx5/core/en/tc/post_meter.c |  98 +++--
 .../ethernet/mellanox/mlx5/core/en/tc/post_meter.h |   8 +-
 .../net/ethernet/mellanox/mlx5/core/en/tc_priv.h   |   4 -
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |   5 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c    | 428 +++++++++++++++------
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.h    |   4 +
 .../mellanox/mlx5/core/esw/acl/egress_lgcy.c       |  93 +++--
 .../mellanox/mlx5/core/esw/acl/egress_ofld.c       |   5 +-
 .../ethernet/mellanox/mlx5/core/esw/acl/helper.c   |  20 +-
 .../ethernet/mellanox/mlx5/core/esw/acl/helper.h   |   5 +-
 .../mellanox/mlx5/core/esw/acl/ingress_lgcy.c      | 218 +++++------
 .../net/ethernet/mellanox/mlx5/core/esw/acl/lgcy.h |   8 +
 .../net/ethernet/mellanox/mlx5/core/esw/legacy.c   |  12 +-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c  |  46 ++-
 drivers/net/ethernet/mellanox/mlx5/core/eswitch.h  |  33 +-
 .../ethernet/mellanox/mlx5/core/eswitch_offloads.c |  15 +-
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c  |   3 +
 include/linux/mlx5/device.h                        |   7 +
 include/linux/mlx5/mlx5_ifc.h                      |   3 +-
 29 files changed, 761 insertions(+), 373 deletions(-)