get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 93590,
    "url": "http://patches.dpdk.org/api/patches/93590/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210530085929.29695-49-venkatkumar.duvvuru@broadcom.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20210530085929.29695-49-venkatkumar.duvvuru@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210530085929.29695-49-venkatkumar.duvvuru@broadcom.com",
    "date": "2021-05-30T08:59:19",
    "name": "[48/58] net/bnxt: add shared session support to ULP",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d63741b57eb16709d74ca31b68847a83e5a1cc62",
    "submitter": {
        "id": 1635,
        "url": "http://patches.dpdk.org/api/people/1635/?format=api",
        "name": "Venkat Duvvuru",
        "email": "venkatkumar.duvvuru@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "http://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20210530085929.29695-49-venkatkumar.duvvuru@broadcom.com/mbox/",
    "series": [
        {
            "id": 17161,
            "url": "http://patches.dpdk.org/api/series/17161/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=17161",
            "date": "2021-05-30T08:58:31",
            "name": "enhancements to host based flow table management",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/17161/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/93590/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/93590/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 mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 27DA3A0524;\n\tSun, 30 May 2021 11:06:46 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 3807E4111D;\n\tSun, 30 May 2021 11:01:57 +0200 (CEST)",
            "from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com\n [192.19.11.229]) by mails.dpdk.org (Postfix) with ESMTP id 401B2410F0\n for <dev@dpdk.org>; Sun, 30 May 2021 11:01:55 +0200 (CEST)",
            "from S60.dhcp.broadcom.net (unknown [10.123.66.170])\n (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n (No client certificate requested)\n by relay.smtp-ext.broadcom.com (Postfix) with ESMTPS id D0CA57DAF;\n Sun, 30 May 2021 02:01:53 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com D0CA57DAF",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1622365314;\n bh=SRGLuVbkNFXujfT/AcN5km3BOh9N2N/j0Wbh/UlFPxU=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=m9waqH7EhgXNUrEND0+WLNaTixPPyF7LhCY55q7vNNzknBsP8Mr4n8blTU7ZO78Jk\n s8TNKw4zUVdVeDz4IdQIx7uDtu3o10pWPBl/wSS/+rfTdB9NDhsoE/KJzTJuLYL8Xj\n 5mRLZFG6W0dJZMUESTIp1/+L2pi2SFp94o8Cyv9s=",
        "From": "Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "Mike Baucom <michael.baucom@broadcom.com>,\n Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>",
        "Date": "Sun, 30 May 2021 14:29:19 +0530",
        "Message-Id": "<20210530085929.29695-49-venkatkumar.duvvuru@broadcom.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20210530085929.29695-1-venkatkumar.duvvuru@broadcom.com>",
        "References": "<20210530085929.29695-1-venkatkumar.duvvuru@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH 48/58] net/bnxt: add shared session support to ULP",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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: Mike Baucom <michael.baucom@broadcom.com>\n\nShared session permits cooperative sharing of prescribed resources\nbetween applications.\n\n- devargs added for app-id in order to enable sharing session\n  resources across applications\n- shared session management added\n- tf resource reservations are now app and device dependent\n\nSigned-off-by: Mike Baucom <michael.baucom@broadcom.com>\nSigned-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>\nReviewed-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\n---\n drivers/net/bnxt/bnxt.h                       |    2 +\n drivers/net/bnxt/bnxt_ethdev.c                |   50 +\n drivers/net/bnxt/tf_ulp/bnxt_ulp.c            |  645 +++--\n drivers/net/bnxt/tf_ulp/bnxt_ulp.h            |   39 +\n drivers/net/bnxt/tf_ulp/ulp_mapper.c          |  186 +-\n drivers/net/bnxt/tf_ulp/ulp_mapper.h          |    1 +\n .../net/bnxt/tf_ulp/ulp_template_db_enum.h    |   13 +-\n drivers/net/bnxt/tf_ulp/ulp_template_db_tbl.c | 2177 +++++++++++++++++\n drivers/net/bnxt/tf_ulp/ulp_template_struct.h |   33 +\n 9 files changed, 2909 insertions(+), 237 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h\nindex 246f51fddf..9309eb68b7 100644\n--- a/drivers/net/bnxt/bnxt.h\n+++ b/drivers/net/bnxt/bnxt.h\n@@ -831,9 +831,11 @@ struct bnxt {\n \tuint16_t\t\tport_svif;\n \n \tstruct tf\t\ttfp;\n+\tstruct tf\t\ttfp_shared;\n \tstruct bnxt_ulp_context\t*ulp_ctx;\n \tstruct bnxt_flow_stat_info *flow_stat;\n \tuint16_t\t\tmax_num_kflows;\n+\tuint8_t\t\t\tapp_id;\n \tuint16_t\t\ttx_cfa_action;\n };\n \ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 1c0eeb76b7..fdde9b2720 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -97,6 +97,7 @@ static const struct rte_pci_id bnxt_pci_id_map[] = {\n #define BNXT_DEVARG_REP_Q_F2R  \"rep-q-f2r\"\n #define BNXT_DEVARG_REP_FC_R2F  \"rep-fc-r2f\"\n #define BNXT_DEVARG_REP_FC_F2R  \"rep-fc-f2r\"\n+#define BNXT_DEVARG_APP_ID\t\"app-id\"\n \n static const char *const bnxt_dev_args[] = {\n \tBNXT_DEVARG_REPRESENTOR,\n@@ -109,6 +110,7 @@ static const char *const bnxt_dev_args[] = {\n \tBNXT_DEVARG_REP_Q_F2R,\n \tBNXT_DEVARG_REP_FC_R2F,\n \tBNXT_DEVARG_REP_FC_F2R,\n+\tBNXT_DEVARG_APP_ID,\n \tNULL\n };\n \n@@ -118,6 +120,11 @@ static const char *const bnxt_dev_args[] = {\n  */\n #define\tBNXT_DEVARG_ACCUM_STATS_INVALID(accum_stats)\t((accum_stats) > 1)\n \n+/*\n+ * app-id = an non-negative 8-bit number\n+ */\n+#define BNXT_DEVARG_APP_ID_INVALID(val)\t\t\t((val) > 255)\n+\n /*\n  * flow_xstat == false to disable the feature\n  * flow_xstat == true to enable the feature\n@@ -5351,6 +5358,42 @@ bnxt_parse_devarg_max_num_kflows(__rte_unused const char *key,\n \treturn 0;\n }\n \n+static int\n+bnxt_parse_devarg_app_id(__rte_unused const char *key,\n+\t\t\t\t const char *value, void *opaque_arg)\n+{\n+\tstruct bnxt *bp = opaque_arg;\n+\tunsigned long app_id;\n+\tchar *end = NULL;\n+\n+\tif (!value || !opaque_arg) {\n+\t\tPMD_DRV_LOG(ERR,\n+\t\t\t    \"Invalid parameter passed to app-id \"\n+\t\t\t    \"devargs.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tapp_id = strtoul(value, &end, 10);\n+\tif (end == NULL || *end != '\\0' ||\n+\t    (app_id == ULONG_MAX && errno == ERANGE)) {\n+\t\tPMD_DRV_LOG(ERR,\n+\t\t\t    \"Invalid parameter passed to app_id \"\n+\t\t\t    \"devargs.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tif (BNXT_DEVARG_APP_ID_INVALID(app_id)) {\n+\t\tPMD_DRV_LOG(ERR, \"Invalid app-id(%d) devargs.\\n\",\n+\t\t\t    (uint16_t)app_id);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tbp->app_id = app_id;\n+\tPMD_DRV_LOG(INFO, \"app-id=%d feature enabled.\\n\", (uint16_t)app_id);\n+\n+\treturn 0;\n+}\n+\n static int\n bnxt_parse_devarg_rep_is_pf(__rte_unused const char *key,\n \t\t\t    const char *value, void *opaque_arg)\n@@ -5612,6 +5655,13 @@ bnxt_parse_dev_args(struct bnxt *bp, struct rte_devargs *devargs)\n \t\tgoto err;\n \n err:\n+\t/*\n+\t * Handler for \"app-id\" devarg.\n+\t * Invoked as for ex: \"-a 000:00:0d.0,app-id=1\"\n+\t */\n+\trte_kvargs_process(kvlist, BNXT_DEVARG_APP_ID,\n+\t\t\t   bnxt_parse_devarg_app_id, bp);\n+\n \trte_kvargs_free(kvlist);\n \treturn ret;\n }\ndiff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c\nindex dd992a246b..632334674c 100644\n--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c\n+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c\n@@ -68,240 +68,336 @@ bnxt_ulp_devid_get(struct bnxt *bp,\n \treturn 0;\n }\n \n+struct bnxt_ulp_app_capabilities_info *\n+bnxt_ulp_app_cap_list_get(uint32_t *num_entries)\n+{\n+\tif (!num_entries)\n+\t\treturn NULL;\n+\t*num_entries = BNXT_ULP_APP_CAP_TBL_MAX_SZ;\n+\treturn ulp_app_cap_info_list;\n+}\n+\n+struct bnxt_ulp_resource_resv_info *\n+bnxt_ulp_resource_resv_list_get(uint32_t *num_entries)\n+{\n+\tif (!num_entries)\n+\t\treturn NULL;\n+\t*num_entries = BNXT_ULP_RESOURCE_RESV_LIST_MAX_SZ;\n+\treturn ulp_resource_resv_list;\n+}\n+\n+struct bnxt_ulp_glb_resource_info *\n+bnxt_ulp_app_glb_resource_info_list_get(uint32_t *num_entries)\n+{\n+\tif (!num_entries)\n+\t\treturn NULL;\n+\t*num_entries = BNXT_ULP_APP_GLB_RESOURCE_TBL_MAX_SZ;\n+\treturn ulp_app_glb_resource_tbl;\n+}\n+\n static int32_t\n-bnxt_ulp_tf_session_resources_get(struct bnxt *bp,\n-\t\t\t\t  struct tf_session_resources *res)\n+bnxt_ulp_tf_resources_get(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\t  struct tf_session_resources *res)\n {\n-\tuint32_t dev_id;\n+\tstruct bnxt_ulp_resource_resv_info *info = NULL;\n+\tuint32_t dev_id, res_type, i, num;\n+\tenum tf_dir dir;\n+\tuint8_t app_id;\n+\tint32_t rc = 0;\n+\n+\tif (!ulp_ctx || !res) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid arguments to get resources.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tinfo = bnxt_ulp_resource_resv_list_get(&num);\n+\tif (!info) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get resource reservation list.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_app_id_get(ulp_ctx, &app_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get the app id from ulp.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_dev_id_get(ulp_ctx, &dev_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get the device id from ulp.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tfor (i = 0; i < num; i++) {\n+\t\tif (app_id != info[i].app_id || dev_id != info[i].device_id)\n+\t\t\tcontinue;\n+\t\tdir = info[i].direction;\n+\t\tres_type = info[i].resource_type;\n+\n+\t\tswitch (info[i].resource_func) {\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_IDENTIFIER:\n+\t\t\tres->ident_cnt[dir].cnt[res_type] = info[i].count;\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE:\n+\t\t\tres->tbl_cnt[dir].cnt[res_type] = info[i].count;\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE:\n+\t\t\tres->tcam_cnt[dir].cnt[res_type] = info[i].count;\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_EM_TABLE:\n+\t\t\tres->em_cnt[dir].cnt[res_type] = info[i].count;\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tbreak;\n+\t\t}\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static int32_t\n+bnxt_ulp_tf_shared_session_resources_get(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\t\t\t struct tf_session_resources *res)\n+{\n+\tstruct bnxt_ulp_glb_resource_info *info;\n+\tuint32_t dev_id, res_type, i, num;\n+\tenum tf_dir dir;\n+\tuint8_t app_id;\n \tint32_t rc;\n-\tuint16_t *tmp_cnt;\n \n-\trc = bnxt_ulp_cntxt_dev_id_get(bp->ulp_ctx, &dev_id);\n+\trc = bnxt_ulp_cntxt_app_id_get(ulp_ctx, &app_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get the app id from ulp.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_dev_id_get(ulp_ctx, &dev_id);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Unable to get device id from ulp.\\n\");\n \t\treturn -EINVAL;\n \t}\n \n-\tswitch (dev_id) {\n-\tcase BNXT_ULP_DEVICE_ID_WH_PLUS:\n-\t\t/** RX **/\n-\t\t/* Identifiers */\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_L2_CTXT_HIGH] = 422;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_L2_CTXT_LOW] = 6;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_WC_PROF] = 192;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_PROF_FUNC] = 64;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_EM_PROF] = 192;\n-\n-\t\t/* Table Types */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_FULL_ACT_RECORD] = 8192;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_STATS_64] = 8192;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_MODIFY_IPV4] = 1023;\n-\n-\t\t/* ENCAP */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_ENCAP_8B] = 511;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_ENCAP_16B] = 63;\n-\n-\t\t/* TCAMs */\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] =\n-\t\t\t422;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] =\n-\t\t\t6;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_PROF_TCAM] = 960;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_WC_TCAM] = 88;\n-\n-\t\t/* EM */\n-\t\tres->em_cnt[TF_DIR_RX].cnt[TF_EM_TBL_TYPE_EM_RECORD] = 13168;\n-\n-\t\t/* EEM */\n-\t\tres->em_cnt[TF_DIR_RX].cnt[TF_EM_TBL_TYPE_TBL_SCOPE] = 1;\n-\n-\t\t/* SP */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_SP_SMAC] = 255;\n-\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_MIRROR_CONFIG] = 1;\n-\n-\t\t/** TX **/\n-\t\t/* Identifiers */\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_L2_CTXT_HIGH] = 292;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_L2_CTXT_LOW] = 148;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_WC_PROF] = 192;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_PROF_FUNC] = 64;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_EM_PROF] = 192;\n-\n-\t\t/* Table Types */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_FULL_ACT_RECORD] = 8192;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_STATS_64] = 8192;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_MODIFY_IPV4] = 1023;\n-\n-\t\t/* ENCAP */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_ENCAP_64B] = 511;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_ENCAP_16B] = 223;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_ENCAP_8B] = 255;\n-\n-\t\t/* TCAMs */\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] =\n-\t\t\t292;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] =\n-\t\t\t144;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_PROF_TCAM] = 960;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_WC_TCAM] = 928;\n-\n-\t\t/* EM */\n-\t\tres->em_cnt[TF_DIR_TX].cnt[TF_EM_TBL_TYPE_EM_RECORD] = 15232;\n-\n-\t\t/* EEM */\n-\t\tres->em_cnt[TF_DIR_TX].cnt[TF_EM_TBL_TYPE_TBL_SCOPE] = 1;\n-\n-\t\t/* SP */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_SP_SMAC_IPV4] = 488;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_SP_SMAC_IPV6] = 511;\n-\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_MIRROR_CONFIG] = 1;\n+\t/* Make sure the resources are zero before accumulating. */\n+\tmemset(res, 0, sizeof(struct tf_session_resources));\n \n+\t/* Get the list and tally the resources. */\n+\tinfo = bnxt_ulp_app_glb_resource_info_list_get(&num);\n+\tif (!info) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get app global resource list\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\tfor (i = 0; i < num; i++) {\n+\t\tif (dev_id != info[i].device_id || app_id != info[i].app_id)\n+\t\t\tcontinue;\n+\t\tdir = info[i].direction;\n+\t\tres_type = info[i].resource_type;\n+\n+\t\tswitch (info[i].resource_func) {\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_IDENTIFIER:\n+\t\t\tres->ident_cnt[dir].cnt[res_type]++;\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE:\n+\t\t\tres->tbl_cnt[dir].cnt[res_type]++;\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE:\n+\t\t\tres->tcam_cnt[dir].cnt[res_type]++;\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_EM_TABLE:\n+\t\t\tres->em_cnt[dir].cnt[res_type]++;\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tBNXT_TF_DBG(ERR, \"Unknown resource func (0x%x)\\n,\",\n+\t\t\t\t    info[i].resource_func);\n+\t\t\tcontinue;\n+\t\t}\n+\t}\n+\n+\treturn 0;\n+}\n+\n+int32_t\n+bnxt_ulp_cntxt_app_caps_init(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\t     uint8_t app_id, uint32_t dev_id)\n+{\n+\tstruct bnxt_ulp_app_capabilities_info *info;\n+\tuint32_t num = 0;\n+\tuint16_t i;\n+\tbool found = false;\n+\n+\tif (ULP_APP_DEV_UNSUPPORTED_ENABLED(ulp_ctx->cfg_data->ulp_flags)) {\n+\t\tBNXT_TF_DBG(ERR, \"APP ID %d, Device ID: 0x%x not supported.\\n\",\n+\t\t\t    app_id, dev_id);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tinfo = bnxt_ulp_app_cap_list_get(&num);\n+\tif (!info || !num) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get app capabilities.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tfor (i = 0; i < num; i++) {\n+\t\tif (info[i].app_id != app_id || info[i].device_id != dev_id)\n+\t\t\tcontinue;\n+\t\tfound = true;\n+\t\tif (info[i].flags & BNXT_ULP_APP_CAP_SHARED_EN)\n+\t\t\tulp_ctx->cfg_data->ulp_flags |=\n+\t\t\t\tBNXT_ULP_SHARED_SESSION_ENABLED;\n+\t}\n+\tif (!found) {\n+\t\tBNXT_TF_DBG(ERR, \"APP ID %d, Device ID: 0x%x not supported.\\n\",\n+\t\t\t    app_id, dev_id);\n+\t\tulp_ctx->cfg_data->ulp_flags |= BNXT_ULP_APP_DEV_UNSUPPORTED;\n+\t\treturn -EINVAL;\n+\t}\n+\n+\treturn 0;\n+}\n+\n+static void\n+ulp_ctx_shared_session_close(struct bnxt *bp,\n+\t\t\t     struct bnxt_ulp_session_state *session)\n+{\n+\tstruct tf *tfp;\n+\tint32_t rc;\n+\n+\tif (!bnxt_ulp_cntxt_shared_session_enabled(bp->ulp_ctx))\n+\t\treturn;\n+\n+\ttfp = bnxt_ulp_cntxt_shared_tfp_get(bp->ulp_ctx);\n+\tif (!tfp) {\n+\t\t/*\n+\t\t * Log it under debug since this is likely a case of the\n+\t\t * shared session not being created.  For example, a failed\n+\t\t * initialization.\n+\t\t */\n+\t\tBNXT_TF_DBG(DEBUG, \"Failed to get shared tfp on close.\\n\");\n+\t\treturn;\n+\t}\n+\trc = tf_close_session(tfp);\n+\tif (rc)\n+\t\tBNXT_TF_DBG(ERR, \"Failed to close the shared session rc=%d.\\n\",\n+\t\t\t    rc);\n+\t(void)bnxt_ulp_cntxt_shared_tfp_set(bp->ulp_ctx, NULL);\n+\n+\tsession->g_shared_tfp.session = NULL;\n+}\n+\n+static int32_t\n+ulp_ctx_shared_session_open(struct bnxt *bp,\n+\t\t\t    struct bnxt_ulp_session_state *session)\n+{\n+\tstruct rte_eth_dev *ethdev = bp->eth_dev;\n+\tstruct tf_session_resources *resources;\n+\tstruct tf_open_session_parms parms;\n+\tsize_t copy_num_bytes;\n+\tuint32_t ulp_dev_id;\n+\tint32_t\trc = 0;\n+\n+\t/* only perform this if shared session is enabled. */\n+\tif (!bnxt_ulp_cntxt_shared_session_enabled(bp->ulp_ctx))\n+\t\treturn 0;\n+\n+\tmemset(&parms, 0, sizeof(parms));\n+\n+\trc = rte_eth_dev_get_name_by_port(ethdev->data->port_id,\n+\t\t\t\t\t  parms.ctrl_chan_name);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid port %d, rc = %d\\n\",\n+\t\t\t    ethdev->data->port_id, rc);\n+\t\treturn rc;\n+\t}\n+\tresources = &parms.resources;\n+\n+\t/*\n+\t * Need to account for size of ctrl_chan_name and 1 extra for Null\n+\t * terminator\n+\t */\n+\tcopy_num_bytes = sizeof(parms.ctrl_chan_name) -\n+\t\tstrlen(parms.ctrl_chan_name) - 1;\n+\n+\t/* Build the ctrl_chan_name with shared token */\n+\tstrncat(parms.ctrl_chan_name, \"-tf_shared\", copy_num_bytes);\n+\n+\trc = bnxt_ulp_tf_shared_session_resources_get(bp->ulp_ctx, resources);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get shared resource count.\\n\");\n+\t\treturn rc;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_dev_id_get(bp->ulp_ctx, &ulp_dev_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get device id from ulp.\\n\");\n+\t\treturn rc;\n+\t}\n+\n+\tswitch (ulp_dev_id) {\n+\tcase BNXT_ULP_DEVICE_ID_WH_PLUS:\n+\t\tparms.device_type = TF_DEVICE_TYPE_WH;\n \t\tbreak;\n \tcase BNXT_ULP_DEVICE_ID_STINGRAY:\n-\t\t/** RX **/\n-\t\t/* Identifiers */\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_L2_CTXT_HIGH] = 315;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_L2_CTXT_LOW] = 6;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_WC_PROF] = 192;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_PROF_FUNC] = 64;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_EM_PROF] = 192;\n-\n-\t\t/* Table Types */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_FULL_ACT_RECORD] = 8192;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_STATS_64] = 16384;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_MODIFY_IPV4] = 1023;\n-\n-\t\t/* ENCAP */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_ENCAP_8B] = 511;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_ENCAP_16B] = 63;\n-\n-\t\t/* TCAMs */\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] =\n-\t\t\t315;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] =\n-\t\t\t6;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_PROF_TCAM] = 960;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_WC_TCAM] = 112;\n-\n-\t\t/* EM */\n-\t\tres->em_cnt[TF_DIR_RX].cnt[TF_EM_TBL_TYPE_EM_RECORD] = 13200;\n-\n-\t\t/* EEM */\n-\t\tres->em_cnt[TF_DIR_RX].cnt[TF_EM_TBL_TYPE_TBL_SCOPE] = 1;\n-\n-\t\t/* SP */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_SP_SMAC] = 256;\n-\n-\t\t/** TX **/\n-\t\t/* Identifiers */\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_L2_CTXT_HIGH] = 292;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_L2_CTXT_LOW] = 127;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_WC_PROF] = 192;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_PROF_FUNC] = 64;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_EM_PROF] = 192;\n-\n-\t\t/* Table Types */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_FULL_ACT_RECORD] = 8192;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_STATS_64] = 16384;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_MODIFY_IPV4] = 1023;\n-\n-\t\t/* ENCAP */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_ENCAP_64B] = 367;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_ENCAP_16B] = 223;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_ENCAP_8B] = 255;\n-\n-\t\t/* TCAMs */\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] =\n-\t\t\t292;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] =\n-\t\t\t127;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_PROF_TCAM] = 960;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_WC_TCAM] = 928;\n-\n-\t\t/* EM */\n-\t\tres->em_cnt[TF_DIR_TX].cnt[TF_EM_TBL_TYPE_EM_RECORD] = 15232;\n-\n-\t\t/* EEM */\n-\t\tres->em_cnt[TF_DIR_TX].cnt[TF_EM_TBL_TYPE_TBL_SCOPE] = 1;\n-\n-\t\t/* SP */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_SP_SMAC_IPV4] = 488;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_SP_SMAC_IPV6] = 512;\n+\t\tparms.device_type = TF_DEVICE_TYPE_SR;\n \t\tbreak;\n \tcase BNXT_ULP_DEVICE_ID_THOR:\n-\t\t/** RX **/\n-\t\t/* Identifiers */\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_L2_CTXT_HIGH] = 26;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_L2_CTXT_LOW] = 6;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_WC_PROF] = 32;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_PROF_FUNC] = 32;\n-\t\tres->ident_cnt[TF_DIR_RX].cnt[TF_IDENT_TYPE_EM_PROF] = 32;\n-\n-\t\t/* Table Types */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_FULL_ACT_RECORD] = 1024;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_STATS_64] = 512;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_MIRROR_CONFIG] = 14;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_EM_FKB] = 32;\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_WC_FKB] = 32;\n-\n-\t\t/* ENCAP */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_ENCAP_64B] = 64;\n-\n-\t\t/* TCAMs */\n-\t\ttmp_cnt = &res->tcam_cnt[TF_DIR_RX].cnt[0];\n-\t\ttmp_cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] = 300;\n-\t\ttmp_cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] = 6;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_PROF_TCAM] = 128;\n-\t\tres->tcam_cnt[TF_DIR_RX].cnt[TF_TCAM_TBL_TYPE_WC_TCAM] = 112;\n-\n-\t\t/* EM */\n-\t\tres->em_cnt[TF_DIR_RX].cnt[TF_EM_TBL_TYPE_EM_RECORD] = 13200;\n-\n-\t\t/* SP */\n-\t\tres->tbl_cnt[TF_DIR_RX].cnt[TF_TBL_TYPE_ACT_SP_SMAC_IPV4] = 64;\n-\n-\t\t/** TX **/\n-\t\t/* Identifiers */\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_L2_CTXT_HIGH] = 26;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_L2_CTXT_LOW] = 26;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_WC_PROF] = 32;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_PROF_FUNC] = 63;\n-\t\tres->ident_cnt[TF_DIR_TX].cnt[TF_IDENT_TYPE_EM_PROF] = 32;\n-\n-\t\t/* Table Types */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_FULL_ACT_RECORD] = 1024;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_STATS_64] = 512;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_MIRROR_CONFIG] = 14;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_EM_FKB] = 32;\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_WC_FKB] = 32;\n-\n-\t\t/* ENCAP */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_ENCAP_64B] = 64;\n-\n-\t\t/* TCAMs */\n-\t\ttmp_cnt = &res->tcam_cnt[TF_DIR_TX].cnt[0];\n-\n-\t\ttmp_cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] = 200;\n-\t\ttmp_cnt[TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] = 110;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_PROF_TCAM] = 128;\n-\t\tres->tcam_cnt[TF_DIR_TX].cnt[TF_TCAM_TBL_TYPE_WC_TCAM] = 128;\n-\n-\t\t/* EM */\n-\t\tres->em_cnt[TF_DIR_TX].cnt[TF_EM_TBL_TYPE_EM_RECORD] = 15232;\n-\n-\t\t/* SP */\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_ACT_SP_SMAC_IPV4] = 100;\n-\n-\t\tres->tbl_cnt[TF_DIR_TX].cnt[TF_TBL_TYPE_MIRROR_CONFIG] = 1;\n-\n+\t\tparms.device_type = TF_DEVICE_TYPE_THOR;\n \t\tbreak;\n \tdefault:\n-\t\treturn -EINVAL;\n+\t\tBNXT_TF_DBG(ERR, \"Unable to determine device for \"\n+\t\t\t    \"opening session.\\n\");\n+\t\treturn rc;\n \t}\n \n-\treturn 0;\n+\tparms.shadow_copy = true;\n+\tparms.bp = bp;\n+\n+\t/*\n+\t * Open the session here, but the collect the resources during the\n+\t * mapper initialization.\n+\t */\n+\trc = tf_open_session(&bp->tfp_shared, &parms);\n+\tif (rc)\n+\t\treturn rc;\n+\n+\tif (parms.shared_session_creator)\n+\t\tBNXT_TF_DBG(DEBUG, \"Shared session creator.\\n\");\n+\telse\n+\t\tBNXT_TF_DBG(DEBUG, \"Shared session attached.\\n\");\n+\n+\t/* Save the shared session in global data */\n+\tif (!session->g_shared_tfp.session)\n+\t\tsession->g_shared_tfp.session = bp->tfp_shared.session;\n+\n+\trc = bnxt_ulp_cntxt_shared_tfp_set(bp->ulp_ctx, &bp->tfp_shared);\n+\tif (rc)\n+\t\tBNXT_TF_DBG(ERR, \"Failed to add shared tfp to ulp (%d)\\n\", rc);\n+\n+\treturn rc;\n+}\n+\n+static int32_t\n+ulp_ctx_shared_session_attach(struct bnxt *bp,\n+\t\t\t      struct bnxt_ulp_session_state *session)\n+{\n+\tint32_t rc = 0;\n+\n+\t/* Simply return success if shared session not enabled */\n+\tif (bnxt_ulp_cntxt_shared_session_enabled(bp->ulp_ctx)) {\n+\t\tbp->tfp_shared.session = session->g_shared_tfp.session;\n+\t\trc = ulp_ctx_shared_session_open(bp, session);\n+\t}\n+\n+\treturn rc;\n+}\n+\n+static void\n+ulp_ctx_shared_session_detach(struct bnxt *bp)\n+{\n+\tif (bnxt_ulp_cntxt_shared_session_enabled(bp->ulp_ctx)) {\n+\t\tif (bp->tfp_shared.session) {\n+\t\t\ttf_close_session(&bp->tfp_shared);\n+\t\t\tbp->tfp_shared.session = NULL;\n+\t\t}\n+\t}\n }\n \n /*\n@@ -360,7 +456,7 @@ ulp_ctx_session_open(struct bnxt *bp,\n \t}\n \n \tresources = &params.resources;\n-\trc = bnxt_ulp_tf_session_resources_get(bp, resources);\n+\trc = bnxt_ulp_tf_resources_get(bp->ulp_ctx, resources);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Unable to determine tf resources for \"\n \t\t\t    \"session open.\\n\");\n@@ -557,6 +653,9 @@ ulp_ctx_deinit(struct bnxt *bp,\n \t/* close the tf session */\n \tulp_ctx_session_close(bp, session);\n \n+\t/* The shared session must be closed last. */\n+\tulp_ctx_shared_session_close(bp, session);\n+\n \t/* Free the contents */\n \tif (session->cfg_data) {\n \t\trte_free(session->cfg_data);\n@@ -601,6 +700,29 @@ ulp_ctx_init(struct bnxt *bp,\n \t\tgoto error_deinit;\n \t}\n \n+\trc = bnxt_ulp_cntxt_app_id_set(bp->ulp_ctx, bp->app_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to set app_id for ULP init.\\n\");\n+\t\tgoto error_deinit;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_app_caps_init(bp->ulp_ctx, bp->app_id, devid);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to set capabilities for \"\n+\t\t\t    \" app(%x)/dev(%x)\\n\", bp->app_id, devid);\n+\t\tgoto error_deinit;\n+\t}\n+\n+\t/*\n+\t * Shared session must be created before first regular session but after\n+\t * the ulp_ctx is valid.\n+\t */\n+\trc = ulp_ctx_shared_session_open(bp, session);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to open shared session (%d)\\n\", rc);\n+\t\tgoto error_deinit;\n+\t}\n+\n \t/* Open the ulp session. */\n \trc = ulp_ctx_session_open(bp, session);\n \tif (rc)\n@@ -677,6 +799,8 @@ ulp_ctx_attach(struct bnxt *bp,\n \t       struct bnxt_ulp_session_state *session)\n {\n \tint32_t rc = 0;\n+\tuint32_t flags, dev_id;\n+\tuint8_t app_id;\n \n \t/* Increment the ulp context data reference count usage. */\n \tbp->ulp_ctx->cfg_data = session->cfg_data;\n@@ -685,6 +809,29 @@ ulp_ctx_attach(struct bnxt *bp,\n \t/* update the session details in bnxt tfp */\n \tbp->tfp.session = session->g_tfp->session;\n \n+\t/*\n+\t * The supported flag will be set during the init. Use it now to\n+\t * know if we should go through the attach.\n+\t */\n+\trc = bnxt_ulp_cntxt_app_id_get(bp->ulp_ctx, &app_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable to get the app id from ulp.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_dev_id_get(bp->ulp_ctx, &dev_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Unable do get the dev_id.\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tflags = bp->ulp_ctx->cfg_data->ulp_flags;\n+\tif (ULP_APP_DEV_UNSUPPORTED_ENABLED(flags)) {\n+\t\tBNXT_TF_DBG(ERR, \"APP ID %d, Device ID: 0x%x not supported.\\n\",\n+\t\t\t    app_id, dev_id);\n+\t\treturn -EINVAL;\n+\t}\n+\n \t/* Create a TF Client */\n \trc = ulp_ctx_session_open(bp, session);\n \tif (rc) {\n@@ -1126,6 +1273,18 @@ bnxt_ulp_port_init(struct bnxt *bp)\n \t\t\tBNXT_TF_DBG(ERR, \"Failed to attach the ulp context\\n\");\n \t\t\tgoto jump_to_error;\n \t\t}\n+\n+\t\t/*\n+\t\t * Attach to the shared session, must be called after the\n+\t\t * ulp_ctx_attach in order to ensure that ulp data is available\n+\t\t * for attaching.\n+\t\t */\n+\t\trc = ulp_ctx_shared_session_attach(bp, session);\n+\t\tif (rc) {\n+\t\t\tBNXT_TF_DBG(ERR,\n+\t\t\t\t    \"Failed attach to shared session (%d)\", rc);\n+\t\t\tgoto jump_to_error;\n+\t\t}\n \t} else {\n \t\trc = bnxt_ulp_init(bp, session);\n \t\tif (rc) {\n@@ -1224,6 +1383,9 @@ bnxt_ulp_port_deinit(struct bnxt *bp)\n \n \t\t\t/* close the session associated with this port */\n \t\t\tulp_ctx_detach(bp);\n+\n+\t\t\t/* always detach/close shared after the session. */\n+\t\t\tulp_ctx_shared_session_detach(bp);\n \t\t} else {\n \t\t\t/* Perform ulp ctx deinit */\n \t\t\tbnxt_ulp_deinit(bp, session);\n@@ -1264,6 +1426,31 @@ bnxt_ulp_cntxt_ptr2_mark_db_get(struct bnxt_ulp_context *ulp_ctx)\n \treturn ulp_ctx->cfg_data->mark_tbl;\n }\n \n+bool\n+bnxt_ulp_cntxt_shared_session_enabled(struct bnxt_ulp_context *ulp_ctx)\n+{\n+\treturn ULP_SHARED_SESSION_IS_ENABLED(ulp_ctx->cfg_data->ulp_flags);\n+}\n+\n+int32_t\n+bnxt_ulp_cntxt_app_id_set(struct bnxt_ulp_context *ulp_ctx, uint8_t app_id)\n+{\n+\tif (!ulp_ctx)\n+\t\treturn -EINVAL;\n+\tulp_ctx->cfg_data->app_id = app_id;\n+\treturn 0;\n+}\n+\n+int32_t\n+bnxt_ulp_cntxt_app_id_get(struct bnxt_ulp_context *ulp_ctx, uint8_t *app_id)\n+{\n+\t/* Default APP id is zero */\n+\tif (!ulp_ctx || !app_id)\n+\t\treturn -EINVAL;\n+\t*app_id = ulp_ctx->cfg_data->app_id;\n+\treturn 0;\n+}\n+\n /* Function to set the device id of the hardware. */\n int32_t\n bnxt_ulp_cntxt_dev_id_set(struct bnxt_ulp_context *ulp_ctx,\n@@ -1341,6 +1528,30 @@ bnxt_ulp_cntxt_tbl_scope_id_set(struct bnxt_ulp_context *ulp_ctx,\n \treturn -EINVAL;\n }\n \n+/* Function to set the shared tfp session details from the ulp context. */\n+int32_t\n+bnxt_ulp_cntxt_shared_tfp_set(struct bnxt_ulp_context *ulp, struct tf *tfp)\n+{\n+\tif (!ulp) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid arguments\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tulp->g_shared_tfp = tfp;\n+\treturn 0;\n+}\n+\n+/* Function to get the shared tfp session details from the ulp context. */\n+struct tf *\n+bnxt_ulp_cntxt_shared_tfp_get(struct bnxt_ulp_context *ulp)\n+{\n+\tif (!ulp) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid arguments\\n\");\n+\t\treturn NULL;\n+\t}\n+\treturn ulp->g_shared_tfp;\n+}\n+\n /* Function to set the tfp session details from the ulp context. */\n int32_t\n bnxt_ulp_cntxt_tfp_set(struct bnxt_ulp_context *ulp, struct tf *tfp)\ndiff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.h b/drivers/net/bnxt/tf_ulp/bnxt_ulp.h\nindex 854eca24c3..648fb2ab37 100644\n--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.h\n+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.h\n@@ -29,7 +29,13 @@\n \n /* defines for the ulp_flags */\n #define BNXT_ULP_VF_REP_ENABLED\t\t0x1\n+#define BNXT_ULP_SHARED_SESSION_ENABLED\t0x2\n+#define BNXT_ULP_APP_DEV_UNSUPPORTED\t0x4\n #define ULP_VF_REP_IS_ENABLED(flag)\t((flag) & BNXT_ULP_VF_REP_ENABLED)\n+#define ULP_SHARED_SESSION_IS_ENABLED(flag) ((flag) &\\\n+\t\t\t\t\t     BNXT_ULP_SHARED_SESSION_ENABLED)\n+#define ULP_APP_DEV_UNSUPPORTED_ENABLED(flag)\t((flag) &\\\n+\t\t\t\t\t\t BNXT_ULP_APP_DEV_UNSUPPORTED)\n \n enum bnxt_ulp_flow_mem_type {\n \tBNXT_ULP_FLOW_MEM_TYPE_INT = 0,\n@@ -67,11 +73,13 @@ struct bnxt_ulp_data {\n #define\tBNXT_ULP_MAX_TUN_CACHE_ENTRIES\t16\n \tstruct bnxt_tun_cache_entry\ttun_tbl[BNXT_ULP_MAX_TUN_CACHE_ENTRIES];\n \tbool\t\t\t\taccum_stats;\n+\tuint8_t\t\t\t\tapp_id;\n };\n \n struct bnxt_ulp_context {\n \tstruct bnxt_ulp_data\t*cfg_data;\n \tstruct tf\t\t*g_tfp;\n+\tstruct tf\t\t*g_shared_tfp;\n };\n \n struct bnxt_ulp_pci_info {\n@@ -86,6 +94,7 @@ struct bnxt_ulp_session_state {\n \tstruct bnxt_ulp_pci_info\t\tpci_info;\n \tstruct bnxt_ulp_data\t\t\t*cfg_data;\n \tstruct tf\t\t\t\t*g_tfp;\n+\tstruct tf\t\t\t\tg_shared_tfp;\n \tuint32_t\t\t\t\tsession_opened;\n };\n \n@@ -135,6 +144,14 @@ int32_t\n bnxt_ulp_cntxt_tbl_scope_id_get(struct bnxt_ulp_context *ulp_ctx,\n \t\t\t\tuint32_t *tbl_scope_id);\n \n+/* Function to set the tfp session details in the ulp context. */\n+int32_t\n+bnxt_ulp_cntxt_shared_tfp_set(struct bnxt_ulp_context *ulp, struct tf *tfp);\n+\n+/* Function to get the tfp session details from ulp context. */\n+struct tf *\n+bnxt_ulp_cntxt_shared_tfp_get(struct bnxt_ulp_context *ulp);\n+\n /* Function to set the tfp session details in the ulp context. */\n int32_t\n bnxt_ulp_cntxt_tfp_set(struct bnxt_ulp_context *ulp, struct tf *tfp);\n@@ -233,4 +250,26 @@ bnxt_ulp_cntxt_release_fdb_lock(struct bnxt_ulp_context\t*ulp_ctx);\n int32_t\n ulp_post_process_tun_flow(struct ulp_rte_parser_params *params);\n \n+struct bnxt_ulp_glb_resource_info *\n+bnxt_ulp_app_glb_resource_info_list_get(uint32_t *num_entries);\n+\n+int32_t\n+bnxt_ulp_cntxt_app_id_set(struct bnxt_ulp_context *ulp_ctx, uint8_t app_id);\n+\n+int32_t\n+bnxt_ulp_cntxt_app_id_get(struct bnxt_ulp_context *ulp_ctx, uint8_t *app_id);\n+\n+bool\n+bnxt_ulp_cntxt_shared_session_enabled(struct bnxt_ulp_context *ulp_ctx);\n+\n+struct bnxt_ulp_app_capabilities_info *\n+bnxt_ulp_app_cap_list_get(uint32_t *num_entries);\n+\n+int32_t\n+bnxt_ulp_cntxt_app_caps_init(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\t     uint8_t app_id, uint32_t dev_id);\n+\n+struct bnxt_ulp_resource_resv_info *\n+bnxt_ulp_resource_resv_list_get(uint32_t *num_entries);\n+\n #endif /* _BNXT_ULP_H_ */\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\nindex 60c60564c4..58104eeedf 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n@@ -58,13 +58,15 @@ static int32_t\n ulp_mapper_glb_resource_read(struct bnxt_ulp_mapper_data *mapper_data,\n \t\t\t     enum tf_dir dir,\n \t\t\t     uint16_t idx,\n-\t\t\t     uint64_t *regval)\n+\t\t\t     uint64_t *regval,\n+\t\t\t     bool *shared)\n {\n-\tif (!mapper_data || !regval ||\n+\tif (!mapper_data || !regval || !shared ||\n \t    dir >= TF_DIR_MAX || idx >= BNXT_ULP_GLB_RF_IDX_LAST)\n \t\treturn -EINVAL;\n \n \t*regval = mapper_data->glb_res_tbl[dir][idx].resource_hndl;\n+\t*shared = mapper_data->glb_res_tbl[dir][idx].shared;\n \treturn 0;\n }\n \n@@ -78,7 +80,7 @@ ulp_mapper_glb_resource_read(struct bnxt_ulp_mapper_data *mapper_data,\n static int32_t\n ulp_mapper_glb_resource_write(struct bnxt_ulp_mapper_data *data,\n \t\t\t      struct bnxt_ulp_glb_resource_info *res,\n-\t\t\t      uint64_t regval)\n+\t\t\t      uint64_t regval, bool shared)\n {\n \tstruct bnxt_ulp_mapper_glb_resource_entry *ent;\n \n@@ -92,6 +94,7 @@ ulp_mapper_glb_resource_write(struct bnxt_ulp_mapper_data *data,\n \tent->resource_func = res->resource_func;\n \tent->resource_type = res->resource_type;\n \tent->resource_hndl = regval;\n+\tent->shared = shared;\n \treturn 0;\n }\n \n@@ -129,8 +132,12 @@ ulp_mapper_resource_ident_allocate(struct bnxt_ulp_context *ulp_ctx,\n \n \t/* entries are stored as big-endian format */\n \tregval = tfp_cpu_to_be_64((uint64_t)iparms.id);\n-\t/* write to the mapper global resource */\n-\trc = ulp_mapper_glb_resource_write(mapper_data, glb_res, regval);\n+\t/*\n+\t * write to the mapper global resource\n+\t * Shared resources are never allocated through this method, so the\n+\t * shared flag is always false.\n+\t */\n+\trc = ulp_mapper_glb_resource_write(mapper_data, glb_res, regval, false);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Failed to write to global resource id\\n\");\n \t\t/* Free the identifier when update failed */\n@@ -186,8 +193,12 @@ ulp_mapper_resource_index_tbl_alloc(struct bnxt_ulp_context *ulp_ctx,\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+\t/*\n+\t * write to the mapper global resource\n+\t * Shared resources are never allocated through this method, so the\n+\t * shared flag is always false.\n+\t */\n+\trc = ulp_mapper_glb_resource_write(mapper_data, glb_res, regval, false);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Failed to write to global resource id\\n\");\n \t\t/* Free the identifier when update failed */\n@@ -963,6 +974,7 @@ ulp_mapper_field_process(struct bnxt_ulp_mapper_parms *parms,\n \tuint32_t update_flag = 0;\n \tuint64_t src1_val64;\n \tuint32_t port_id;\n+\tbool shared;\n \n \t/* process the field opcode */\n \tif (fld->field_opc != BNXT_ULP_FIELD_OPC_COND_OP) {\n@@ -1244,9 +1256,8 @@ ulp_mapper_field_process(struct bnxt_ulp_mapper_parms *parms,\n \t\t\treturn -EINVAL;\n \t\t}\n \t\tidx = tfp_be_to_cpu_16(idx);\n-\t\tif (ulp_mapper_glb_resource_read(parms->mapper_data,\n-\t\t\t\t\t\t dir,\n-\t\t\t\t\t\t idx, &regval)) {\n+\t\tif (ulp_mapper_glb_resource_read(parms->mapper_data, dir,\n+\t\t\t\t\t\t idx, &regval, &shared)) {\n \t\t\tBNXT_TF_DBG(ERR, \"%s global regfile[%d] read failed.\\n\",\n \t\t\t\t    name, idx);\n \t\t\treturn -EINVAL;\n@@ -2215,6 +2226,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \tbool write = false;\n \tbool global = false;\n \tuint64_t act_rec_size;\n+\tbool shared = false;\n \n \t/* use the max size if encap is enabled */\n \tif (tbl->encap_num_fields)\n@@ -2293,7 +2305,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t\tif (ulp_mapper_glb_resource_read(parms->mapper_data,\n \t\t\t\t\t\t tbl->direction,\n \t\t\t\t\t\t tbl->tbl_operand,\n-\t\t\t\t\t\t &regval)) {\n+\t\t\t\t\t\t &regval, &shared)) {\n \t\t\tBNXT_TF_DBG(ERR,\n \t\t\t\t    \"Failed to get tbl idx from Global \"\n \t\t\t\t    \"regfile[%d].\\n\",\n@@ -2400,8 +2412,13 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t\tregval = tfp_cpu_to_be_64(regval);\n \n \t\tif (global) {\n+\t\t\t/*\n+\t\t\t * Shared resources are never allocated through this\n+\t\t\t * method, so the shared flag is always false.\n+\t\t\t */\n \t\t\trc = ulp_mapper_glb_resource_write(parms->mapper_data,\n-\t\t\t\t\t\t\t   &glb_res, regval);\n+\t\t\t\t\t\t\t   &glb_res, regval,\n+\t\t\t\t\t\t\t   false);\n \t\t} else {\n \t\t\trc = ulp_regfile_write(parms->regfile,\n \t\t\t\t\t       tbl->tbl_operand, regval);\n@@ -2422,6 +2439,8 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t\tsparms.data_sz_in_bytes = ULP_BITS_2_BYTE(tmplen);\n \t\tsparms.idx = index;\n \t\tsparms.tbl_scope_id = tbl_scope_id;\n+\t\tif (shared)\n+\t\t\ttfp = bnxt_ulp_cntxt_shared_tfp_get(parms->ulp_ctx);\n \t\trc = tf_set_tbl_entry(tfp, &sparms);\n \t\tif (rc) {\n \t\t\tBNXT_TF_DBG(ERR,\n@@ -2469,6 +2488,9 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t}\n \treturn rc;\n error:\n+\t/* Shared resources are not freed */\n+\tif (shared)\n+\t\treturn rc;\n \t/*\n \t * Free the allocated resource since we failed to either\n \t * write to the entry or link the flow\n@@ -2810,7 +2832,8 @@ 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-\tuint32_t num_glb_res_ids, idx;\n+\tuint32_t num_glb_res_ids, idx, dev_id;\n+\tuint8_t app_id;\n \tint32_t rc = 0;\n \n \tglb_res = ulp_mapper_glb_resource_info_list_get(&num_glb_res_ids);\n@@ -2819,8 +2842,25 @@ ulp_mapper_glb_resource_info_init(struct bnxt_ulp_context *ulp_ctx,\n \t\treturn -EINVAL;\n \t}\n \n+\trc = bnxt_ulp_cntxt_dev_id_get(ulp_ctx, &dev_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get device id for \"\n+\t\t\t    \"global init (%d)\\n\", rc);\n+\t\treturn rc;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_app_id_get(ulp_ctx, &app_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get app id for \"\n+\t\t\t    \"global init (%d)\\n\", rc);\n+\t\treturn rc;\n+\t}\n+\n \t/* Iterate the global resources and process each one */\n \tfor (idx = 0; idx < num_glb_res_ids; idx++) {\n+\t\tif (dev_id != glb_res[idx].device_id ||\n+\t\t    glb_res[idx].app_id != app_id)\n+\t\t\tcontinue;\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(ulp_ctx,\n@@ -2844,6 +2884,104 @@ ulp_mapper_glb_resource_info_init(struct bnxt_ulp_context *ulp_ctx,\n \treturn rc;\n }\n \n+/*\n+ * Iterate over the shared resources assigned during tf_open_session and store\n+ * them in the global regfile with the shared flag.\n+ */\n+static int32_t\n+ulp_mapper_app_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+\tstruct tf_get_session_info_parms sparms;\n+\tuint32_t num_entries, i, dev_id, res;\n+\tstruct tf_resource_info *res_info;\n+\tuint64_t regval;\n+\tenum tf_dir dir;\n+\tint32_t rc = 0;\n+\tstruct tf *tfp;\n+\tuint8_t app_id;\n+\n+\tmemset(&sparms, 0, sizeof(sparms));\n+\n+\tglb_res = bnxt_ulp_app_glb_resource_info_list_get(&num_entries);\n+\tif (!glb_res || !num_entries) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid Arguments\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\ttfp = bnxt_ulp_cntxt_shared_tfp_get(ulp_ctx);\n+\tif (!tfp) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get tfp for app global init\");\n+\t\treturn -EINVAL;\n+\t}\n+\t/*\n+\t * Retrieve the resources that were assigned during the shared session\n+\t * creation.\n+\t */\n+\trc = tf_get_session_info(tfp, &sparms);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get session info (%d)\\n\", rc);\n+\t\treturn rc;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_app_id_get(ulp_ctx, &app_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get the app id in global init \"\n+\t\t\t    \"(%d).\\n\", rc);\n+\t\treturn rc;\n+\t}\n+\n+\trc = bnxt_ulp_cntxt_dev_id_get(ulp_ctx, &dev_id);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to get device id for app \"\n+\t\t\t    \"global init (%d)\\n\", rc);\n+\t\treturn rc;\n+\t}\n+\n+\t/* Store all the app global resources */\n+\tfor (i = 0; i < num_entries; i++) {\n+\t\tif (dev_id != glb_res[i].device_id ||\n+\t\t    app_id != glb_res[i].app_id)\n+\t\t\tcontinue;\n+\t\tdir = glb_res[i].direction;\n+\t\tres = glb_res[i].resource_type;\n+\n+\t\tswitch (glb_res[i].resource_func) {\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_IDENTIFIER:\n+\t\t\tres_info = &sparms.session_info.ident[dir].info[res];\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE:\n+\t\t\tres_info = &sparms.session_info.tbl[dir].info[res];\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE:\n+\t\t\tres_info = &sparms.session_info.tcam[dir].info[res];\n+\t\t\tbreak;\n+\t\tcase BNXT_ULP_RESOURCE_FUNC_EM_TABLE:\n+\t\t\tres_info = &sparms.session_info.em[dir].info[res];\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tBNXT_TF_DBG(ERR, \"Unknown resource func (0x%x)\\n\",\n+\t\t\t\t    glb_res[i].resource_func);\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tregval = tfp_cpu_to_be_64((uint64_t)res_info->start);\n+\t\tres_info->start++;\n+\n+\t\t/*\n+\t\t * All resources written to the global regfile are shared for\n+\t\t * this function.\n+\t\t */\n+\t\trc = ulp_mapper_glb_resource_write(mapper_data, &glb_res[i],\n+\t\t\t\t\t\t   regval, true);\n+\t\tif (rc)\n+\t\t\treturn rc;\n+\t}\n+\n+\treturn rc;\n+}\n+\n /*\n  * Common conditional opcode process routine that is used for both the template\n  * rejection and table conditional execution.\n@@ -2994,6 +3132,7 @@ ulp_mapper_cc_upd_opr_compute(struct bnxt_ulp_mapper_parms *parms,\n \t\t\t      uint64_t *result)\n {\n \tuint64_t regval;\n+\tbool shared;\n \n \t*result =  false;\n \tswitch (cc_src) {\n@@ -3013,7 +3152,7 @@ ulp_mapper_cc_upd_opr_compute(struct bnxt_ulp_mapper_parms *parms,\n \t\tbreak;\n \tcase BNXT_ULP_CC_UPD_SRC_GLB_REGFILE:\n \t\tif (ulp_mapper_glb_resource_read(parms->mapper_data, dir,\n-\t\t\t\t\t\t cc_opr, &regval)) {\n+\t\t\t\t\t\t cc_opr, &regval, &shared)) {\n \t\t\tBNXT_TF_DBG(ERR, \"global regfile[%d] read failed.\\n\",\n \t\t\t\t    cc_opr);\n \t\t\treturn -EINVAL;\n@@ -3493,11 +3632,11 @@ ulp_mapper_glb_resource_info_deinit(struct bnxt_ulp_context *ulp_ctx,\n \n \t/* Iterate the global resources and process each one */\n \tfor (dir = TF_DIR_RX; dir < TF_DIR_MAX; dir++) {\n-\t\tfor (idx = 0; idx < BNXT_ULP_GLB_RESOURCE_TBL_MAX_SZ;\n-\t\t      idx++) {\n+\t\tfor (idx = 0; idx < BNXT_ULP_GLB_RF_IDX_LAST; idx++) {\n \t\t\tent = &mapper_data->glb_res_tbl[dir][idx];\n \t\t\tif (ent->resource_func ==\n-\t\t\t    BNXT_ULP_RESOURCE_FUNC_INVALID)\n+\t\t\t    BNXT_ULP_RESOURCE_FUNC_INVALID ||\n+\t\t\t    ent->shared)\n \t\t\t\tcontinue;\n \t\t\tmemset(&res, 0, sizeof(struct ulp_flow_db_res_params));\n \t\t\tres.resource_func = ent->resource_func;\n@@ -3673,6 +3812,19 @@ ulp_mapper_init(struct bnxt_ulp_context *ulp_ctx)\n \t\tgoto error;\n \t}\n \n+\t/*\n+\t * Only initialize the app global resources if a shared session was\n+\t * created.\n+\t */\n+\tif (bnxt_ulp_cntxt_shared_session_enabled(ulp_ctx)) {\n+\t\trc = ulp_mapper_app_glb_resource_info_init(ulp_ctx, data);\n+\t\tif (rc) {\n+\t\t\tBNXT_TF_DBG(ERR, \"Failed to initialize app \"\n+\t\t\t\t    \"global resources\\n\");\n+\t\t\tgoto error;\n+\t\t}\n+\t}\n+\n \t/* Allocate the generic table list */\n \trc = ulp_mapper_generic_tbl_list_init(data);\n \tif (rc) {\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.h b/drivers/net/bnxt/tf_ulp/ulp_mapper.h\nindex 9432462404..6e4d9e8522 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.h\n@@ -22,6 +22,7 @@ struct bnxt_ulp_mapper_glb_resource_entry {\n \tenum bnxt_ulp_resource_func\tresource_func;\n \tuint32_t\t\t\tresource_type; /* TF_ enum type */\n \tuint64_t\t\t\tresource_hndl;\n+\tbool\t\t\t\tshared;\n };\n \n struct bnxt_ulp_mapper_data {\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 a3d8c716f3..3037547179 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,8 +26,10 @@\n #define BNXT_ULP_ACT_HID_SHFTR 27\n #define BNXT_ULP_ACT_HID_SHFTL 26\n #define BNXT_ULP_ACT_HID_MASK 2047\n-#define BNXT_ULP_GLB_RESOURCE_TBL_MAX_SZ 11\n-#define BNXT_ULP_APP_GLB_RESOURCE_TBL_MAX_SZ 10\n+#define BNXT_ULP_GLB_RESOURCE_TBL_MAX_SZ 33\n+#define BNXT_ULP_APP_GLB_RESOURCE_TBL_MAX_SZ 27\n+#define BNXT_ULP_RESOURCE_RESV_LIST_MAX_SZ 219\n+#define BNXT_ULP_APP_CAP_TBL_MAX_SZ 2\n #define BNXT_ULP_COND_GOTO_REJECT 1023\n #define BNXT_ULP_COND_GOTO_RF 0x10000\n #define BNXT_ULP_GLB_FIELD_TBL_SHIFT 7\n@@ -348,7 +350,8 @@ enum bnxt_ulp_glb_rf_idx {\n \tBNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0 = 9,\n \tBNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_0 = 10,\n \tBNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0 = 11,\n-\tBNXT_ULP_GLB_RF_IDX_LAST = 12\n+\tBNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1 = 12,\n+\tBNXT_ULP_GLB_RF_IDX_LAST = 13\n };\n \n enum bnxt_ulp_hdr_type {\n@@ -476,6 +479,10 @@ enum bnxt_ulp_template_type {\n \tBNXT_ULP_TEMPLATE_TYPE_LAST = 2\n };\n \n+enum bnxt_ulp_app_cap {\n+\tBNXT_ULP_APP_CAP_SHARED_EN = 0x00000001\n+};\n+\n enum bnxt_ulp_fdb_resource_flags {\n \tBNXT_ULP_FDB_RESOURCE_FLAGS_DIR_INGR = 0x00,\n \tBNXT_ULP_FDB_RESOURCE_FLAGS_DIR_EGR = 0x01\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 dd23635c57..c8ab14a843 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@@ -224,9 +224,244 @@ struct bnxt_ulp_device_params ulp_device_params[BNXT_ULP_DEVICE_ID_LAST] = {\n \t}\n };\n \n+/* List of device specific parameters */\n+struct bnxt_ulp_app_capabilities_info ulp_app_cap_info_list[] = {\n+\t[0] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.flags                   = 0\n+\t},\n+\t[1] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.flags                   = 0\n+\t},\n+};\n+\n+/* List of device specific parameters */\n+struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[]  = {\n+\t[0] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[1] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[2] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_1,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[3] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[4] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[5] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[6] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[7] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[8] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[9] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[10] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[11] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[12] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[13] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[14] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[15] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[16] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[17] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[18] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_PROF_FUNC_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[19] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_L2_CNTXT_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[20] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[21] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[22] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_KEY_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[23] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[24] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_KEY_ID_0,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[25] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_EM_PROFILE_ID_0,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[26] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_APP_GLB_WC_PROFILE_ID_0,\n+\t.direction               = TF_DIR_TX\n+\t}\n+};\n+\n /* List of device specific parameters */\n struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t[0] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n \t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n@@ -234,6 +469,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_RX\n \t},\n \t[1] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n \t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n@@ -241,6 +477,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_TX\n \t},\n \t[2] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n \t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n@@ -248,6 +485,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_TX\n \t},\n \t[3] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n \t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n@@ -255,6 +493,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_RX\n \t},\n \t[4] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n \t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n@@ -262,6 +501,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_TX\n \t},\n \t[5] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n \t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n@@ -269,6 +509,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_RX\n \t},\n \t[6] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n \t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n@@ -276,6 +517,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_RX\n \t},\n \t[7] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n \t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n@@ -283,6 +525,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_TX\n \t},\n \t[8] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n \t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n@@ -290,6 +533,7 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_RX\n \t},\n \t[9] = {\n+\t.app_id                  = 0,\n \t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n \t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n@@ -297,11 +541,1944 @@ struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[] = {\n \t.direction               = TF_DIR_TX\n \t},\n \t[10] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[11] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[12] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[13] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[14] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[15] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[16] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_VXLAN_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[17] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[18] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[19] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[20] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[21] = {\n+\t.app_id                  = 1,\n \t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n \t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n \t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n \t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,\n \t.direction               = TF_DIR_TX\n+\t},\n+\t[22] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[23] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[24] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[25] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[26] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_L2_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[27] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_VXLAN_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[28] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[29] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_ENCAP_MAC_PTR,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[30] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_RX\n+\t},\n+\t[31] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_PROF_FUNC_ID,\n+\t.direction               = TF_DIR_TX\n+\t},\n+\t[32] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.glb_regfile_index       = BNXT_ULP_GLB_RF_IDX_GLB_LB_AREC_PTR,\n+\t.direction               = TF_DIR_TX\n+\t}\n+};\n+\n+/* List of tf resources required to be reserved per app/device */\n+struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[] = {\n+\t[0] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 422\n+\t},\n+\t[1] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 6\n+\t},\n+\t[2] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 192\n+\t},\n+\t[3] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 64\n+\t},\n+\t[4] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 192\n+\t},\n+\t[5] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 8192\n+\t},\n+\t[6] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 16384\n+\t},\n+\t[7] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_MODIFY_IPV4,\n+\t.count                   = 1023\n+\t},\n+\t[8] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_8B,\n+\t.count                   = 511\n+\t},\n+\t[9] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.count                   = 63\n+\t},\n+\t[10] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC,\n+\t.count                   = 255\n+\t},\n+\t[11] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[12] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 422\n+\t},\n+\t[13] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 6\n+\t},\n+\t[14] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 960\n+\t},\n+\t[15] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 88\n+\t},\n+\t[16] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 13168\n+\t},\n+\t[17] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_TBL_SCOPE,\n+\t.count                   = 1\n+\t},\n+\t[18] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 292\n+\t},\n+\t[19] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 148\n+\t},\n+\t[20] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 192\n+\t},\n+\t[21] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 64\n+\t},\n+\t[22] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 192\n+\t},\n+\t[23] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 8192\n+\t},\n+\t[24] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 16384\n+\t},\n+\t[25] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_MODIFY_IPV4,\n+\t.count                   = 1023\n+\t},\n+\t[26] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 511\n+\t},\n+\t[27] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.count                   = 223\n+\t},\n+\t[28] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_8B,\n+\t.count                   = 255\n+\t},\n+\t[29] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 488\n+\t},\n+\t[30] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV6,\n+\t.count                   = 511\n+\t},\n+\t[31] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[32] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 292\n+\t},\n+\t[33] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 144\n+\t},\n+\t[34] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 960\n+\t},\n+\t[35] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 928\n+\t},\n+\t[36] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 15232\n+\t},\n+\t[37] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_TBL_SCOPE,\n+\t.count                   = 1\n+\t},\n+\t[38] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 26\n+\t},\n+\t[39] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 6\n+\t},\n+\t[40] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 32\n+\t},\n+\t[41] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 32\n+\t},\n+\t[42] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 32\n+\t},\n+\t[43] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 1024\n+\t},\n+\t[44] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 512\n+\t},\n+\t[45] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 14\n+\t},\n+\t[46] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.count                   = 32\n+\t},\n+\t[47] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.count                   = 32\n+\t},\n+\t[48] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 64\n+\t},\n+\t[49] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 64\n+\t},\n+\t[50] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 300\n+\t},\n+\t[51] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 6\n+\t},\n+\t[52] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[53] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 112\n+\t},\n+\t[54] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 13200\n+\t},\n+\t[55] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 26\n+\t},\n+\t[56] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 26\n+\t},\n+\t[57] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 32\n+\t},\n+\t[58] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 63\n+\t},\n+\t[59] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 32\n+\t},\n+\t[60] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 1024\n+\t},\n+\t[61] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 512\n+\t},\n+\t[62] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 14\n+\t},\n+\t[63] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.count                   = 32\n+\t},\n+\t[64] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.count                   = 32\n+\t},\n+\t[65] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 64\n+\t},\n+\t[66] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 100\n+\t},\n+\t[67] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[68] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 200\n+\t},\n+\t[69] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 110\n+\t},\n+\t[70] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[71] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[72] = {\n+\t.app_id                  = 0,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 15232\n+\t},\n+\t[73] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 422\n+\t},\n+\t[74] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 6\n+\t},\n+\t[75] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 192\n+\t},\n+\t[76] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 64\n+\t},\n+\t[77] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 192\n+\t},\n+\t[78] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 8192\n+\t},\n+\t[79] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 16384\n+\t},\n+\t[80] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_MODIFY_IPV4,\n+\t.count                   = 1023\n+\t},\n+\t[81] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_8B,\n+\t.count                   = 511\n+\t},\n+\t[82] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.count                   = 63\n+\t},\n+\t[83] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC,\n+\t.count                   = 255\n+\t},\n+\t[84] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[85] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 422\n+\t},\n+\t[86] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 6\n+\t},\n+\t[87] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 960\n+\t},\n+\t[88] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 88\n+\t},\n+\t[89] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 13168\n+\t},\n+\t[90] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_TBL_SCOPE,\n+\t.count                   = 1\n+\t},\n+\t[91] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 292\n+\t},\n+\t[92] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 148\n+\t},\n+\t[93] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 192\n+\t},\n+\t[94] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 64\n+\t},\n+\t[95] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 192\n+\t},\n+\t[96] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 8192\n+\t},\n+\t[97] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 16384\n+\t},\n+\t[98] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_MODIFY_IPV4,\n+\t.count                   = 1023\n+\t},\n+\t[99] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 511\n+\t},\n+\t[100] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.count                   = 223\n+\t},\n+\t[101] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_8B,\n+\t.count                   = 255\n+\t},\n+\t[102] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 488\n+\t},\n+\t[103] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV6,\n+\t.count                   = 511\n+\t},\n+\t[104] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[105] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 292\n+\t},\n+\t[106] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 144\n+\t},\n+\t[107] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 960\n+\t},\n+\t[108] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 928\n+\t},\n+\t[109] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 15232\n+\t},\n+\t[110] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_TBL_SCOPE,\n+\t.count                   = 1\n+\t},\n+\t[111] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 26\n+\t},\n+\t[112] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 6\n+\t},\n+\t[113] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 32\n+\t},\n+\t[114] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 32\n+\t},\n+\t[115] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 32\n+\t},\n+\t[116] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 1024\n+\t},\n+\t[117] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 512\n+\t},\n+\t[118] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 14\n+\t},\n+\t[119] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.count                   = 32\n+\t},\n+\t[120] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.count                   = 32\n+\t},\n+\t[121] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 64\n+\t},\n+\t[122] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 64\n+\t},\n+\t[123] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 300\n+\t},\n+\t[124] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 6\n+\t},\n+\t[125] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[126] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 112\n+\t},\n+\t[127] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 13200\n+\t},\n+\t[128] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 26\n+\t},\n+\t[129] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 26\n+\t},\n+\t[130] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 32\n+\t},\n+\t[131] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 63\n+\t},\n+\t[132] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 32\n+\t},\n+\t[133] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 1024\n+\t},\n+\t[134] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 512\n+\t},\n+\t[135] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 14\n+\t},\n+\t[136] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.count                   = 32\n+\t},\n+\t[137] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.count                   = 32\n+\t},\n+\t[138] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 64\n+\t},\n+\t[139] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 100\n+\t},\n+\t[140] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[141] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 200\n+\t},\n+\t[142] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 110\n+\t},\n+\t[143] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[144] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[145] = {\n+\t.app_id                  = 1,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 15232\n+\t},\n+\t[146] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 422\n+\t},\n+\t[147] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 6\n+\t},\n+\t[148] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 192\n+\t},\n+\t[149] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 64\n+\t},\n+\t[150] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 192\n+\t},\n+\t[151] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 8192\n+\t},\n+\t[152] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 16384\n+\t},\n+\t[153] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_MODIFY_IPV4,\n+\t.count                   = 1023\n+\t},\n+\t[154] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_8B,\n+\t.count                   = 511\n+\t},\n+\t[155] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.count                   = 63\n+\t},\n+\t[156] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC,\n+\t.count                   = 255\n+\t},\n+\t[157] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[158] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 422\n+\t},\n+\t[159] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 6\n+\t},\n+\t[160] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 960\n+\t},\n+\t[161] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 88\n+\t},\n+\t[162] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 13168\n+\t},\n+\t[163] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_TBL_SCOPE,\n+\t.count                   = 1\n+\t},\n+\t[164] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 292\n+\t},\n+\t[165] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 148\n+\t},\n+\t[166] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 192\n+\t},\n+\t[167] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 64\n+\t},\n+\t[168] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 192\n+\t},\n+\t[169] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 8192\n+\t},\n+\t[170] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 16384\n+\t},\n+\t[171] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_MODIFY_IPV4,\n+\t.count                   = 1023\n+\t},\n+\t[172] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 511\n+\t},\n+\t[173] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_16B,\n+\t.count                   = 223\n+\t},\n+\t[174] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_8B,\n+\t.count                   = 255\n+\t},\n+\t[175] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 488\n+\t},\n+\t[176] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV6,\n+\t.count                   = 511\n+\t},\n+\t[177] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[178] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 292\n+\t},\n+\t[179] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 144\n+\t},\n+\t[180] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 960\n+\t},\n+\t[181] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 928\n+\t},\n+\t[182] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 15232\n+\t},\n+\t[183] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_WH_PLUS,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_TBL_SCOPE,\n+\t.count                   = 1\n+\t},\n+\t[184] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 26\n+\t},\n+\t[185] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 6\n+\t},\n+\t[186] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 32\n+\t},\n+\t[187] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 32\n+\t},\n+\t[188] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 32\n+\t},\n+\t[189] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 1024\n+\t},\n+\t[190] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 512\n+\t},\n+\t[191] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 14\n+\t},\n+\t[192] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.count                   = 32\n+\t},\n+\t[193] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.count                   = 32\n+\t},\n+\t[194] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 64\n+\t},\n+\t[195] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 64\n+\t},\n+\t[196] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 300\n+\t},\n+\t[197] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 6\n+\t},\n+\t[198] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[199] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 112\n+\t},\n+\t[200] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_RX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 13200\n+\t},\n+\t[201] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_HIGH,\n+\t.count                   = 26\n+\t},\n+\t[202] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_L2_CTXT_LOW,\n+\t.count                   = 26\n+\t},\n+\t[203] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_WC_PROF,\n+\t.count                   = 32\n+\t},\n+\t[204] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_PROF_FUNC,\n+\t.count                   = 63\n+\t},\n+\t[205] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_IDENTIFIER,\n+\t.resource_type           = TF_IDENT_TYPE_EM_PROF,\n+\t.count                   = 32\n+\t},\n+\t[206] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_FULL_ACT_RECORD,\n+\t.count                   = 1024\n+\t},\n+\t[207] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_STATS_64,\n+\t.count                   = 512\n+\t},\n+\t[208] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 14\n+\t},\n+\t[209] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_EM_FKB,\n+\t.count                   = 32\n+\t},\n+\t[210] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_WC_FKB,\n+\t.count                   = 32\n+\t},\n+\t[211] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_ENCAP_64B,\n+\t.count                   = 64\n+\t},\n+\t[212] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_ACT_SP_SMAC_IPV4,\n+\t.count                   = 100\n+\t},\n+\t[213] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n+\t.resource_type           = TF_TBL_TYPE_MIRROR_CONFIG,\n+\t.count                   = 1\n+\t},\n+\t[214] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH,\n+\t.count                   = 200\n+\t},\n+\t[215] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW,\n+\t.count                   = 110\n+\t},\n+\t[216] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_PROF_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[217] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_TCAM_TABLE,\n+\t.resource_type           = TF_TCAM_TBL_TYPE_WC_TCAM,\n+\t.count                   = 128\n+\t},\n+\t[218] = {\n+\t.app_id                  = 2,\n+\t.device_id               = BNXT_ULP_DEVICE_ID_THOR,\n+\t.direction               = TF_DIR_TX,\n+\t.resource_func           = BNXT_ULP_RESOURCE_FUNC_EM_TABLE,\n+\t.resource_type           = TF_EM_TBL_TYPE_EM_RECORD,\n+\t.count                   = 15232\n \t}\n };\n \ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\nindex b5bc433810..f5f01c0bcf 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\n@@ -312,11 +312,27 @@ struct bnxt_ulp_mapper_ident_info {\n };\n \n struct bnxt_ulp_glb_resource_info {\n+\tuint8_t\t\t\t\tapp_id;\n \tenum bnxt_ulp_device_id\t\tdevice_id;\n+\tenum tf_dir\t\t\tdirection;\n \tenum bnxt_ulp_resource_func\tresource_func;\n \tuint32_t\t\t\tresource_type; /* TF_ enum type */\n \tenum bnxt_ulp_glb_rf_idx\tglb_regfile_index;\n+};\n+\n+struct bnxt_ulp_resource_resv_info {\n+\tuint8_t\t\t\t\tapp_id;\n+\tenum bnxt_ulp_device_id\t\tdevice_id;\n \tenum tf_dir\t\t\tdirection;\n+\tenum bnxt_ulp_resource_func\tresource_func;\n+\tuint32_t\t\t\tresource_type; /* TF_ enum type */\n+\tuint32_t\t\t\tcount;\n+};\n+\n+struct bnxt_ulp_app_capabilities_info {\n+\tuint8_t\t\t\t\tapp_id;\n+\tenum bnxt_ulp_device_id\t\tdevice_id;\n+\tuint32_t\t\t\tflags;\n };\n \n struct bnxt_ulp_cache_tbl_params {\n@@ -361,6 +377,23 @@ extern uint32_t ulp_act_prop_map_table[];\n  */\n extern struct bnxt_ulp_glb_resource_info ulp_glb_resource_tbl[];\n \n+/*\n+ * The ulp_app_glb_resource_tbl provides the list of shared resources required\n+ * in the event that shared session is enabled.\n+ */\n+extern struct bnxt_ulp_glb_resource_info ulp_app_glb_resource_tbl[];\n+\n+/*\n+ * The ulp_resource_resv_list provides the list of tf resources required when\n+ * calling tf_open.\n+ */\n+extern struct bnxt_ulp_resource_resv_info ulp_resource_resv_list[];\n+\n+/*\n+ * The_app_cap_info_list provides the list of ULP capabilities per app/device.\n+ */\n+extern struct bnxt_ulp_app_capabilities_info ulp_app_cap_info_list[];\n+\n /*\n  * The ulp_cache_tbl_parms table provides the sizes of the cache tables the\n  * mapper must dynamically allocate during initialization.\n",
    "prefixes": [
        "48/58"
    ]
}