1313ac35aSVenkat Duvvuru /* SPDX-License-Identifier: BSD-3-Clause 22addc463SAjit Khaparde * Copyright(c) 2014-2021 Broadcom 3313ac35aSVenkat Duvvuru * All rights reserved. 4313ac35aSVenkat Duvvuru */ 5313ac35aSVenkat Duvvuru 6313ac35aSVenkat Duvvuru #ifndef _ULP_TEMPLATE_STRUCT_H_ 7313ac35aSVenkat Duvvuru #define _ULP_TEMPLATE_STRUCT_H_ 8313ac35aSVenkat Duvvuru 9313ac35aSVenkat Duvvuru #include <stdint.h> 10313ac35aSVenkat Duvvuru #include "rte_ether.h" 11313ac35aSVenkat Duvvuru #include "rte_icmp.h" 12313ac35aSVenkat Duvvuru #include "rte_ip.h" 13313ac35aSVenkat Duvvuru #include "rte_tcp.h" 14313ac35aSVenkat Duvvuru #include "rte_udp.h" 15313ac35aSVenkat Duvvuru #include "rte_esp.h" 16313ac35aSVenkat Duvvuru #include "rte_sctp.h" 17313ac35aSVenkat Duvvuru #include "rte_flow.h" 18313ac35aSVenkat Duvvuru #include "tf_core.h" 19313ac35aSVenkat Duvvuru 2053a0d4f7SKishore Padmanabha /* Number of fields for each protocol */ 21a2417601SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_SVIF_NUM 2 2253a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_ETH_NUM 3 2353a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_S_VLAN_NUM 3 2453a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_VLAN_NUM 6 2553a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_IPV4_NUM 10 268d9978d7SVenkat Duvvuru #define BNXT_ULP_PROTO_HDR_IPV6_NUM 8 2753a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_UDP_NUM 4 2853a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_TCP_NUM 9 2953a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_VXLAN_NUM 4 3053a0d4f7SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_MAX 128 31a2417601SKishore Padmanabha #define BNXT_ULP_PROTO_HDR_FIELD_SVIF_IDX 1 3253a0d4f7SKishore Padmanabha 3377b359eeSKishore Padmanabha /* Direction attributes */ 3477b359eeSKishore Padmanabha #define BNXT_ULP_FLOW_ATTR_TRANSFER 0x1 3577b359eeSKishore Padmanabha #define BNXT_ULP_FLOW_ATTR_INGRESS 0x2 3677b359eeSKishore Padmanabha #define BNXT_ULP_FLOW_ATTR_EGRESS 0x4 3777b359eeSKishore Padmanabha 388f153057SMike Baucom struct ulp_rte_hdr_bitmap { 398f153057SMike Baucom uint64_t bits; 408f153057SMike Baucom }; 418f153057SMike Baucom 422bbcdee8SKishore Padmanabha struct ulp_rte_field_bitmap { 432bbcdee8SKishore Padmanabha uint64_t bits; 442bbcdee8SKishore Padmanabha }; 452bbcdee8SKishore Padmanabha 46ae905028SMike Baucom /* Structure to store the protocol fields */ 47ae905028SMike Baucom #define RTE_PARSER_FLOW_HDR_FIELD_SIZE 16 48ae905028SMike Baucom struct ulp_rte_hdr_field { 49ae905028SMike Baucom uint8_t spec[RTE_PARSER_FLOW_HDR_FIELD_SIZE]; 50ae905028SMike Baucom uint8_t mask[RTE_PARSER_FLOW_HDR_FIELD_SIZE]; 51ae905028SMike Baucom uint32_t size; 52ae905028SMike Baucom }; 53ae905028SMike Baucom 543d6ba7cbSKishore Padmanabha struct ulp_rte_act_bitmap { 553d6ba7cbSKishore Padmanabha uint64_t bits; 563d6ba7cbSKishore Padmanabha }; 573d6ba7cbSKishore Padmanabha 583d6ba7cbSKishore Padmanabha /* Structure to hold the action property details. */ 593d6ba7cbSKishore Padmanabha struct ulp_rte_act_prop { 603d6ba7cbSKishore Padmanabha uint8_t act_details[BNXT_ULP_ACT_PROP_IDX_LAST]; 613d6ba7cbSKishore Padmanabha }; 623d6ba7cbSKishore Padmanabha 633d6ba7cbSKishore Padmanabha /* Structure to be used for passing all the parser functions */ 643d6ba7cbSKishore Padmanabha struct ulp_rte_parser_params { 653d6ba7cbSKishore Padmanabha struct ulp_rte_hdr_bitmap hdr_bitmap; 660c0f5a98SKishore Padmanabha struct ulp_rte_hdr_bitmap hdr_fp_bit; 672bbcdee8SKishore Padmanabha struct ulp_rte_field_bitmap fld_bitmap; 683d6ba7cbSKishore Padmanabha struct ulp_rte_hdr_field hdr_field[BNXT_ULP_PROTO_HDR_MAX]; 690f772db6SKishore Padmanabha uint32_t comp_fld[BNXT_ULP_CF_IDX_LAST]; 703d6ba7cbSKishore Padmanabha uint32_t field_idx; 713d6ba7cbSKishore Padmanabha struct ulp_rte_act_bitmap act_bitmap; 723d6ba7cbSKishore Padmanabha struct ulp_rte_act_prop act_prop; 7377b359eeSKishore Padmanabha uint32_t dir_attr; 74675e31d8SVenkat Duvvuru uint32_t priority; 75675e31d8SVenkat Duvvuru uint32_t fid; 76675e31d8SVenkat Duvvuru uint32_t parent_flow; 77675e31d8SVenkat Duvvuru uint32_t parent_fid; 78675e31d8SVenkat Duvvuru uint16_t func_id; 79675e31d8SVenkat Duvvuru uint32_t class_id; 80675e31d8SVenkat Duvvuru uint32_t act_tmpl; 81dc8ee812SKishore Padmanabha struct bnxt_ulp_context *ulp_ctx; 82a2417601SKishore Padmanabha uint32_t hdr_sig_id; 83a2417601SKishore Padmanabha uint32_t flow_sig_id; 843d6ba7cbSKishore Padmanabha }; 853d6ba7cbSKishore Padmanabha 8653a0d4f7SKishore Padmanabha /* Flow Parser Header Information Structure */ 8753a0d4f7SKishore Padmanabha struct bnxt_ulp_rte_hdr_info { 8853a0d4f7SKishore Padmanabha enum bnxt_ulp_hdr_type hdr_type; 8953a0d4f7SKishore Padmanabha /* Flow Parser Protocol Header Function Prototype */ 9053a0d4f7SKishore Padmanabha int (*proto_hdr_func)(const struct rte_flow_item *item_list, 913d6ba7cbSKishore Padmanabha struct ulp_rte_parser_params *params); 9253a0d4f7SKishore Padmanabha }; 9353a0d4f7SKishore Padmanabha 9453a0d4f7SKishore Padmanabha /* Flow Parser Header Information Structure Array defined in template source*/ 9553a0d4f7SKishore Padmanabha extern struct bnxt_ulp_rte_hdr_info ulp_hdr_info[]; 9653a0d4f7SKishore Padmanabha 9711c854e2SKishore Padmanabha /* Flow Parser Action Information Structure */ 9811c854e2SKishore Padmanabha struct bnxt_ulp_rte_act_info { 9911c854e2SKishore Padmanabha enum bnxt_ulp_act_type act_type; 10011c854e2SKishore Padmanabha /* Flow Parser Protocol Action Function Prototype */ 10111c854e2SKishore Padmanabha int32_t (*proto_act_func) 10211c854e2SKishore Padmanabha (const struct rte_flow_action *action_item, 1033d6ba7cbSKishore Padmanabha struct ulp_rte_parser_params *params); 10411c854e2SKishore Padmanabha }; 10511c854e2SKishore Padmanabha 10611c854e2SKishore Padmanabha /* Flow Parser Action Information Structure Array defined in template source*/ 10711c854e2SKishore Padmanabha extern struct bnxt_ulp_rte_act_info ulp_act_info[]; 10811c854e2SKishore Padmanabha 109c7520059SKishore Padmanabha /* Flow Matcher structures */ 110c7520059SKishore Padmanabha struct bnxt_ulp_header_match_info { 111c7520059SKishore Padmanabha struct ulp_rte_hdr_bitmap hdr_bitmap; 112c7520059SKishore Padmanabha uint32_t start_idx; 113c7520059SKishore Padmanabha uint32_t num_entries; 114c7520059SKishore Padmanabha uint32_t class_tmpl_id; 115c7520059SKishore Padmanabha uint32_t act_vnic; 116c7520059SKishore Padmanabha }; 117c7520059SKishore Padmanabha 1182bbcdee8SKishore Padmanabha struct ulp_rte_bitmap { 1192bbcdee8SKishore Padmanabha uint64_t bits; 1202bbcdee8SKishore Padmanabha }; 121c7520059SKishore Padmanabha 1222bbcdee8SKishore Padmanabha struct bnxt_ulp_class_match_info { 1232bbcdee8SKishore Padmanabha struct ulp_rte_bitmap hdr_sig; 1242bbcdee8SKishore Padmanabha struct ulp_rte_bitmap field_sig; 1252bbcdee8SKishore Padmanabha uint32_t class_hid; 1262bbcdee8SKishore Padmanabha uint32_t class_tid; 1272bbcdee8SKishore Padmanabha uint8_t act_vnic; 1282bbcdee8SKishore Padmanabha uint8_t wc_pri; 129a2417601SKishore Padmanabha uint32_t hdr_sig_id; 130a2417601SKishore Padmanabha uint32_t flow_sig_id; 1312bbcdee8SKishore Padmanabha }; 1322bbcdee8SKishore Padmanabha 1332bbcdee8SKishore Padmanabha /* Flow Matcher templates Structure for class entries */ 1342bbcdee8SKishore Padmanabha extern uint16_t ulp_class_sig_tbl[]; 1352bbcdee8SKishore Padmanabha extern struct bnxt_ulp_class_match_info ulp_class_match_list[]; 136c7520059SKishore Padmanabha 13700fa81b7SKishore Padmanabha /* Flow Matcher Action structures */ 13800fa81b7SKishore Padmanabha struct bnxt_ulp_action_match_info { 13900fa81b7SKishore Padmanabha struct ulp_rte_act_bitmap act_bitmap; 14000fa81b7SKishore Padmanabha uint32_t act_tmpl_id; 14100fa81b7SKishore Padmanabha }; 14200fa81b7SKishore Padmanabha 1432bbcdee8SKishore Padmanabha struct bnxt_ulp_act_match_info { 1442bbcdee8SKishore Padmanabha struct ulp_rte_bitmap act_sig; 1452bbcdee8SKishore Padmanabha uint32_t act_hid; 1462bbcdee8SKishore Padmanabha uint32_t act_tid; 1472bbcdee8SKishore Padmanabha }; 1482bbcdee8SKishore Padmanabha 1492bbcdee8SKishore Padmanabha /* Flow Matcher templates Structure for action entries */ 1502bbcdee8SKishore Padmanabha extern uint16_t ulp_act_sig_tbl[]; 1512bbcdee8SKishore Padmanabha extern struct bnxt_ulp_act_match_info ulp_act_match_list[]; 15200fa81b7SKishore Padmanabha 153a4638284SMike Baucom /* Device Specific Tables for mapper */ 154c5d06df4SMike Baucom struct bnxt_ulp_mapper_cond_info { 155c5d06df4SMike Baucom enum bnxt_ulp_cond_opc cond_opcode; 156c5d06df4SMike Baucom uint32_t cond_operand; 157c5d06df4SMike Baucom }; 158c5d06df4SMike Baucom 159c5d06df4SMike Baucom struct bnxt_ulp_mapper_cond_list_info { 160c5d06df4SMike Baucom enum bnxt_ulp_cond_list_opc cond_list_opcode; 161c5d06df4SMike Baucom uint32_t cond_start_idx; 162c5d06df4SMike Baucom uint32_t cond_nums; 16359ae4961SKishore Padmanabha uint32_t cond_goto; 164c5d06df4SMike Baucom }; 165c5d06df4SMike Baucom 1669cbfa4cfSKishore Padmanabha struct bnxt_ulp_template_device_tbls { 1679cbfa4cfSKishore Padmanabha struct bnxt_ulp_mapper_tmpl_info *tmpl_list; 168a2417601SKishore Padmanabha uint32_t tmpl_list_size; 1690c9fe336SMike Baucom struct bnxt_ulp_mapper_tbl_info *tbl_list; 170a2417601SKishore Padmanabha uint32_t tbl_list_size; 171a2417601SKishore Padmanabha struct bnxt_ulp_mapper_key_info *key_info_list; 172a2417601SKishore Padmanabha uint32_t key_info_list_size; 173a2417601SKishore Padmanabha struct bnxt_ulp_mapper_field_info *result_field_list; 174a2417601SKishore Padmanabha uint32_t result_field_list_size; 175a4638284SMike Baucom struct bnxt_ulp_mapper_ident_info *ident_list; 176a2417601SKishore Padmanabha uint32_t ident_list_size; 177c5d06df4SMike Baucom struct bnxt_ulp_mapper_cond_info *cond_list; 178a2417601SKishore Padmanabha uint32_t cond_list_size; 179a4638284SMike Baucom }; 180a4638284SMike Baucom 181696843ccSMike Baucom /* Device specific parameters */ 182313ac35aSVenkat Duvvuru struct bnxt_ulp_device_params { 183313ac35aSVenkat Duvvuru uint8_t description[16]; 184313ac35aSVenkat Duvvuru enum bnxt_ulp_byte_order byte_order; 185313ac35aSVenkat Duvvuru uint8_t encap_byte_swap; 186cd01ecffSKishore Padmanabha uint8_t num_phy_ports; 187cd01ecffSKishore Padmanabha uint32_t mark_db_lfid_entries; 188cd01ecffSKishore Padmanabha uint64_t mark_db_gfid_entries; 189191f19ceSMike Baucom uint64_t int_flow_db_num_entries; 190191f19ceSMike Baucom uint64_t ext_flow_db_num_entries; 191cd01ecffSKishore Padmanabha uint32_t flow_count_db_entries; 192f4a4421cSKishore Padmanabha uint32_t fdb_parent_flow_entries; 193313ac35aSVenkat Duvvuru uint32_t num_resources_per_flow; 194bbc5f1a0SKishore Padmanabha uint32_t ext_cntr_table_type; 195bbc5f1a0SKishore Padmanabha uint64_t byte_count_mask; 196bbc5f1a0SKishore Padmanabha uint64_t packet_count_mask; 197bbc5f1a0SKishore Padmanabha uint32_t byte_count_shift; 198bbc5f1a0SKishore Padmanabha uint32_t packet_count_shift; 1999cbfa4cfSKishore Padmanabha const struct bnxt_ulp_template_device_tbls *dev_tbls; 200313ac35aSVenkat Duvvuru }; 201313ac35aSVenkat Duvvuru 2028f153057SMike Baucom /* Flow Mapper */ 2039cbfa4cfSKishore Padmanabha struct bnxt_ulp_mapper_tmpl_info { 2048f153057SMike Baucom uint32_t device_name; 2058f153057SMike Baucom uint32_t start_tbl_idx; 2068f153057SMike Baucom uint32_t num_tbls; 207c5d06df4SMike Baucom struct bnxt_ulp_mapper_cond_list_info reject_info; 2088f153057SMike Baucom }; 2098f153057SMike Baucom 2108608c099SKishore Padmanabha struct bnxt_ulp_mapper_tbl_info { 211ae905028SMike Baucom enum bnxt_ulp_resource_func resource_func; 212642feef8SKishore Padmanabha uint32_t resource_type; /* TF_ enum type */ 213642feef8SKishore Padmanabha enum bnxt_ulp_resource_sub_type resource_sub_type; 214c5d06df4SMike Baucom struct bnxt_ulp_mapper_cond_list_info execute_info; 215c5d06df4SMike Baucom enum bnxt_ulp_cond_opc cond_opcode; 2164c4e86faSKishore Padmanabha uint32_t cond_operand; 2179cbfa4cfSKishore Padmanabha enum bnxt_ulp_mem_type_opc mem_type_opcode; 218ae905028SMike Baucom uint8_t direction; 2199cbfa4cfSKishore Padmanabha enum bnxt_ulp_pri_opc pri_opcode; 2209cbfa4cfSKishore Padmanabha uint32_t pri_operand; 221a2417601SKishore Padmanabha 222a2417601SKishore Padmanabha /* conflict resolution opcode */ 223a2417601SKishore Padmanabha enum bnxt_ulp_accept_opc accept_opcode; 224a2417601SKishore Padmanabha 225f4875133SKishore Padmanabha enum bnxt_ulp_critical_resource critical_resource; 226ae905028SMike Baucom 227ae905028SMike Baucom /* Information for accessing the ulp_key_field_list */ 228ae905028SMike Baucom uint32_t key_start_idx; 229ae905028SMike Baucom uint16_t key_bit_size; 230ae905028SMike Baucom uint16_t key_num_fields; 231ae905028SMike Baucom /* Size of the blob that holds the key */ 232ae905028SMike Baucom uint16_t blob_key_bit_size; 233ae905028SMike Baucom 234ae905028SMike Baucom /* Information for accessing the ulp_class_result_field_list */ 235ae905028SMike Baucom uint32_t result_start_idx; 236ae905028SMike Baucom uint16_t result_bit_size; 237ae905028SMike Baucom uint16_t result_num_fields; 2388608c099SKishore Padmanabha uint16_t encap_num_fields; 239ae905028SMike Baucom 240ae905028SMike Baucom /* Information for accessing the ulp_ident_list */ 241ae905028SMike Baucom uint32_t ident_start_idx; 242ae905028SMike Baucom uint16_t ident_nums; 243ae905028SMike Baucom 2449cbfa4cfSKishore Padmanabha enum bnxt_ulp_mark_db_opc mark_db_opcode; 245f634204bSKishore Padmanabha 246f634204bSKishore Padmanabha /* Table opcode for table operations */ 247f634204bSKishore Padmanabha uint32_t tbl_opcode; 2485952b1ccSKishore Padmanabha uint32_t tbl_operand; 2490117293cSKishore Padmanabha 2500117293cSKishore Padmanabha /* FDB table opcode */ 2510117293cSKishore Padmanabha enum bnxt_ulp_fdb_opc fdb_opcode; 252a2417601SKishore Padmanabha uint32_t fdb_operand; 253ae905028SMike Baucom }; 254ae905028SMike Baucom 255a2417601SKishore Padmanabha struct bnxt_ulp_mapper_field_info { 2562bbcdee8SKishore Padmanabha uint8_t description[64]; 257ae905028SMike Baucom uint16_t field_bit_size; 258*6167c20cSKishore Padmanabha enum bnxt_ulp_field_opc field_opc; 25959ae4961SKishore Padmanabha enum bnxt_ulp_field_cond_src field_cond_src; 26059ae4961SKishore Padmanabha uint8_t field_cond_opr[16]; 26159ae4961SKishore Padmanabha enum bnxt_ulp_field_src field_src1; 26259ae4961SKishore Padmanabha uint8_t field_opr1[16]; 26359ae4961SKishore Padmanabha enum bnxt_ulp_field_src field_src2; 26459ae4961SKishore Padmanabha uint8_t field_opr2[16]; 26559ae4961SKishore Padmanabha 266ae905028SMike Baucom }; 267ae905028SMike Baucom 268a2417601SKishore Padmanabha struct bnxt_ulp_mapper_key_info { 269a2417601SKishore Padmanabha struct bnxt_ulp_mapper_field_info field_info_spec; 270a2417601SKishore Padmanabha struct bnxt_ulp_mapper_field_info field_info_mask; 271696843ccSMike Baucom }; 272696843ccSMike Baucom 273ae905028SMike Baucom struct bnxt_ulp_mapper_ident_info { 2742bbcdee8SKishore Padmanabha uint8_t description[64]; 275ae905028SMike Baucom uint32_t resource_func; 276ae905028SMike Baucom 277ae905028SMike Baucom uint16_t ident_type; 278ae905028SMike Baucom uint16_t ident_bit_size; 279ae905028SMike Baucom uint16_t ident_bit_pos; 280a2417601SKishore Padmanabha enum bnxt_ulp_rf_idx regfile_idx; 281ae905028SMike Baucom }; 282ae905028SMike Baucom 283bfcaae8fSKishore Padmanabha struct bnxt_ulp_glb_resource_info { 284bfcaae8fSKishore Padmanabha enum bnxt_ulp_resource_func resource_func; 285bfcaae8fSKishore Padmanabha uint32_t resource_type; /* TF_ enum type */ 286a2417601SKishore Padmanabha enum bnxt_ulp_glb_rf_idx glb_regfile_index; 287072cb4a8SMike Baucom enum tf_dir direction; 288072cb4a8SMike Baucom }; 289072cb4a8SMike Baucom 2904bc32a80SMike Baucom struct bnxt_ulp_cache_tbl_params { 2914bc32a80SMike Baucom uint16_t num_entries; 2924bc32a80SMike Baucom }; 2934bc32a80SMike Baucom 294f634204bSKishore Padmanabha struct bnxt_ulp_generic_tbl_params { 295f634204bSKishore Padmanabha uint16_t result_num_entries; 296a2417601SKishore Padmanabha uint16_t result_num_bytes; 297f634204bSKishore Padmanabha enum bnxt_ulp_byte_order result_byte_order; 298f634204bSKishore Padmanabha }; 299f634204bSKishore Padmanabha 300a2417601SKishore Padmanabha struct bnxt_ulp_shared_act_info { 301a2417601SKishore Padmanabha uint64_t act_bitmask; 302a2417601SKishore Padmanabha }; 303a2417601SKishore Padmanabha 304313ac35aSVenkat Duvvuru /* 305ae905028SMike Baucom * Flow Mapper Static Data Externs: 306ae905028SMike Baucom * Access to the below static data should be done through access functions and 307ae905028SMike Baucom * directly throughout the code. 308ae905028SMike Baucom */ 309ae905028SMike Baucom 310ae905028SMike Baucom /* 311ae905028SMike Baucom * The ulp_device_params is indexed by the dev_id. 312ae905028SMike Baucom * This table maintains the device specific parameters. 313313ac35aSVenkat Duvvuru */ 314313ac35aSVenkat Duvvuru extern struct bnxt_ulp_device_params ulp_device_params[]; 315313ac35aSVenkat Duvvuru 316696843ccSMike Baucom /* 317ae905028SMike Baucom * The ulp_act_prop_map_table provides the mapping to index and size of action 318696843ccSMike Baucom * properties. 319696843ccSMike Baucom */ 320696843ccSMike Baucom extern uint32_t ulp_act_prop_map_table[]; 321696843ccSMike Baucom 322072cb4a8SMike Baucom /* 323bfcaae8fSKishore Padmanabha * The ulp_glb_resource_tbl provides the list of global resources that need to 324072cb4a8SMike Baucom * be initialized and where to store them. 325072cb4a8SMike Baucom */ 326bfcaae8fSKishore Padmanabha extern struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[]; 3274bc32a80SMike Baucom 3284bc32a80SMike Baucom /* 3294bc32a80SMike Baucom * The ulp_cache_tbl_parms table provides the sizes of the cache tables the 3304bc32a80SMike Baucom * mapper must dynamically allocate during initialization. 3314bc32a80SMike Baucom */ 3324bc32a80SMike Baucom extern struct bnxt_ulp_cache_tbl_params ulp_cache_tbl_params[]; 3334bc32a80SMike Baucom 334d097b460SKishore Padmanabha /* 335f634204bSKishore Padmanabha * The ulp_generic_tbl_parms table provides the sizes of the generic tables the 336f634204bSKishore Padmanabha * mapper must dynamically allocate during initialization. 337f634204bSKishore Padmanabha */ 338f634204bSKishore Padmanabha extern struct bnxt_ulp_generic_tbl_params ulp_generic_tbl_params[]; 339f634204bSKishore Padmanabha /* 340d097b460SKishore Padmanabha * The ulp_global template table is used to initialize default entries 341d097b460SKishore Padmanabha * that could be reused by other templates. 342d097b460SKishore Padmanabha */ 343d097b460SKishore Padmanabha extern uint32_t ulp_glb_template_tbl[]; 344d097b460SKishore Padmanabha 345313ac35aSVenkat Duvvuru #endif /* _ULP_TEMPLATE_STRUCT_H_ */ 346