Commit 3400ae49 authored by Jianbo Liu's avatar Jianbo Liu Committed by Jakub Kicinski
Browse files

net/mlx5e: Add helper function to update IPSec default destination



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: default avatarJianbo Liu <jianbol@nvidia.com>
Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Reviewed-by: default avatarPatrisious Haddad <phaddad@nvidia.com>
Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20250220213959.504304-2-tariqt@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent a3ad653c
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -493,6 +493,14 @@ static int ipsec_miss_create(struct mlx5_core_dev *mdev,
	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);
}