1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2/* Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */
3
4#ifndef __MLX5_LIB_IPSEC_H__
5#define __MLX5_LIB_IPSEC_H__
6
7#include "lib/devcom.h"
8
9struct mlx5_ipsec_fs;
10
11struct mlx5_flow_table *
12mlx5_ipsec_fs_roce_ft_get(struct mlx5_ipsec_fs *ipsec_roce, u32 family);
13void mlx5_ipsec_fs_roce_rx_destroy(struct mlx5_ipsec_fs *ipsec_roce,
14				   u32 family, struct mlx5_core_dev *mdev);
15int mlx5_ipsec_fs_roce_rx_create(struct mlx5_core_dev *mdev,
16				 struct mlx5_ipsec_fs *ipsec_roce,
17				 struct mlx5_flow_namespace *ns,
18				 struct mlx5_flow_destination *default_dst,
19				 u32 family, u32 level, u32 prio);
20void mlx5_ipsec_fs_roce_tx_destroy(struct mlx5_ipsec_fs *ipsec_roce,
21				   struct mlx5_core_dev *mdev);
22int mlx5_ipsec_fs_roce_tx_create(struct mlx5_core_dev *mdev,
23				 struct mlx5_ipsec_fs *ipsec_roce,
24				 struct mlx5_flow_table *pol_ft,
25				 bool from_event);
26void mlx5_ipsec_fs_roce_cleanup(struct mlx5_ipsec_fs *ipsec_roce);
27struct mlx5_ipsec_fs *mlx5_ipsec_fs_roce_init(struct mlx5_core_dev *mdev,
28					      struct mlx5_devcom_comp_dev **devcom);
29bool mlx5_ipsec_fs_is_mpv_roce_supported(struct mlx5_core_dev *mdev);
30
31#endif /* __MLX5_LIB_IPSEC_H__ */
32