+/* device tables */
+const struct bnxt_ulp_template_device_tbls ulp_template_thor_tbls[] = {
+ [BNXT_ULP_TEMPLATE_TYPE_CLASS] = {
+ .tmpl_list = ulp_thor_class_tmpl_list,
+ .tmpl_list_size = ULP_THOR_CLASS_TMPL_LIST_SIZE,
+ .tbl_list = ulp_thor_class_tbl_list,
+ .tbl_list_size = ULP_THOR_CLASS_TBL_LIST_SIZE,
+ .key_info_list = ulp_thor_class_key_info_list,
+ .key_info_list_size = ULP_THOR_CLASS_KEY_INFO_LIST_SIZE,
+ .ident_list = ulp_thor_class_ident_list,
+ .ident_list_size = ULP_THOR_CLASS_IDENT_LIST_SIZE,
+ .cond_list = ulp_thor_class_cond_list,
+ .cond_list_size = ULP_THOR_CLASS_COND_LIST_SIZE,
+ .result_field_list = ulp_thor_class_result_field_list,
+ .result_field_list_size = ULP_THOR_CLASS_RESULT_FIELD_LIST_SIZE
+ },
+ [BNXT_ULP_TEMPLATE_TYPE_ACTION] = {
+ .tmpl_list = ulp_thor_act_tmpl_list,
+ .tmpl_list_size = ULP_THOR_ACT_TMPL_LIST_SIZE,
+ .tbl_list = ulp_thor_act_tbl_list,
+ .tbl_list_size = ULP_THOR_ACT_TBL_LIST_SIZE,
+ .result_field_list = ulp_thor_act_result_field_list,
+ .result_field_list_size = ULP_THOR_ACT_RESULT_FIELD_LIST_SIZE
+ }
+};
+
+/* List of device specific parameters */
+struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {
+ [BNXT_ULP_DEVICE_ID_WH_PLUS] = {
+ .description = "Whitney_Plus",
+ .byte_order = BNXT_ULP_BYTE_ORDER_LE,
+ .encap_byte_swap = 1,
+ .int_flow_db_num_entries = 16384,
+ .ext_flow_db_num_entries = 32768,
+ .mark_db_lfid_entries = 65536,
+ .mark_db_gfid_entries = 65536,
+ .flow_count_db_entries = 16384,
+ .fdb_parent_flow_entries = 2,
+ .num_resources_per_flow = 8,
+ .num_phy_ports = 2,
+ .ext_cntr_table_type = 0,
+ .byte_count_mask = 0x0000000fffffffff,
+ .packet_count_mask = 0xffffffff00000000,
+ .byte_count_shift = 0,
+ .packet_count_shift = 36,
+ .dynamic_pad_en = 0,
+ .dev_tbls = ulp_template_wh_plus_tbls
+ },
+ [BNXT_ULP_DEVICE_ID_THOR] = {
+ .description = "Thor",
+ .byte_order = BNXT_ULP_BYTE_ORDER_LE,
+ .encap_byte_swap = 1,
+ .int_flow_db_num_entries = 16384,
+ .ext_flow_db_num_entries = 32768,
+ .mark_db_lfid_entries = 0,
+ .mark_db_gfid_entries = 0,
+ .flow_count_db_entries = 0,
+ .fdb_parent_flow_entries = 2,
+ .num_resources_per_flow = 8,
+ .num_phy_ports = 2,
+ .ext_cntr_table_type = 0,
+ .byte_count_mask = 0x0000000fffffffff,
+ .packet_count_mask = 0xffffffff00000000,
+ .byte_count_shift = 0,
+ .packet_count_shift = 36,
+ .dynamic_pad_en = 1,
+ .em_blk_size_bits = 100,
+ .em_blk_align_bits = 128,
+ .em_key_align_bytes = 80,
+ .wc_slice_width = 160,
+ .wc_max_slices = 4,
+ .wc_mode_list = {0x0000000c, 0x0000000e, 0x0000000f, 0x0000000f},
+ .wc_mod_list_max_size = 4,
+ .wc_ctl_size_bits = 32,
+ .dev_tbls = ulp_template_thor_tbls
+ }
+};
+
+/* Provides act_bitmask */
+struct bnxt_ulp_shared_act_info ulp_shared_act_info[] = {
+ [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR << 1 |
+ BNXT_ULP_DIRECTION_INGRESS] = {
+ .act_bitmask = BNXT_ULP_ACT_BIT_SHARED_SAMPLE
+ },
+ [BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_MIRROR << 1 |
+ BNXT_ULP_DIRECTION_EGRESS] = {
+ .act_bitmask = BNXT_ULP_ACT_BIT_SHARED_SAMPLE
+ }
+};
+
+/* List of device specific parameters */
+struct bnxt_ulp_app_capabilities_info ulp_app_cap_info_list[] = {
+ {
+ .app_id = 0,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .flags = 0
+ },
+ {
+ .app_id = 0,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .flags = 0
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .flags = BNXT_ULP_APP_CAP_SHARED_EN
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .flags = BNXT_ULP_APP_CAP_SHARED_EN
+ },
+ {
+ .app_id = 2,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .flags = BNXT_ULP_APP_CAP_SHARED_EN
+ },
+ {
+ .app_id = 2,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .flags = BNXT_ULP_APP_CAP_SHARED_EN
+ }
+};
+
+/* List of unnamed app tf resources required to be reserved per app/device */
+struct bnxt_ulp_resource_resv_info ulp_app_resource_resv_list[] = {
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .direction = TF_DIR_RX,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+ .resource_type = TF_TCAM_TBL_TYPE_WC_TCAM,
+ .count = 512
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .direction = TF_DIR_RX,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+ .resource_type = TF_TCAM_TBL_TYPE_WC_TCAM,
+ .count = 512
+ },
+ {
+ .app_id = 2,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .direction = TF_DIR_RX,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+ .resource_type = TF_TCAM_TBL_TYPE_WC_TCAM,
+ .count = 512
+ },
+ {
+ .app_id = 2,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .direction = TF_DIR_RX,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,
+ .resource_type = TF_TCAM_TBL_TYPE_WC_TCAM,
+ .count = 512
+ }
+};
+
+/* List of global app tf resources required to be reserved per app/device */
+struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[] = {
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_PROF_FUNC,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_L2_CTXT_HIGH,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_L2_CTXT_HIGH,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_EM_PROF,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_WH_PLUS,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_WC_PROF,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_PROF_FUNC,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_L2_CTXT_HIGH,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_L2_CTXT_HIGH,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1,
+ .direction = TF_DIR_RX
+ },
+ {
+ .app_id = 1,
+ .device_id = BNXT_ULP_DEVICE_ID_THOR,
+ .resource_func = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,
+ .resource_type = TF_IDENT_TYPE_EM_PROF,
+ .glb_regfile_index = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,
+ .direction = TF_DIR_RX