1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB 2 * Copyright (c) 2019 Mellanox Technologies 3 */ 4 5 #ifndef _MLX5_FS_DR_ 6 #define _MLX5_FS_DR_ 7 8 #include "mlx5dr.h" 9 10 struct mlx5_flow_root_namespace; 11 struct fs_fte; 12 13 struct mlx5_fs_dr_action { 14 struct mlx5dr_action *dr_action; 15 }; 16 17 struct mlx5_fs_dr_rule { 18 struct mlx5dr_rule *dr_rule; 19 /* Only actions created by fs_dr */ 20 struct mlx5dr_action **dr_actions; 21 int num_actions; 22 }; 23 24 struct mlx5_fs_dr_domain { 25 struct mlx5dr_domain *dr_domain; 26 }; 27 28 struct mlx5_fs_dr_matcher { 29 struct mlx5dr_matcher *dr_matcher; 30 }; 31 32 struct mlx5_fs_dr_table { 33 struct mlx5dr_table *dr_table; 34 struct mlx5dr_action *miss_action; 35 }; 36 37 #ifdef CONFIG_MLX5_SW_STEERING 38 39 bool mlx5_fs_dr_is_supported(struct mlx5_core_dev *dev); 40 41 int mlx5_fs_dr_action_get_pkt_reformat_id(struct mlx5_pkt_reformat *pkt_reformat); 42 43 const struct mlx5_flow_cmds *mlx5_fs_cmd_get_dr_cmds(void); 44 45 #else 46 mlx5_fs_cmd_get_dr_cmds(void)47static inline const struct mlx5_flow_cmds *mlx5_fs_cmd_get_dr_cmds(void) 48 { 49 return NULL; 50 } 51 mlx5_fs_dr_action_get_pkt_reformat_id(struct mlx5_pkt_reformat * pkt_reformat)52static inline u32 mlx5_fs_dr_action_get_pkt_reformat_id(struct mlx5_pkt_reformat *pkt_reformat) 53 { 54 return 0; 55 } 56 mlx5_fs_dr_is_supported(struct mlx5_core_dev * dev)57static inline bool mlx5_fs_dr_is_supported(struct mlx5_core_dev *dev) 58 { 59 return false; 60 } 61 62 #endif /* CONFIG_MLX5_SW_STEERING */ 63 #endif 64