Subject: [GIT PULL v1] Improve IPsec limits, ESN and replay window

From: Leon Romanovsky <[email-masked]>
Date: Thu, 6 Apr 2023 10:19:02 +0300

This series overcomes existing hardware limitations in Mellanox ConnectX
devices around handling IPsec soft and hard limits.

In addition, the ESN logic is tied and added an interface to configure
replay window sequence numbers through existing iproute2 interface.

  ip xfrm state ... [ replay-seq SEQ ] [ replay-oseq SEQ ]
                    [ replay-seq-hi SEQ ] [ replay-oseq-hi SEQ ]

Link: https://lore.kernel.org/all/[email-masked]
Signed-off-by: Leon Romanovsky <[email-masked]>
----------------------------------------------------------------
Changelog:
v1:
 * Added Steffen's Acked-by to XFRM patch
 https://lore.kernel.org/all/[email-masked]
 * Fixed memory leak in "net/mlx5e: Generalize IPsec work structs" patch
https://lore.kernel.org/all/[email-masked]

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
index 0916309cf296..9a4c4bc64155 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c
@@ -707,6 +707,7 @@ static int mlx5e_xfrm_add_state(struct xfrm_state *x,
 release_dwork:
        kfree(sa_entry->dwork);
 release_work:
+       kfree(sa_entry->work->data);
        kfree(sa_entry->work);
 err_xfrm:
        kfree(sa_entry);
@@ -750,6 +751,7 @@ static void mlx5e_xfrm_free_state(struct xfrm_state *x)
        mlx5e_accel_ipsec_fs_del_rule(sa_entry);
        mlx5_ipsec_free_sa_ctx(sa_entry);
        kfree(sa_entry->dwork);
+       kfree(sa_entry->work->data);
        kfree(sa_entry->work);
 sa_entry_free:
        kfree(sa_entry);

v0: https://lore.kernel.org/all/[email-masked]
----------------------------------------------------------------

The following changes since commit 5a6cddb89b51d99a7702e63829644a5860dd9c41:

  net/mlx5e: Update IPsec per SA packets/bytes count (2023-03-20 11:29:52 +0200)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux.git/ tags/ipsec-esn-replay

for you to fetch changes up to b2f7b01d36a9b94fbd7489bd1228025ea7e7a2f4:

  net/mlx5e: Simulate missing IPsec TX limits hardware functionality (2023-04-06 10:12:03 +0300)

----------------------------------------------------------------
Leon Romanovsky (10):
      net/mlx5e: Factor out IPsec ASO update function
      net/mlx5e: Prevent zero IPsec soft/hard limits
      net/mlx5e: Add SW implementation to support IPsec 64 bit soft and hard limits
      net/mlx5e: Overcome slow response for first IPsec ASO WQE
      xfrm: don't require advance ESN callback for packet offload
      net/mlx5e: Remove ESN callbacks if it is not supported
      net/mlx5e: Set IPsec replay sequence numbers
      net/mlx5e: Reduce contention in IPsec workqueue
      net/mlx5e: Generalize IPsec work structs
      net/mlx5e: Simulate missing IPsec TX limits hardware functionality

 .../ethernet/mellanox/mlx5/core/en_accel/ipsec.c   | 331 ++++++++++++++++++---
 .../ethernet/mellanox/mlx5/core/en_accel/ipsec.h   |  47 ++-
 .../mellanox/mlx5/core/en_accel/ipsec_fs.c         |  31 +-
 .../mellanox/mlx5/core/en_accel/ipsec_offload.c    | 198 +++++++++---
 net/xfrm/xfrm_device.c                             |   2 +-
 5 files changed, 498 insertions(+), 111 deletions(-)