net/mlx5e: Check IPsec packet offload tunnel capabilities
authorLeon Romanovsky <leonro@nvidia.com>
Thu, 13 Apr 2023 12:29:20 +0000 (15:29 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 18 Apr 2023 01:55:25 +0000 (18:55 -0700)
Validate tunnel mode support for IPsec packet offload.

Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c

index 52890d7dce6b78b33e9f29af8438232f6e6e939a..bb89e18b17b4dc3753f3dc0e0b8911ce1b76c590 100644 (file)
@@ -107,6 +107,7 @@ enum mlx5_ipsec_cap {
        MLX5_IPSEC_CAP_PACKET_OFFLOAD   = 1 << 2,
        MLX5_IPSEC_CAP_ROCE             = 1 << 3,
        MLX5_IPSEC_CAP_PRIO             = 1 << 4,
+       MLX5_IPSEC_CAP_TUNNEL           = 1 << 5,
 };
 
 struct mlx5e_priv;
index 5fddb86bb35e25e0d90d1a1a9cff6ebf1d491b51..df90e19066bcc58085373d58342a83e708a82e8f 100644 (file)
@@ -48,6 +48,12 @@ u32 mlx5_ipsec_device_caps(struct mlx5_core_dev *mdev)
                if (MLX5_CAP_FLOWTABLE_NIC_TX(mdev, ignore_flow_level) &&
                    MLX5_CAP_FLOWTABLE_NIC_RX(mdev, ignore_flow_level))
                        caps |= MLX5_IPSEC_CAP_PRIO;
+
+               if (MLX5_CAP_FLOWTABLE_NIC_TX(mdev,
+                                             reformat_l2_to_l3_esp_tunnel) &&
+                   MLX5_CAP_FLOWTABLE_NIC_RX(mdev,
+                                             reformat_l3_esp_tunnel_to_l2))
+                       caps |= MLX5_IPSEC_CAP_TUNNEL;
        }
 
        if (mlx5_get_roce_state(mdev) &&