Skip to content

devlink: Add port function attributes

Leon Romanovsky linux-doc netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v3 Latest8 patches 6 repliesIn review

Changes in v3 from the cover letter

- Changed newly introduced IPsec blocking routine
and as an outcome of testing already existing one.
I'm sending them together to avoid merge conflicts.
- Refactored patches to separate IFC part
- Simplified
v2: https://lore.kernel.org/netdev/[email protected]/
- Improve docs of ipsec_crypto vs ipsec_packet devlink attributes
- also see patches 2,4 for the changelog.

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/8devlink: Expose port function commands to control IPsec crypto offloadsDocumentation/networking/devlink/devlink-port.rst include/net/devlink.h include/uapi/linux/devlink.h +1 more+96 -00 replies
2/8devlink: Expose port function commands to control IPsec packet offloadsDocumentation/networking/devlink/devlink-port.rst include/net/devlink.h include/uapi/linux/devlink.h +1 more+97 -00 replies
3/8net/mlx5: Drop extra layer of locks in IPsecdrivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c+4 -140 replies
4/8net/mlx5e: Rewrite IPsec vs. TC block interfacedrivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c drivers/net/ethernet/mellanox/mlx5/core/eswitch.h drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c+38 -930 replies
5/8net/mlx5: Add IFC bits to support IPsec enable/disableinclude/linux/mlx5/mlx5_ifc.h+3 -00 replies
6/8net/mlx5: Provide an interface to block change of IPsec capabilitiesdrivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c drivers/net/ethernet/mellanox/mlx5/core/eswitch.c drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +1 more+65 -10 replies
7/8net/mlx5: Implement devlink port function cmds to control ipsec_cryptoDocumentation/networking/device_drivers/ethernet/mellanox/mlx5/switchdev.rst drivers/net/ethernet/mellanox/mlx5/core/Makefile drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c +4 more+436 -10 replies
8/8net/mlx5: Implement devlink port function cmds to control ipsec_packetDocumentation/networking/device_drivers/ethernet/mellanox/mlx5/switchdev.rst drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec.c +3 more+183 -40 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [PATCH net-next v3 0/8] devlink: Add port function attributes

From: Leon Romanovsky <[email protected]>

v3:
- Changed newly introduced IPsec blocking routine
and as an outcome of testing already existing one.
I'm sending them together to avoid merge conflicts.
- Refactored patches to separate IFC part
- Simplified
v2: https://lore.kernel.org/netdev/[email protected]/
- Improve docs of ipsec_crypto vs ipsec_packet devlink attributes
- also see patches 2,4 for the changelog.

---------------------------------------------------------------------------------
From Dima:

Introduce hypervisor-level control knobs to set the functionality of PCI VF devices passed through to guests. The administrator of a hypervisor host may choose to change the settings of a port function from the defaults configured by the device firmware.

The software stack has two types of IPsec offload - crypto and packet. Specifically, the ip xfrm command has sub-commands for "state" and "policy" that have an "offload" parameter. With ip xfrm state, both crypto and packet offload types are supported, while ip xfrm policy can only be offloaded in packet mode.

The series introduces two new boolean attributes of a port function:
ipsec_crypto and ipsec_packet. The goal is to provide a similar level of granularity for controlling VF IPsec offload capabilities, which would be aligned with the software model. This will allow users to decide if they want both types of offload enabled for a VF, just one of them, or none at all (which is the default).

At a high level, the difference between the two knobs is that with ipsec_crypto, only XFRM state can be offloaded. Specifically, only the crypto operation (Encrypt/Decrypt) is offloaded. With ipsec_packet, both XFRM state and policy can be offloaded. Furthermore, in addition to crypto operation offload, IPsec encapsulation is also offloaded. For XFRM state, choosing between crypto and packet offload types is possible. From the HW perspective, different resources may be required for each offload type.

Examples of when a user prefers to enable IPsec packet offload for a VF when using switchdev mode:

  $ devlink port show pci/0000:06:00.0/1
      pci/0000:06:00.0/1: type eth netdev enp6s0pf0vf0 flavour pcivf pfnum 0 vfnum 0
          function:
          hw_addr 00:00:00:00:00:00 roce enable migratable disable ipsec_crypto disable ipsec_packet disable
  $ devlink port function set pci/0000:06:00.0/1 ipsec_packet enable
  $ devlink port show pci/0000:06:00.0/1
      pci/0000:06:00.0/1: type eth netdev enp6s0pf0vf0 flavour pcivf pfnum 0 vfnum 0
          function:
          hw_addr 00:00:00:00:00:00 roce enable migratable disable ipsec_crypto disable ipsec_packet enable

This enables the corresponding IPsec capability of the function before it's enumerated, so when the driver reads the capability from the device firmware, it is enabled. The driver is then able to configure corresponding features and ops of the VF net device to support IPsec state and policy offloading.

Thanks

Dima Chumak (4):
devlink: Expose port function commands to control IPsec crypto
offloads
devlink: Expose port function commands to control IPsec packet
offloads
net/mlx5: Implement devlink port function cmds to control ipsec_crypto net/mlx5: Implement devlink port function cmds to control ipsec_packet

Leon Romanovsky (4):
net/mlx5: Drop extra layer of locks in IPsec
net/mlx5e: Rewrite IPsec vs. TC block interface
net/mlx5: Add IFC bits to support IPsec enable/disable net/mlx5: Provide an interface to block change of IPsec capabilities

 .../ethernet/mellanox/mlx5/switchdev.rst      |  20 +
 .../networking/devlink/devlink-port.rst       |  55 +++
 .../net/ethernet/mellanox/mlx5/core/Makefile  |   2 +-
 .../mellanox/mlx5/core/en_accel/ipsec.c       |  20 +-
 .../mellanox/mlx5/core/en_accel/ipsec_fs.c    |  63 ++-
 .../mellanox/mlx5/core/esw/devlink_port.c     |   6 +
 .../ethernet/mellanox/mlx5/core/esw/ipsec.c   | 369 ++++++++++++++++++
 .../net/ethernet/mellanox/mlx5/core/eswitch.c |  41 ++
 .../net/ethernet/mellanox/mlx5/core/eswitch.h |  48 ++-
 .../mellanox/mlx5/core/eswitch_offloads.c     | 259 +++++++++---
 include/linux/mlx5/driver.h                   |   1 +
 include/linux/mlx5/mlx5_ifc.h                 |   3 +
 include/net/devlink.h                         |  30 ++
 include/uapi/linux/devlink.h                  |   4 +
 net/devlink/leftover.c                        | 104 +++++
 15 files changed, 917 insertions(+), 108 deletions(-)
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec.c
Signature · 1 line
2.41.0