get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/72560/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 72560,
    "url": "https://patches.dpdk.org/api/patches/72560/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20200701065212.41391-38-ajit.khaparde@broadcom.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20200701065212.41391-38-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200701065212.41391-38-ajit.khaparde@broadcom.com",
    "date": "2020-07-01T06:51:58",
    "name": "[v2,37/51] net/bnxt: add support for global resource templates",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "b72ecb8cd956f97a782cfb880d46ba6a309337cb",
    "submitter": {
        "id": 501,
        "url": "https://patches.dpdk.org/api/people/501/?format=api",
        "name": "Ajit Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "https://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20200701065212.41391-38-ajit.khaparde@broadcom.com/mbox/",
    "series": [
        {
            "id": 10703,
            "url": "https://patches.dpdk.org/api/series/10703/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=10703",
            "date": "2020-07-01T06:51:22",
            "name": "add features for host-based flow management",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/10703/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/72560/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/72560/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7C81BA0350;\n\tWed,  1 Jul 2020 09:01:09 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 0AC091D508;\n\tWed,  1 Jul 2020 08:53:10 +0200 (CEST)",
            "from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com\n [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 1A8501C13A\n for <dev@dpdk.org>; Wed,  1 Jul 2020 08:52:29 +0200 (CEST)",
            "from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net\n [10.75.242.48])\n by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 65B1D30C344;\n Tue, 30 Jun 2020 23:52:28 -0700 (PDT)",
            "from localhost.localdomain (unknown [10.230.185.215])\n by mail-irv-17.broadcom.com (Postfix) with ESMTP id 3709714008D;\n Tue, 30 Jun 2020 23:52:28 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 65B1D30C344",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1593586348;\n bh=u7jAnyEN4uYW3/3aCkb6iE/3kOuYhwA37V6oeU7NphE=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=isZGtjhZnWddcVw2JXDrYpoHjoMuKz7zZJv9/5MSC8tNdPJHSUvPWrAsSJhozat4b\n eyLC5RxYIXfezI/LGQPZZXZ3zXsZussj6mqf3annDFoLkrmp42CEgsf8NIifoYX8cC\n zXL0yGwacCpEiG53ek1734cwo7M2PImNC79nUByg=",
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "Kishore Padmanabha <kishore.padmanabha@broadcom.com>,\n Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>,\n Somnath Kotur <somnath.kotur@broadcom.com>",
        "Date": "Tue, 30 Jun 2020 23:51:58 -0700",
        "Message-Id": "<20200701065212.41391-38-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.21.1 (Apple Git-122.3)",
        "In-Reply-To": "<20200701065212.41391-1-ajit.khaparde@broadcom.com>",
        "References": "<20200612132934.16488-1-somnath.kotur@broadcom.com>\n <20200701065212.41391-1-ajit.khaparde@broadcom.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v2 37/51] net/bnxt: add support for global\n\tresource templates",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\n\nAdded support for the global resource templates, so that they\ncan be reused by the other regular templates.\n\nSigned-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\nSigned-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>\nReviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>\nReviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/tf_ulp/ulp_mapper.c          | 178 +++++++++++++++++-\n .../net/bnxt/tf_ulp/ulp_template_db_enum.h    |   1 +\n drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c |   3 +\n drivers/net/bnxt/tf_ulp/ulp_template_struct.h |   6 +\n 4 files changed, 181 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\nindex 7b3b3d698..6fd55b2a2 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n@@ -80,15 +80,20 @@ ulp_mapper_glb_resource_write(struct bnxt_ulp_mapper_data *data,\n  * returns 0 on success\n  */\n static int32_t\n-ulp_mapper_resource_ident_allocate(struct tf *tfp,\n+ulp_mapper_resource_ident_allocate(struct bnxt_ulp_context *ulp_ctx,\n \t\t\t\t   struct bnxt_ulp_mapper_data *mapper_data,\n \t\t\t\t   struct bnxt_ulp_glb_resource_info *glb_res)\n {\n \tstruct tf_alloc_identifier_parms iparms = { 0 };\n \tstruct tf_free_identifier_parms fparms;\n \tuint64_t regval;\n+\tstruct tf *tfp;\n \tint32_t rc = 0;\n \n+\ttfp = bnxt_ulp_cntxt_tfp_get(ulp_ctx);\n+\tif (!tfp)\n+\t\treturn -EINVAL;\n+\n \tiparms.ident_type = glb_res->resource_type;\n \tiparms.dir = glb_res->direction;\n \n@@ -115,13 +120,76 @@ ulp_mapper_resource_ident_allocate(struct tf *tfp,\n \t\treturn rc;\n \t}\n #ifdef RTE_LIBRTE_BNXT_TRUFLOW_DEBUG\n-\tBNXT_TF_DBG(DEBUG, \"Allocated Glb Res[%s][%d][%d] = 0x%04x\\n\",\n+\tBNXT_TF_DBG(DEBUG, \"Allocated Glb Res Ident [%s][%d][%d] = 0x%04x\\n\",\n \t\t    (iparms.dir == TF_DIR_RX) ? \"RX\" : \"TX\",\n \t\t    glb_res->glb_regfile_index, iparms.ident_type, iparms.id);\n #endif\n \treturn rc;\n }\n \n+/*\n+ * Internal function to allocate index tbl resource and store it in mapper data.\n+ *\n+ * returns 0 on success\n+ */\n+static int32_t\n+ulp_mapper_resource_index_tbl_alloc(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\t\t    struct bnxt_ulp_mapper_data *mapper_data,\n+\t\t\t\t    struct bnxt_ulp_glb_resource_info *glb_res)\n+{\n+\tstruct tf_alloc_tbl_entry_parms\taparms = { 0 };\n+\tstruct tf_free_tbl_entry_parms\tfree_parms = { 0 };\n+\tuint64_t regval;\n+\tstruct tf *tfp;\n+\tuint32_t tbl_scope_id;\n+\tint32_t rc = 0;\n+\n+\ttfp = bnxt_ulp_cntxt_tfp_get(ulp_ctx);\n+\tif (!tfp)\n+\t\treturn -EINVAL;\n+\n+\t/* Get the scope id */\n+\trc = bnxt_ulp_cntxt_tbl_scope_id_get(ulp_ctx, &tbl_scope_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get table scope rc=%d\\n\", rc);\n+\t\treturn rc;\n+\t}\n+\n+\taparms.type = glb_res->resource_type;\n+\taparms.dir = glb_res->direction;\n+\taparms.search_enable = BNXT_ULP_SEARCH_BEFORE_ALLOC_NO;\n+\taparms.tbl_scope_id = tbl_scope_id;\n+\n+\t/* Allocate the index tbl using tf api */\n+\trc = tf_alloc_tbl_entry(tfp, &aparms);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to alloc identifier [%s][%d]\\n\",\n+\t\t\t    (aparms.dir == TF_DIR_RX) ? \"RX\" : \"TX\",\n+\t\t\t    aparms.type);\n+\t\treturn rc;\n+\t}\n+\n+\t/* entries are stored as big-endian format */\n+\tregval = tfp_cpu_to_be_64((uint64_t)aparms.idx);\n+\t/* write to the mapper global resource */\n+\trc = ulp_mapper_glb_resource_write(mapper_data, glb_res, regval);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to write to global resource id\\n\");\n+\t\t/* Free the identifer when update failed */\n+\t\tfree_parms.dir = aparms.dir;\n+\t\tfree_parms.type = aparms.type;\n+\t\tfree_parms.idx = aparms.idx;\n+\t\ttf_free_tbl_entry(tfp, &free_parms);\n+\t\treturn rc;\n+\t}\n+#ifdef RTE_LIBRTE_BNXT_TRUFLOW_DEBUG\n+\tBNXT_TF_DBG(DEBUG, \"Allocated Glb Res Index [%s][%d][%d] = 0x%04x\\n\",\n+\t\t    (aparms.dir == TF_DIR_RX) ? \"RX\" : \"TX\",\n+\t\t    glb_res->glb_regfile_index, aparms.type, aparms.idx);\n+#endif\n+\treturn rc;\n+}\n+\n /* Retrieve the cache initialization parameters for the tbl_idx */\n static struct bnxt_ulp_cache_tbl_params *\n ulp_mapper_cache_tbl_params_get(uint32_t tbl_idx)\n@@ -132,6 +200,16 @@ ulp_mapper_cache_tbl_params_get(uint32_t tbl_idx)\n \treturn &ulp_cache_tbl_params[tbl_idx];\n }\n \n+/* Retrieve the global template table */\n+static uint32_t *\n+ulp_mapper_glb_template_table_get(uint32_t *num_entries)\n+{\n+\tif (!num_entries)\n+\t\treturn NULL;\n+\t*num_entries = BNXT_ULP_GLB_TEMPLATE_TBL_MAX_SZ;\n+\treturn ulp_glb_template_tbl;\n+}\n+\n /*\n  * Get the size of the action property for a given index.\n  *\n@@ -659,7 +737,10 @@ ulp_mapper_result_field_process(struct bnxt_ulp_mapper_parms *parms,\n \t\t\treturn -EINVAL;\n \t\t}\n \t\tact_bit = tfp_be_to_cpu_64(act_bit);\n-\t\tact_val = ULP_BITMAP_ISSET(parms->act_bitmap->bits, act_bit);\n+\t\tif (ULP_BITMAP_ISSET(parms->act_bitmap->bits, act_bit))\n+\t\t\tact_val = 1;\n+\t\telse\n+\t\t\tact_val = 0;\n \t\tif (fld->field_bit_size > ULP_BYTE_2_BITS(sizeof(act_val))) {\n \t\t\tBNXT_TF_DBG(ERR, \"%s field size is incorrect\\n\", name);\n \t\t\treturn -EINVAL;\n@@ -1552,6 +1633,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t\t}\n \t\treturn 0; /* success */\n \t}\n+\n \t/* Perform the tf table allocation by filling the alloc params */\n \taparms.dir\t\t= tbl->direction;\n \taparms.type\t\t= tbl->resource_type;\n@@ -1616,6 +1698,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.direction\t= tbl->direction;\n \tfid_parms.resource_func\t= tbl->resource_func;\n \tfid_parms.resource_type\t= tbl->resource_type;\n+\tfid_parms.resource_sub_type = tbl->resource_sub_type;\n \tfid_parms.resource_hndl\t= aparms.idx;\n \tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \n@@ -1884,7 +1967,7 @@ ulp_mapper_if_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n }\n \n static int32_t\n-ulp_mapper_glb_resource_info_init(struct tf *tfp,\n+ulp_mapper_glb_resource_info_init(struct bnxt_ulp_context *ulp_ctx,\n \t\t\t\t  struct bnxt_ulp_mapper_data *mapper_data)\n {\n \tstruct bnxt_ulp_glb_resource_info *glb_res;\n@@ -1901,15 +1984,23 @@ ulp_mapper_glb_resource_info_init(struct tf *tfp,\n \tfor (idx = 0; idx < num_glb_res_ids; idx++) {\n \t\tswitch (glb_res[idx].resource_func) {\n \t\tcase BNXT_ULP_RESOURCE_FUNC_IDENTIFIER:\n-\t\t\trc = ulp_mapper_resource_ident_allocate(tfp,\n+\t\t\trc = ulp_mapper_resource_ident_allocate(ulp_ctx,\n \t\t\t\t\t\t\t\tmapper_data,\n \t\t\t\t\t\t\t\t&glb_res[idx]);\n \t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE:\n+\t\t\trc = ulp_mapper_resource_index_tbl_alloc(ulp_ctx,\n+\t\t\t\t\t\t\t\t mapper_data,\n+\t\t\t\t\t\t\t\t &glb_res[idx]);\n+\t\t\tbreak;\n \t\tdefault:\n \t\t\tBNXT_TF_DBG(ERR, \"Global resource %x not supported\\n\",\n \t\t\t\t    glb_res[idx].resource_func);\n+\t\t\trc = -EINVAL;\n \t\t\tbreak;\n \t\t}\n+\t\tif (rc)\n+\t\t\treturn rc;\n \t}\n \treturn rc;\n }\n@@ -2125,7 +2216,9 @@ ulp_mapper_glb_resource_info_deinit(struct bnxt_ulp_context *ulp_ctx,\n \t\t\tres.resource_func = ent->resource_func;\n \t\t\tres.direction = dir;\n \t\t\tres.resource_type = ent->resource_type;\n-\t\t\tres.resource_hndl = ent->resource_hndl;\n+\t\t\t/*convert it from BE to cpu */\n+\t\t\tres.resource_hndl =\n+\t\t\t\ttfp_be_to_cpu_64(ent->resource_hndl);\n \t\t\tulp_mapper_resource_free(ulp_ctx, &res);\n \t\t}\n \t}\n@@ -2144,6 +2237,71 @@ ulp_mapper_flow_destroy(struct bnxt_ulp_context\t*ulp_ctx, uint32_t fid)\n \t\t\t\t\t BNXT_ULP_REGULAR_FLOW_TABLE);\n }\n \n+/* Function to handle the default global templates that are allocated during\n+ * the startup and reused later.\n+ */\n+static int32_t\n+ulp_mapper_glb_template_table_init(struct bnxt_ulp_context *ulp_ctx)\n+{\n+\tuint32_t *glbl_tmpl_list;\n+\tuint32_t num_glb_tmpls, idx, dev_id;\n+\tstruct bnxt_ulp_mapper_parms parms;\n+\tstruct bnxt_ulp_mapper_data *mapper_data;\n+\tint32_t rc = 0;\n+\n+\tglbl_tmpl_list = ulp_mapper_glb_template_table_get(&num_glb_tmpls);\n+\tif (!glbl_tmpl_list || !num_glb_tmpls)\n+\t\treturn rc; /* No global templates to process */\n+\n+\t/* Get the device id from the ulp context */\n+\tif (bnxt_ulp_cntxt_dev_id_get(ulp_ctx, &dev_id)) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid ulp context\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tmapper_data = bnxt_ulp_cntxt_ptr2_mapper_data_get(ulp_ctx);\n+\tif (!mapper_data) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get the ulp mapper data\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t/* Iterate the global resources and process each one */\n+\tfor (idx = 0; idx < num_glb_tmpls; idx++) {\n+\t\t/* Initialize the parms structure */\n+\t\tmemset(&parms, 0, sizeof(parms));\n+\t\tparms.tfp = bnxt_ulp_cntxt_tfp_get(ulp_ctx);\n+\t\tparms.ulp_ctx = ulp_ctx;\n+\t\tparms.dev_id = dev_id;\n+\t\tparms.mapper_data = mapper_data;\n+\n+\t\t/* Get the class table entry from dev id and class id */\n+\t\tparms.class_tid = glbl_tmpl_list[idx];\n+\t\tparms.ctbls = ulp_mapper_class_tbl_list_get(parms.dev_id,\n+\t\t\t\t\t\t\t    parms.class_tid,\n+\t\t\t\t\t\t\t    &parms.num_ctbls,\n+\t\t\t\t\t\t\t    &parms.tbl_idx);\n+\t\tif (!parms.ctbls || !parms.num_ctbls) {\n+\t\t\tBNXT_TF_DBG(ERR, \"No class tables for %d:%d\\n\",\n+\t\t\t\t    parms.dev_id, parms.class_tid);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\tparms.device_params = bnxt_ulp_device_params_get(parms.dev_id);\n+\t\tif (!parms.device_params) {\n+\t\t\tBNXT_TF_DBG(ERR, \"No class tables for %d:%d\\n\",\n+\t\t\t\t    parms.dev_id, parms.class_tid);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\trc = ulp_mapper_class_tbls_process(&parms);\n+\t\tif (rc) {\n+\t\t\tBNXT_TF_DBG(ERR,\n+\t\t\t\t    \"class tables failed creation for %d:%d\\n\",\n+\t\t\t\t    parms.dev_id, parms.class_tid);\n+\t\t\treturn rc;\n+\t\t}\n+\t}\n+\treturn rc;\n+}\n+\n /* Function to handle the mapping of the Flow to be compatible\n  * with the underlying hardware.\n  */\n@@ -2316,7 +2474,7 @@ ulp_mapper_init(struct bnxt_ulp_context *ulp_ctx)\n \t}\n \n \t/* Allocate the global resource ids */\n-\trc = ulp_mapper_glb_resource_info_init(tfp, data);\n+\trc = ulp_mapper_glb_resource_info_init(ulp_ctx, data);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Failed to initialize global resource ids\\n\");\n \t\tgoto error;\n@@ -2344,6 +2502,12 @@ ulp_mapper_init(struct bnxt_ulp_context *ulp_ctx)\n \t\t}\n \t}\n \n+\trc = ulp_mapper_glb_template_table_init(ulp_ctx);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to initialize global templates\\n\");\n+\t\tgoto error;\n+\t}\n+\n \treturn 0;\n error:\n \t/* Ignore the return code in favor of returning the original error. */\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h\nindex 0215a5dde..7c0dc5ee4 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h\n@@ -26,6 +26,7 @@\n #define BNXT_ULP_ACT_HID_MASK 255\n #define BNXT_ULP_CACHE_TBL_IDENT_MAX_NUM 2\n #define BNXT_ULP_GLB_RESOURCE_INFO_TBL_MAX_SZ 3\n+#define BNXT_ULP_GLB_TEMPLATE_TBL_MAX_SZ 0\n \n enum bnxt_ulp_action_bit {\n \tBNXT_ULP_ACTION_BIT_MARK             = 0x0000000000000001,\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c\nindex 2efd11447..beca3baa7 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c\n@@ -546,3 +546,6 @@ uint32_t bnxt_ulp_encap_vtag_map[] = {\n \t[1] = BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_1_ENCAP_PRI,\n \t[2] = BNXT_ULP_SYM_ECV_VTAG_TYPE_ADD_2_ENCAP_PRI\n };\n+\n+uint32_t ulp_glb_template_tbl[] = {\n+};\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\nindex a3ddd33fd..4bcd02ba2 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\n@@ -299,4 +299,10 @@ extern struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[];\n  */\n extern struct bnxt_ulp_cache_tbl_params ulp_cache_tbl_params[];\n \n+/*\n+ * The ulp_global template table is used to initialize default entries\n+ * that could be reused by other templates.\n+ */\n+extern uint32_t ulp_glb_template_tbl[];\n+\n #endif /* _ULP_TEMPLATE_STRUCT_H_ */\n",
    "prefixes": [
        "v2",
        "37/51"
    ]
}