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 52890d7..bb89e18 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 5fddb86..df90e19 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) &&