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