/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ /* Copyright (c) 2021 Mellanox Technologies. */ #ifndef __MLX5_ESW_FT_H__ #define __MLX5_ESW_FT_H__ #ifdef CONFIG_MLX5_CLS_ACT struct mlx5_esw_indir_table * mlx5_esw_indir_table_init(void); void mlx5_esw_indir_table_destroy(struct mlx5_esw_indir_table *indir); struct mlx5_flow_table *mlx5_esw_indir_table_get(struct mlx5_eswitch *esw, struct mlx5_flow_attr *attr, struct mlx5_flow_spec *spec, u16 vport, bool decap); void mlx5_esw_indir_table_put(struct mlx5_eswitch *esw, struct mlx5_flow_attr *attr, u16 vport, bool decap); bool mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, struct mlx5_flow_attr *attr, u16 vport_num, struct mlx5_core_dev *dest_mdev); u16 mlx5_esw_indir_table_decap_vport(struct mlx5_flow_attr *attr); #else /* indir API stubs */ static inline struct mlx5_esw_indir_table * mlx5_esw_indir_table_init(void) { return NULL; } static inline void mlx5_esw_indir_table_destroy(struct mlx5_esw_indir_table *indir) { } static inline struct mlx5_flow_table * mlx5_esw_indir_table_get(struct mlx5_eswitch *esw, struct mlx5_flow_attr *attr, struct mlx5_flow_spec *spec, u16 vport, bool decap) { return ERR_PTR(-EOPNOTSUPP); } static inline void mlx5_esw_indir_table_put(struct mlx5_eswitch *esw, struct mlx5_flow_attr *attr, u16 vport, bool decap) { } static inline bool mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, struct mlx5_flow_attr *attr, u16 vport_num, struct mlx5_core_dev *dest_mdev) { return false; } static inline u16 mlx5_esw_indir_table_decap_vport(struct mlx5_flow_attr *attr) { return 0; } #endif #endif /* __MLX5_ESW_FT_H__ */