net/mlx5e: Check for IPsec NAT-T support
authorLeon Romanovsky <leonro@nvidia.com>
Wed, 19 Jul 2023 09:26:54 +0000 (12:26 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 25 Jul 2023 13:08:57 +0000 (15:08 +0200)
Set relevant IPsec capability to indicate if flow steering supports UDP
encapsulation and decapsulation of IPsec ESP packets.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c

index 4e98871..b382b0c 100644 (file)
@@ -110,6 +110,7 @@ enum mlx5_ipsec_cap {
        MLX5_IPSEC_CAP_ROCE             = 1 << 3,
        MLX5_IPSEC_CAP_PRIO             = 1 << 4,
        MLX5_IPSEC_CAP_TUNNEL           = 1 << 5,
+       MLX5_IPSEC_CAP_ESPINUDP         = 1 << 6,
 };
 
 struct mlx5e_priv;
index a3554bd..5ff0626 100644 (file)
@@ -54,6 +54,12 @@ u32 mlx5_ipsec_device_caps(struct mlx5_core_dev *mdev)
                    MLX5_CAP_FLOWTABLE_NIC_RX(mdev,
                                              reformat_l3_esp_tunnel_to_l2))
                        caps |= MLX5_IPSEC_CAP_TUNNEL;
+
+               if (MLX5_CAP_FLOWTABLE_NIC_TX(mdev,
+                                             reformat_add_esp_transport_over_udp) &&
+                   MLX5_CAP_FLOWTABLE_NIC_RX(mdev,
+                                             reformat_del_esp_transport_over_udp))
+                       caps |= MLX5_IPSEC_CAP_ESPINUDP;
        }
 
        if (mlx5_get_roce_state(mdev) &&