xref: /linux/drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws_bwc_complex.h (revision 9410645520e9b820069761f3450ef6661418e279)
1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2 /* Copyright (c) 2024 NVIDIA Corporation & Affiliates */
3 
4 #ifndef MLX5HWS_BWC_COMPLEX_H_
5 #define MLX5HWS_BWC_COMPLEX_H_
6 
7 bool mlx5hws_bwc_match_params_is_complex(struct mlx5hws_context *ctx,
8 					 u8 match_criteria_enable,
9 					 struct mlx5hws_match_parameters *mask);
10 
11 int mlx5hws_bwc_matcher_create_complex(struct mlx5hws_bwc_matcher *bwc_matcher,
12 				       struct mlx5hws_table *table,
13 				       u32 priority,
14 				       u8 match_criteria_enable,
15 				       struct mlx5hws_match_parameters *mask);
16 
17 void mlx5hws_bwc_matcher_destroy_complex(struct mlx5hws_bwc_matcher *bwc_matcher);
18 
19 int mlx5hws_bwc_matcher_move_all_complex(struct mlx5hws_bwc_matcher *bwc_matcher);
20 
21 int mlx5hws_bwc_rule_create_complex(struct mlx5hws_bwc_rule *bwc_rule,
22 				    struct mlx5hws_match_parameters *params,
23 				    u32 flow_source,
24 				    struct mlx5hws_rule_action rule_actions[],
25 				    u16 bwc_queue_idx);
26 
27 int mlx5hws_bwc_rule_destroy_complex(struct mlx5hws_bwc_rule *bwc_rule);
28 
29 #endif /* MLX5HWS_BWC_COMPLEX_H_ */
30