+/* Structure to be used for passing all the parser functions */
+struct ulp_rte_parser_params {
+ STAILQ_ENTRY(ulp_rte_parser_params) next;
+ struct ulp_rte_hdr_bitmap hdr_bitmap;
+ struct ulp_rte_hdr_bitmap hdr_fp_bit;
+ struct ulp_rte_field_bitmap fld_bitmap;
+ struct ulp_rte_field_bitmap fld_s_bitmap;
+ struct ulp_rte_hdr_field hdr_field[BNXT_ULP_PROTO_HDR_MAX];
+ uint64_t comp_fld[BNXT_ULP_CF_IDX_LAST];
+ uint32_t field_idx;
+ struct ulp_rte_act_bitmap act_bitmap;
+ struct ulp_rte_act_prop act_prop;
+ uint32_t dir_attr;
+ uint32_t priority;
+ uint32_t fid;
+ uint32_t parent_flow;
+ uint32_t parent_fid;
+ uint16_t func_id;
+ uint16_t port_id;
+ uint32_t class_id;
+ uint32_t act_tmpl;
+ struct bnxt_ulp_context *ulp_ctx;
+ uint32_t hdr_sig_id;
+ uint32_t flow_sig_id;
+ uint32_t flow_pattern_id;
+ uint32_t act_pattern_id;
+ uint8_t app_id;
+};
+
+/* Flow Parser Header Information Structure */
+struct bnxt_ulp_rte_hdr_info {
+ enum bnxt_ulp_hdr_type hdr_type;
+ /* Flow Parser Protocol Header Function Prototype */
+ int (*proto_hdr_func)(const struct rte_flow_item *item_list,
+ struct ulp_rte_parser_params *params);
+};
+
+/* Flow Parser Header Information Structure Array defined in template source*/
+extern struct bnxt_ulp_rte_hdr_info ulp_hdr_info[];
+
+/* Flow Parser Action Information Structure */
+struct bnxt_ulp_rte_act_info {
+ enum bnxt_ulp_act_type act_type;
+ /* Flow Parser Protocol Action Function Prototype */
+ int32_t (*proto_act_func)
+ (const struct rte_flow_action *action_item,
+ struct ulp_rte_parser_params *params);
+};
+
+/* Flow Parser Action Information Structure Array defined in template source*/
+extern struct bnxt_ulp_rte_act_info ulp_act_info[];
+
+/* Flow Matcher structures */
+struct bnxt_ulp_header_match_info {
+ struct ulp_rte_hdr_bitmap hdr_bitmap;
+ uint32_t start_idx;
+ uint32_t num_entries;
+ uint32_t class_tmpl_id;
+ uint32_t act_vnic;
+};
+
+struct ulp_rte_bitmap {
+ uint64_t bits;
+};
+
+struct bnxt_ulp_class_match_info {
+ struct ulp_rte_bitmap hdr_sig;
+ struct ulp_rte_bitmap field_sig;
+ uint32_t class_hid;
+ uint32_t class_tid;
+ uint8_t act_vnic;
+ uint8_t wc_pri;
+ uint8_t app_sig;
+ uint32_t hdr_sig_id;
+ uint32_t flow_sig_id;
+ uint32_t flow_pattern_id;
+};
+
+/* Flow Matcher templates Structure for class entries */
+extern uint16_t ulp_class_sig_tbl[];
+extern struct bnxt_ulp_class_match_info ulp_class_match_list[];
+
+/* Flow Matcher Action structures */
+struct bnxt_ulp_action_match_info {
+ struct ulp_rte_act_bitmap act_bitmap;
+ uint32_t act_tmpl_id;
+};
+
+struct bnxt_ulp_act_match_info {
+ struct ulp_rte_bitmap act_sig;
+ uint32_t act_hid;
+ uint32_t act_tid;
+ uint32_t act_pattern_id;
+ uint8_t app_sig;
+};
+
+/* Flow Matcher templates Structure for action entries */
+extern uint16_t ulp_act_sig_tbl[];
+extern struct bnxt_ulp_act_match_info ulp_act_match_list[];
+
+/* Device Specific Tables for mapper */
+struct bnxt_ulp_mapper_cond_info {
+ enum bnxt_ulp_cond_opc cond_opcode;
+ uint32_t cond_operand;
+};
+
+struct bnxt_ulp_mapper_cond_list_info {
+ enum bnxt_ulp_cond_list_opc cond_list_opcode;
+ uint32_t cond_start_idx;
+ uint32_t cond_nums;
+ int32_t cond_true_goto;
+ int32_t cond_false_goto;
+};
+
+struct bnxt_ulp_mapper_func_info {
+ enum bnxt_ulp_func_opc func_opc;
+ enum bnxt_ulp_func_src func_src1;
+ enum bnxt_ulp_func_src func_src2;
+ uint16_t func_opr1;
+ uint16_t func_opr2;
+ uint16_t func_dst_opr;
+};
+
+struct bnxt_ulp_template_device_tbls {
+ struct bnxt_ulp_mapper_tmpl_info *tmpl_list;
+ uint32_t tmpl_list_size;
+ struct bnxt_ulp_mapper_tbl_info *tbl_list;
+ uint32_t tbl_list_size;
+ struct bnxt_ulp_mapper_key_info *key_info_list;
+ uint32_t key_info_list_size;
+ struct bnxt_ulp_mapper_field_info *result_field_list;
+ uint32_t result_field_list_size;
+ struct bnxt_ulp_mapper_ident_info *ident_list;
+ uint32_t ident_list_size;
+ struct bnxt_ulp_mapper_cond_info *cond_list;
+ uint32_t cond_list_size;
+};
+