1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2 /* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ 3 4 #ifndef __MLX5_IPSEC_OFFLOAD_H__ 5 #define __MLX5_IPSEC_OFFLOAD_H__ 6 7 #include <linux/mlx5/driver.h> 8 #include "accel/ipsec.h" 9 10 #ifdef CONFIG_MLX5_IPSEC 11 12 const struct mlx5_accel_ipsec_ops *mlx5_ipsec_offload_ops(struct mlx5_core_dev *mdev); mlx5_is_ipsec_device(struct mlx5_core_dev * mdev)13static inline bool mlx5_is_ipsec_device(struct mlx5_core_dev *mdev) 14 { 15 if (!MLX5_CAP_GEN(mdev, ipsec_offload)) 16 return false; 17 18 if (!MLX5_CAP_GEN(mdev, log_max_dek)) 19 return false; 20 21 if (!(MLX5_CAP_GEN_64(mdev, general_obj_types) & 22 MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_IPSEC)) 23 return false; 24 25 return MLX5_CAP_IPSEC(mdev, ipsec_crypto_offload) && 26 MLX5_CAP_ETH(mdev, insert_trailer); 27 } 28 29 #else 30 static inline const struct mlx5_accel_ipsec_ops * mlx5_ipsec_offload_ops(struct mlx5_core_dev * mdev)31mlx5_ipsec_offload_ops(struct mlx5_core_dev *mdev) { return NULL; } mlx5_is_ipsec_device(struct mlx5_core_dev * mdev)32static inline bool mlx5_is_ipsec_device(struct mlx5_core_dev *mdev) 33 { 34 return false; 35 } 36 37 #endif /* CONFIG_MLX5_IPSEC */ 38 #endif /* __MLX5_IPSEC_OFFLOAD_H__ */ 39