]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/mlx5e: Add helper function to update IPSec default destination
authorJianbo Liu <jianbol@nvidia.com>
Thu, 20 Feb 2025 21:39:51 +0000 (23:39 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 25 Feb 2025 02:14:32 +0000 (18:14 -0800)
The default destination of IPSec steering rules for MPV mode will be
updated when the master device is brought up or down. Move the common
code into the helper function. It’s convenient to update destinations
in later patches.

Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Reviewed-by: Patrisious Haddad <phaddad@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20250220213959.504304-2-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c

index e7b64679f121959134d635984f3f5fc94a45459b..7f82d530d3e143d45907429135dde94308906a60 100644 (file)
@@ -493,6 +493,14 @@ out:
        return err;
 }
 
+static void ipsec_rx_update_default_dest(struct mlx5e_ipsec_rx *rx,
+                                        struct mlx5_flow_destination *old_dest,
+                                        struct mlx5_flow_destination *new_dest)
+{
+       mlx5_modify_rule_destination(rx->status.rule, new_dest, old_dest);
+       mlx5_modify_rule_destination(rx->sa.rule, new_dest, old_dest);
+}
+
 static void handle_ipsec_rx_bringup(struct mlx5e_ipsec *ipsec, u32 family)
 {
        struct mlx5e_ipsec_rx *rx = ipsec_rx(ipsec, family, XFRM_DEV_OFFLOAD_PACKET);
@@ -507,8 +515,7 @@ static void handle_ipsec_rx_bringup(struct mlx5e_ipsec *ipsec, u32 family)
 
        new_dest.ft = mlx5_ipsec_fs_roce_ft_get(ipsec->roce, family);
        new_dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
-       mlx5_modify_rule_destination(rx->status.rule, &new_dest, &old_dest);
-       mlx5_modify_rule_destination(rx->sa.rule, &new_dest, &old_dest);
+       ipsec_rx_update_default_dest(rx, &old_dest, &new_dest);
 }
 
 static void handle_ipsec_rx_cleanup(struct mlx5e_ipsec *ipsec, u32 family)
@@ -520,8 +527,7 @@ static void handle_ipsec_rx_cleanup(struct mlx5e_ipsec *ipsec, u32 family)
        old_dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
        new_dest = mlx5_ttc_get_default_dest(mlx5e_fs_get_ttc(ipsec->fs, false),
                                             family2tt(family));
-       mlx5_modify_rule_destination(rx->sa.rule, &new_dest, &old_dest);
-       mlx5_modify_rule_destination(rx->status.rule, &new_dest, &old_dest);
+       ipsec_rx_update_default_dest(rx, &old_dest, &new_dest);
 
        mlx5_ipsec_fs_roce_rx_destroy(ipsec->roce, family, ipsec->mdev);
 }