xref: /dpdk/drivers/net/bnxt/tf_ulp/ulp_matcher.h (revision dd0191d5e70d0e65a7f041a88af480fc673160e1)
1c7520059SKishore Padmanabha /* SPDX-License-Identifier: BSD-3-Clause
2e6e8f03eSRandy Schacher  * Copyright(c) 2014-2023 Broadcom
3c7520059SKishore Padmanabha  * All rights reserved.
4c7520059SKishore Padmanabha  */
5c7520059SKishore Padmanabha 
6c7520059SKishore Padmanabha #ifndef ULP_MATCHER_H_
7c7520059SKishore Padmanabha #define ULP_MATCHER_H_
8c7520059SKishore Padmanabha 
9c7520059SKishore Padmanabha #include <rte_log.h>
10*dd0191d5SShuanglin Wang #include <rte_hash.h>
11c7520059SKishore Padmanabha #include "bnxt.h"
128ce17d56SKishore Padmanabha #include "ulp_template_db_enum.h"
13c7520059SKishore Padmanabha #include "ulp_template_struct.h"
14c7520059SKishore Padmanabha #include "bnxt_tf_common.h"
15c7520059SKishore Padmanabha 
16*dd0191d5SShuanglin Wang #define BNXT_ULP_ACT_HASH_LIST_SIZE 1024
17*dd0191d5SShuanglin Wang 
18*dd0191d5SShuanglin Wang struct ulp_matcher_hash_db_key {
19*dd0191d5SShuanglin Wang 	struct ulp_rte_hdr_bitmap hdr_bitmap;
20*dd0191d5SShuanglin Wang 	uint8_t app_id;
21*dd0191d5SShuanglin Wang };
22*dd0191d5SShuanglin Wang 
23*dd0191d5SShuanglin Wang struct ulp_matcher_class_db_node {
24*dd0191d5SShuanglin Wang 	uint8_t in_use;
25*dd0191d5SShuanglin Wang 	uint16_t match_info_idx;
26*dd0191d5SShuanglin Wang };
27*dd0191d5SShuanglin Wang 
28*dd0191d5SShuanglin Wang struct ulp_matcher_action_hash_db_key {
29*dd0191d5SShuanglin Wang 	struct ulp_rte_act_bitmap act_bitmap;
30*dd0191d5SShuanglin Wang };
31*dd0191d5SShuanglin Wang 
32*dd0191d5SShuanglin Wang struct ulp_matcher_act_db_node {
33*dd0191d5SShuanglin Wang 	uint16_t act_tmpl_idx;
34*dd0191d5SShuanglin Wang };
35*dd0191d5SShuanglin Wang 
36*dd0191d5SShuanglin Wang struct bnxt_ulp_matcher_data {
37*dd0191d5SShuanglin Wang 	struct rte_hash *class_matcher_db;
38*dd0191d5SShuanglin Wang 	uint16_t class_list_size;
39*dd0191d5SShuanglin Wang 	struct ulp_matcher_class_db_node *class_list;
40*dd0191d5SShuanglin Wang 	struct rte_hash *action_matcher_db;
41*dd0191d5SShuanglin Wang 	struct ulp_matcher_act_db_node *act_list;
42*dd0191d5SShuanglin Wang };
43*dd0191d5SShuanglin Wang 
44c7520059SKishore Padmanabha int32_t
453d6ba7cbSKishore Padmanabha ulp_matcher_pattern_match(struct ulp_rte_parser_params *params,
46c7520059SKishore Padmanabha 			  uint32_t *class_id);
47c7520059SKishore Padmanabha 
4800fa81b7SKishore Padmanabha int32_t
493d6ba7cbSKishore Padmanabha ulp_matcher_action_match(struct ulp_rte_parser_params *params,
5000fa81b7SKishore Padmanabha 			 uint32_t *act_id);
51*dd0191d5SShuanglin Wang 
52*dd0191d5SShuanglin Wang int32_t ulp_matcher_init(struct bnxt_ulp_context *ulp_ctx);
53*dd0191d5SShuanglin Wang 
54*dd0191d5SShuanglin Wang void ulp_matcher_deinit(struct bnxt_ulp_context *ulp_ctx);
55*dd0191d5SShuanglin Wang 
56c7520059SKishore Padmanabha #endif /* ULP_MATCHER_H_ */
57