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 | |
47 | static inline const struct mlx5_flow_cmds *mlx5_fs_cmd_get_dr_cmds(void) |
48 | { |
49 | return NULL; |
50 | } |
51 | |
52 | static inline u32 mlx5_fs_dr_action_get_pkt_reformat_id(struct mlx5_pkt_reformat *pkt_reformat) |
53 | { |
54 | return 0; |
55 | } |
56 | |
57 | static 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 | |