get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 80262,
    "url": "http://patches.dpdk.org/api/patches/80262/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20201010041153.63921-7-ajit.khaparde@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": "<20201010041153.63921-7-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201010041153.63921-7-ajit.khaparde@broadcom.com",
    "date": "2020-10-10T04:11:47",
    "name": "[v2,06/12] net/bnxt: combine default and regular flows",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "c6beda1a2664c38152543f23173e9fe2fb1c0de6",
    "submitter": {
        "id": 501,
        "url": "http://patches.dpdk.org/api/people/501/?format=api",
        "name": "Ajit Khaparde",
        "email": "ajit.khaparde@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/20201010041153.63921-7-ajit.khaparde@broadcom.com/mbox/",
    "series": [
        {
            "id": 12854,
            "url": "http://patches.dpdk.org/api/series/12854/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=12854",
            "date": "2020-10-10T04:11:42",
            "name": "[v2,01/12] net/bnxt: fix the corruption of the session details",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/12854/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/80262/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/80262/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 681ECA04BC;\n\tSat, 10 Oct 2020 06:14:56 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id D7EED1D724;\n\tSat, 10 Oct 2020 06:13:14 +0200 (CEST)",
            "from mail-pg1-f231.google.com (mail-pg1-f231.google.com\n [209.85.215.231]) by dpdk.org (Postfix) with ESMTP id 5A3FA1D6C4\n for <dev@dpdk.org>; Sat, 10 Oct 2020 06:13:08 +0200 (CEST)",
            "by mail-pg1-f231.google.com with SMTP id y14so8857678pgf.12\n for <dev@dpdk.org>; Fri, 09 Oct 2020 21:13:08 -0700 (PDT)",
            "from localhost.localdomain ([192.19.223.252])\n by smtp-relay.gmail.com with ESMTPS id b4sm1597022pjn.3.2020.10.09.21.13.05\n (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n Fri, 09 Oct 2020 21:13:06 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n s=google;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=STCYtRpa3wuZGpZRatUmX86ZgUlKz0woZKiPlK+Tgh8=;\n b=HkdM4EyL1GmYUknrsq4Qt1Zi7lsSDY8jLxQS4YaL+V1/gFDgBB2H1OxHRKscmWAtUY\n kfX8SrsC/26gdke4NuA8CTYiEi2zgaEy58nOuQ0Pqx30d7erBTgJIZRid8u80GOXOeaq\n 0yrpJyJ8pUfqeRqFM0y2dKMYvtAzzJ9Uo7x90=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=STCYtRpa3wuZGpZRatUmX86ZgUlKz0woZKiPlK+Tgh8=;\n b=UVFy+dDnCkqG4Qb9lGZQGlUZm1G9mJewWpi4gWtdpC8ptDA4cfn+ffb4lbrEUvgY+I\n bvWD767IQBoCceG5DAV3OxMmwPbqfqqfx54+/UqrSlmJ9D+7kHM5xCAPwQtYW8wlDeDW\n l0i7e12DWmO55FsDsEhO0OGebfT8d5eHE5SipDq8ZM+r4lB1Defv/IMj+kaMA4IBTC0B\n qhXI9YAKnOMaznH9yEMSMG0pFEsi/j7PKgswAU6mbIJzMqvHB+N/5Y4CArw3RiQ9gkim\n UxIuCpPHsTa0YbWAGKc9rh7kyli5lBhDlGHh82XXOcGbHPs0vfGfqlmctnL5SHBAgSeW\n F+sw==",
        "X-Gm-Message-State": "AOAM531WVNLplzHk6o9IR+prZOmhQg3bdUIeUkC8oWINNWm5IRNq2mLW\n yvlER64i8hs5gnf0Rl17Ni/+2RZff1921NjFKCQ2RzYRsxnkQmtWuqcrnlIFCFV7Yh4MjeuurUr\n gwlGyWNGDebbuJ48kTst6jjVsUBb53SZqLBcZ2/hR2Pc42ZSNDSg+8aKNbRNUUXzu4vg6HDzunz\n +IXw==",
        "X-Google-Smtp-Source": "\n ABdhPJw3LmdLZbmZCuUL8dOMjXmPR0sXzGx9XR7SkIwpEzz52f6Y8+r3uiXgc/9amh/6+0lzNVkLifOX8vOM",
        "X-Received": "by 2002:a63:2e42:: with SMTP id u63mr5930680pgu.292.1602303186297;\n Fri, 09 Oct 2020 21:13:06 -0700 (PDT)",
        "X-Relaying-Domain": "broadcom.com",
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "Kishore Padmanabha <kishore.padmanabha@broadcom.com>,\n Mike Baucom <michael.baucom@broadcom.com>",
        "Date": "Fri,  9 Oct 2020 21:11:47 -0700",
        "Message-Id": "<20201010041153.63921-7-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.21.1 (Apple Git-122.3)",
        "In-Reply-To": "<20201010041153.63921-1-ajit.khaparde@broadcom.com>",
        "References": "<20201009111130.10422-1-somnath.kotur@broadcom.com>\n <20201010041153.63921-1-ajit.khaparde@broadcom.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v2 06/12] net/bnxt: combine default and regular\n\tflows",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\n\nThe default and regular flows are stored in the same flow table\ninstead of different flow tables. This should help code reuse\nand reducing the number of allocations.\nSo combine default and regular flows in flow database.\n\nSigned-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\nReviewed-by: Mike Baucom <michael.baucom@broadcom.com>\nReviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/tf_ulp/bnxt_ulp.c      |   2 +-\n drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c |   4 +-\n drivers/net/bnxt/tf_ulp/ulp_def_rules.c |   4 +-\n drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c    |   2 +-\n drivers/net/bnxt/tf_ulp/ulp_flow_db.c   | 423 +++++++++++-------------\n drivers/net/bnxt/tf_ulp/ulp_flow_db.h   |  75 ++---\n drivers/net/bnxt/tf_ulp/ulp_mapper.c    |  33 +-\n drivers/net/bnxt/tf_ulp/ulp_mapper.h    |  11 +-\n 8 files changed, 259 insertions(+), 295 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c\nindex eeda2d033..9ed92a88d 100644\n--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c\n+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c\n@@ -853,7 +853,7 @@ bnxt_ulp_deinit(struct bnxt *bp,\n \tbnxt_ulp_destroy_vfr_default_rules(bp, true);\n \n \t/* clean up regular flows */\n-\tulp_flow_db_flush_flows(bp->ulp_ctx, BNXT_ULP_REGULAR_FLOW_TABLE);\n+\tulp_flow_db_flush_flows(bp->ulp_ctx, BNXT_ULP_FDB_TYPE_REGULAR);\n \n \t/* cleanup the eem table scope */\n \tulp_eem_tbl_scope_deinit(bp, bp->ulp_ctx);\ndiff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c\nindex eea39f6b7..c7b29824e 100644\n--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c\n+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c\n@@ -281,8 +281,8 @@ bnxt_ulp_flow_destroy(struct rte_eth_dev *dev,\n \t\treturn -EINVAL;\n \t}\n \n-\tret = ulp_mapper_flow_destroy(ulp_ctx, flow_id,\n-\t\t\t\t      BNXT_ULP_REGULAR_FLOW_TABLE);\n+\tret = ulp_mapper_flow_destroy(ulp_ctx, BNXT_ULP_FDB_TYPE_REGULAR,\n+\t\t\t\t      flow_id);\n \tif (ret) {\n \t\tBNXT_TF_DBG(ERR, \"Failed to destroy flow.\\n\");\n \t\tif (error)\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c\nindex 01f4fd087..c36d4d4c4 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c\n@@ -391,8 +391,8 @@ ulp_default_flow_destroy(struct rte_eth_dev *eth_dev, uint32_t flow_id)\n \t\treturn rc;\n \t}\n \n-\trc = ulp_mapper_flow_destroy(ulp_ctx, flow_id,\n-\t\t\t\t     BNXT_ULP_DEFAULT_FLOW_TABLE);\n+\trc = ulp_mapper_flow_destroy(ulp_ctx, BNXT_ULP_FDB_TYPE_DEFAULT,\n+\t\t\t\t     flow_id);\n \tif (rc)\n \t\tBNXT_TF_DBG(ERR, \"Failed to destroy flow.\\n\");\n \ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c b/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c\nindex 5a0bf602a..051ebac04 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c\n@@ -561,7 +561,7 @@ int ulp_fc_mgr_query_count_get(struct bnxt_ulp_context *ctxt,\n \n \tdo {\n \t\trc = ulp_flow_db_resource_get(ctxt,\n-\t\t\t\t\t      BNXT_ULP_REGULAR_FLOW_TABLE,\n+\t\t\t\t\t      BNXT_ULP_FDB_TYPE_REGULAR,\n \t\t\t\t\t      flow_id,\n \t\t\t\t\t      &nxt_resource_index,\n \t\t\t\t\t      &params);\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_flow_db.c b/drivers/net/bnxt/tf_ulp/ulp_flow_db.c\nindex 9a2d3758d..0a3fb015c 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_flow_db.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_flow_db.c\n@@ -27,49 +27,66 @@\n #define ULP_FLOW_DB_RES_NXT_RESET(dst)\t((dst) &= ~(ULP_FLOW_DB_RES_NXT_MASK))\n \n /*\n- * Helper function to set the bit in the active flow table\n+ * Helper function to set the bit in the active flows\n  * No validation is done in this function.\n  *\n- * flow_tbl [in] Ptr to flow table\n+ * flow_db [in] Ptr to flow database\n+ * flow_type [in] - specify default or regular\n  * idx [in] The index to bit to be set or reset.\n  * flag [in] 1 to set and 0 to reset.\n  *\n  * returns none\n  */\n static void\n-ulp_flow_db_active_flow_set(struct bnxt_ulp_flow_tbl\t*flow_tbl,\n-\t\t\t    uint32_t\t\t\tidx,\n-\t\t\t    uint32_t\t\t\tflag)\n+ulp_flow_db_active_flows_bit_set(struct bnxt_ulp_flow_db *flow_db,\n+\t\t\t\t enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t\t uint32_t idx,\n+\t\t\t\t uint32_t flag)\n {\n-\tuint32_t\t\tactive_index;\n-\n-\tactive_index = idx / ULP_INDEX_BITMAP_SIZE;\n-\tif (flag)\n-\t\tULP_INDEX_BITMAP_SET(flow_tbl->active_flow_tbl[active_index],\n-\t\t\t\t     idx);\n-\telse\n-\t\tULP_INDEX_BITMAP_RESET(flow_tbl->active_flow_tbl[active_index],\n-\t\t\t\t       idx);\n+\tstruct bnxt_ulp_flow_tbl *f_tbl = &flow_db->flow_tbl;\n+\tuint32_t a_idx = idx / ULP_INDEX_BITMAP_SIZE;\n+\n+\tif (flag) {\n+\t\tif (flow_type == BNXT_ULP_FDB_TYPE_REGULAR)\n+\t\t\tULP_INDEX_BITMAP_SET(f_tbl->active_reg_flows[a_idx],\n+\t\t\t\t\t     idx);\n+\t\telse\n+\t\t\tULP_INDEX_BITMAP_SET(f_tbl->active_dflt_flows[a_idx],\n+\t\t\t\t\t     idx);\n+\t} else {\n+\t\tif (flow_type == BNXT_ULP_FDB_TYPE_REGULAR)\n+\t\t\tULP_INDEX_BITMAP_RESET(f_tbl->active_reg_flows[a_idx],\n+\t\t\t\t\t     idx);\n+\t\telse\n+\t\t\tULP_INDEX_BITMAP_RESET(f_tbl->active_dflt_flows[a_idx],\n+\t\t\t\t\t     idx);\n+\t}\n }\n \n /*\n- * Helper function to allocate the flow table and initialize\n- * is set.No validation being done in this function.\n+ * Helper function to check if given fid is active flow.\n+ * No validation being done in this function.\n  *\n- * flow_tbl [in] Ptr to flow table\n+ * flow_db [in] Ptr to flow database\n+ * flow_type [in] - specify default or regular\n  * idx [in] The index to bit to be set or reset.\n  *\n  * returns 1 on set or 0 if not set.\n  */\n static int32_t\n-ulp_flow_db_active_flow_is_set(struct bnxt_ulp_flow_tbl\t*flow_tbl,\n-\t\t\t       uint32_t\t\t\tidx)\n+ulp_flow_db_active_flows_bit_is_set(struct bnxt_ulp_flow_db *flow_db,\n+\t\t\t\t    enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t\t    uint32_t idx)\n {\n-\tuint32_t\t\tactive_index;\n+\tstruct bnxt_ulp_flow_tbl *f_tbl = &flow_db->flow_tbl;\n+\tuint32_t a_idx = idx / ULP_INDEX_BITMAP_SIZE;\n \n-\tactive_index = idx / ULP_INDEX_BITMAP_SIZE;\n-\treturn ULP_INDEX_BITMAP_GET(flow_tbl->active_flow_tbl[active_index],\n-\t\t\t\t    idx);\n+\tif (flow_type == BNXT_ULP_FDB_TYPE_REGULAR)\n+\t\treturn ULP_INDEX_BITMAP_GET(f_tbl->active_reg_flows[a_idx],\n+\t\t\t\t\t    idx);\n+\telse\n+\t\treturn ULP_INDEX_BITMAP_GET(f_tbl->active_dflt_flows[a_idx],\n+\t\t\t\t\t    idx);\n }\n \n static uint8_t\n@@ -163,19 +180,17 @@ ulp_flow_db_res_info_to_params(struct ulp_fdb_resource_info *resource_info,\n  * the stack for allocation operations.\n  *\n  * flow_db [in] Ptr to flow database structure\n- * tbl_idx [in] The index to table creation.\n  *\n  * Returns 0 on success or negative number on failure.\n  */\n static int32_t\n-ulp_flow_db_alloc_resource(struct bnxt_ulp_flow_db *flow_db,\n-\t\t\t   enum bnxt_ulp_flow_db_tables tbl_idx)\n+ulp_flow_db_alloc_resource(struct bnxt_ulp_flow_db *flow_db)\n {\n \tuint32_t\t\t\tidx = 0;\n \tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n \tuint32_t\t\t\tsize;\n \n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n+\tflow_tbl = &flow_db->flow_tbl;\n \n \tsize = sizeof(struct ulp_fdb_resource_info) * flow_tbl->num_resources;\n \tflow_tbl->flow_resources =\n@@ -192,9 +207,15 @@ ulp_flow_db_alloc_resource(struct bnxt_ulp_flow_db *flow_db,\n \t\treturn -ENOMEM;\n \t}\n \tsize = (flow_tbl->num_flows / sizeof(uint64_t)) + 1;\n-\tflow_tbl->active_flow_tbl = rte_zmalloc(\"active flow tbl\", size, 0);\n-\tif (!flow_tbl->active_flow_tbl) {\n-\t\tBNXT_TF_DBG(ERR, \"Failed to alloc memory active tbl\\n\");\n+\tflow_tbl->active_reg_flows = rte_zmalloc(\"active reg flows\", size, 0);\n+\tif (!flow_tbl->active_reg_flows) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to alloc memory active reg flows\\n\");\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\tflow_tbl->active_dflt_flows = rte_zmalloc(\"active dflt flows\", size, 0);\n+\tif (!flow_tbl->active_dflt_flows) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to alloc memory active dflt flows\\n\");\n \t\treturn -ENOMEM;\n \t}\n \n@@ -213,22 +234,22 @@ ulp_flow_db_alloc_resource(struct bnxt_ulp_flow_db *flow_db,\n  * Helper function to deallocate the flow table.\n  *\n  * flow_db [in] Ptr to flow database structure\n- * tbl_idx [in] The index to table creation.\n  *\n  * Returns none.\n  */\n static void\n-ulp_flow_db_dealloc_resource(struct bnxt_ulp_flow_db *flow_db,\n-\t\t\t     enum bnxt_ulp_flow_db_tables tbl_idx)\n+ulp_flow_db_dealloc_resource(struct bnxt_ulp_flow_db *flow_db)\n {\n-\tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n-\n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n+\tstruct bnxt_ulp_flow_tbl *flow_tbl = &flow_db->flow_tbl;\n \n \t/* Free all the allocated tables in the flow table. */\n-\tif (flow_tbl->active_flow_tbl) {\n-\t\trte_free(flow_tbl->active_flow_tbl);\n-\t\tflow_tbl->active_flow_tbl = NULL;\n+\tif (flow_tbl->active_reg_flows) {\n+\t\trte_free(flow_tbl->active_reg_flows);\n+\t\tflow_tbl->active_reg_flows = NULL;\n+\t}\n+\tif (flow_tbl->active_dflt_flows) {\n+\t\trte_free(flow_tbl->active_dflt_flows);\n+\t\tflow_tbl->active_dflt_flows = NULL;\n \t}\n \n \tif (flow_tbl->flow_tbl_stack) {\n@@ -271,12 +292,13 @@ ulp_flow_db_func_id_set(struct bnxt_ulp_flow_db *flow_db,\n  *\n  * Returns 0 on success or negative number on failure.\n  */\n-int32_t\tulp_flow_db_init(struct bnxt_ulp_context *ulp_ctxt)\n+int32_t\n+ulp_flow_db_init(struct bnxt_ulp_context *ulp_ctxt)\n {\n-\tstruct bnxt_ulp_device_params\t\t*dparms;\n-\tstruct bnxt_ulp_flow_tbl\t\t*flow_tbl;\n-\tstruct bnxt_ulp_flow_db\t\t\t*flow_db;\n-\tuint32_t\t\t\t\tdev_id;\n+\tstruct bnxt_ulp_device_params *dparms;\n+\tstruct bnxt_ulp_flow_tbl *flow_tbl;\n+\tstruct bnxt_ulp_flow_db *flow_db;\n+\tuint32_t dev_id;\n \n \t/* Get the dev specific number of flows that needed to be supported. */\n \tif (bnxt_ulp_cntxt_dev_id_get(ulp_ctxt, &dev_id)) {\n@@ -302,25 +324,22 @@ int32_t\tulp_flow_db_init(struct bnxt_ulp_context *ulp_ctxt)\n \tbnxt_ulp_cntxt_ptr2_flow_db_set(ulp_ctxt, flow_db);\n \n \t/* Populate the regular flow table limits. */\n-\tflow_tbl = &flow_db->flow_tbl[BNXT_ULP_REGULAR_FLOW_TABLE];\n+\tflow_tbl = &flow_db->flow_tbl;\n \tflow_tbl->num_flows = dparms->flow_db_num_entries + 1;\n-\tflow_tbl->num_resources = (flow_tbl->num_flows *\n+\tflow_tbl->num_resources = ((dparms->flow_db_num_entries + 1) *\n \t\t\t\t   dparms->num_resources_per_flow);\n \n-\t/* Populate the default flow table limits. */\n-\tflow_tbl = &flow_db->flow_tbl[BNXT_ULP_DEFAULT_FLOW_TABLE];\n-\tflow_tbl->num_flows = BNXT_FLOW_DB_DEFAULT_NUM_FLOWS + 1;\n-\tflow_tbl->num_resources = (flow_tbl->num_flows *\n-\t\t\t\t   BNXT_FLOW_DB_DEFAULT_NUM_RESOURCES);\n+\t/* Include the default flow table limits. */\n+\tflow_tbl->num_flows += (BNXT_FLOW_DB_DEFAULT_NUM_FLOWS + 1);\n+\tflow_tbl->num_resources += ((BNXT_FLOW_DB_DEFAULT_NUM_FLOWS + 1) *\n+\t\t\t\t    BNXT_FLOW_DB_DEFAULT_NUM_RESOURCES);\n \n-\t/* Allocate the resource for the regular flow table. */\n-\tif (ulp_flow_db_alloc_resource(flow_db, BNXT_ULP_REGULAR_FLOW_TABLE))\n-\t\tgoto error_free;\n-\tif (ulp_flow_db_alloc_resource(flow_db, BNXT_ULP_DEFAULT_FLOW_TABLE))\n+\t/* Allocate the resource for the flow table. */\n+\tif (ulp_flow_db_alloc_resource(flow_db))\n \t\tgoto error_free;\n \n \t/* add 1 since we are not using index 0 for flow id */\n-\tflow_db->func_id_tbl_size = dparms->flow_db_num_entries + 1;\n+\tflow_db->func_id_tbl_size = flow_tbl->num_flows + 1;\n \t/* Allocate the function Id table */\n \tflow_db->func_id_tbl = rte_zmalloc(\"bnxt_ulp_flow_db_func_id_table\",\n \t\t\t\t\t   flow_db->func_id_tbl_size *\n@@ -346,9 +365,10 @@ int32_t\tulp_flow_db_init(struct bnxt_ulp_context *ulp_ctxt)\n  *\n  * Returns 0 on success.\n  */\n-int32_t\tulp_flow_db_deinit(struct bnxt_ulp_context *ulp_ctxt)\n+int32_t\n+ulp_flow_db_deinit(struct bnxt_ulp_context *ulp_ctxt)\n {\n-\tstruct bnxt_ulp_flow_db\t\t\t*flow_db;\n+\tstruct bnxt_ulp_flow_db *flow_db;\n \n \tflow_db = bnxt_ulp_cntxt_ptr2_flow_db_get(ulp_ctxt);\n \tif (!flow_db)\n@@ -358,8 +378,7 @@ int32_t\tulp_flow_db_deinit(struct bnxt_ulp_context *ulp_ctxt)\n \tbnxt_ulp_cntxt_ptr2_flow_db_set(ulp_ctxt, NULL);\n \n \t/* Free up all the memory. */\n-\tulp_flow_db_dealloc_resource(flow_db, BNXT_ULP_REGULAR_FLOW_TABLE);\n-\tulp_flow_db_dealloc_resource(flow_db, BNXT_ULP_DEFAULT_FLOW_TABLE);\n+\tulp_flow_db_dealloc_resource(flow_db);\n \trte_free(flow_db->func_id_tbl);\n \trte_free(flow_db);\n \n@@ -370,15 +389,17 @@ int32_t\tulp_flow_db_deinit(struct bnxt_ulp_context *ulp_ctxt)\n  * Allocate the flow database entry\n  *\n  * ulp_ctxt [in] Ptr to ulp_context\n- * tbl_idx [in] Specify it is regular or default flow\n+ * flow_type [in] - specify default or regular\n+ * func_id [in].function id of the ingress port\n  * fid [out] The index to the flow entry\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n-\t\t\t      enum bnxt_ulp_flow_db_tables tbl_idx,\n-\t\t\t      uint16_t func_id,\n-\t\t\t      uint32_t *fid)\n+int32_t\n+ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t      enum bnxt_ulp_fdb_type flow_type,\n+\t\t      uint16_t func_id,\n+\t\t      uint32_t *fid)\n {\n \tstruct bnxt_ulp_flow_db *flow_db;\n \tstruct bnxt_ulp_flow_tbl *flow_tbl;\n@@ -390,7 +411,12 @@ int32_t ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n \t\treturn -EINVAL;\n \t}\n \n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n+\tif (flow_type > BNXT_ULP_FDB_TYPE_DEFAULT) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid flow type\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tflow_tbl = &flow_db->flow_tbl;\n \t/* check for max flows */\n \tif (flow_tbl->num_flows <= flow_tbl->head_index) {\n \t\tBNXT_TF_DBG(ERR, \"Flow database has reached max flows\\n\");\n@@ -402,13 +428,15 @@ int32_t ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n \t}\n \t*fid = flow_tbl->flow_tbl_stack[flow_tbl->head_index];\n \tflow_tbl->head_index++;\n-\tulp_flow_db_active_flow_set(flow_tbl, *fid, 1);\n \n-\t/* The function id update is only valid for regular flow table */\n-\tif (tbl_idx == BNXT_ULP_REGULAR_FLOW_TABLE)\n+\t/* Set the flow type */\n+\tulp_flow_db_active_flows_bit_set(flow_db, flow_type, *fid, 1);\n+\n+\t/* function id update is only valid for regular flow table */\n+\tif (flow_type == BNXT_ULP_FDB_TYPE_REGULAR)\n \t\tulp_flow_db_func_id_set(flow_db, *fid, func_id);\n \n-\t/* all good, return success */\n+\t/* return success */\n \treturn 0;\n }\n \n@@ -417,21 +445,22 @@ int32_t ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n  * The params->critical_resource has to be set to 0 to allocate a new resource.\n  *\n  * ulp_ctxt [in] Ptr to ulp_context\n- * tbl_idx [in] Specify it is regular or default flow\n+ * flow_type [in] Specify it is regular or default flow\n  * fid [in] The index to the flow entry\n  * params [in] The contents to be copied into resource\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_resource_add(struct bnxt_ulp_context\t*ulp_ctxt,\n-\t\t\t\t enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t\t uint32_t\t\t\tfid,\n-\t\t\t\t struct ulp_flow_db_res_params\t*params)\n+int32_t\n+ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t uint32_t fid,\n+\t\t\t struct ulp_flow_db_res_params *params)\n {\n-\tstruct bnxt_ulp_flow_db\t\t*flow_db;\n-\tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n-\tstruct ulp_fdb_resource_info\t*resource, *fid_resource;\n-\tuint32_t\t\t\tidx;\n+\tstruct bnxt_ulp_flow_db *flow_db;\n+\tstruct bnxt_ulp_flow_tbl *flow_tbl;\n+\tstruct ulp_fdb_resource_info *resource, *fid_resource;\n+\tuint32_t idx;\n \n \tflow_db = bnxt_ulp_cntxt_ptr2_flow_db_get(ulp_ctxt);\n \tif (!flow_db) {\n@@ -439,12 +468,12 @@ int32_t\tulp_flow_db_resource_add(struct bnxt_ulp_context\t*ulp_ctxt,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (tbl_idx >= BNXT_ULP_FLOW_TABLE_MAX) {\n-\t\tBNXT_TF_DBG(ERR, \"Invalid table index\\n\");\n+\tif (flow_type > BNXT_ULP_FDB_TYPE_DEFAULT) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid flow type\\n\");\n \t\treturn -EINVAL;\n \t}\n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n \n+\tflow_tbl = &flow_db->flow_tbl;\n \t/* check for max flows */\n \tif (fid >= flow_tbl->num_flows || !fid) {\n \t\tBNXT_TF_DBG(ERR, \"Invalid flow index\\n\");\n@@ -452,7 +481,7 @@ int32_t\tulp_flow_db_resource_add(struct bnxt_ulp_context\t*ulp_ctxt,\n \t}\n \n \t/* check if the flow is active or not */\n-\tif (!ulp_flow_db_active_flow_is_set(flow_tbl, fid)) {\n+\tif (!ulp_flow_db_active_flows_bit_is_set(flow_db, flow_type, fid)) {\n \t\tBNXT_TF_DBG(ERR, \"flow does not exist\\n\");\n \t\treturn -EINVAL;\n \t}\n@@ -507,22 +536,23 @@ int32_t\tulp_flow_db_resource_add(struct bnxt_ulp_context\t*ulp_ctxt,\n  * The params->critical_resource has to be set to 1 to free the first resource.\n  *\n  * ulp_ctxt [in] Ptr to ulp_context\n- * tbl_idx [in] Specify it is regular or default flow\n+ * flow_type [in] Specify it is regular or default flow\n  * fid [in] The index to the flow entry\n  * params [in/out] The contents to be copied into params.\n  * Onlythe critical_resource needs to be set by the caller.\n  *\n  * Returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_resource_del(struct bnxt_ulp_context\t*ulp_ctxt,\n-\t\t\t\t enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t\t uint32_t\t\t\tfid,\n-\t\t\t\t struct ulp_flow_db_res_params\t*params)\n+int32_t\n+ulp_flow_db_resource_del(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t uint32_t fid,\n+\t\t\t struct ulp_flow_db_res_params *params)\n {\n-\tstruct bnxt_ulp_flow_db\t\t*flow_db;\n-\tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n-\tstruct ulp_fdb_resource_info\t*nxt_resource, *fid_resource;\n-\tuint32_t\t\t\tnxt_idx = 0;\n+\tstruct bnxt_ulp_flow_db *flow_db;\n+\tstruct bnxt_ulp_flow_tbl *flow_tbl;\n+\tstruct ulp_fdb_resource_info *nxt_resource, *fid_resource;\n+\tuint32_t nxt_idx = 0;\n \n \tflow_db = bnxt_ulp_cntxt_ptr2_flow_db_get(ulp_ctxt);\n \tif (!flow_db) {\n@@ -530,12 +560,12 @@ int32_t\tulp_flow_db_resource_del(struct bnxt_ulp_context\t*ulp_ctxt,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (tbl_idx >= BNXT_ULP_FLOW_TABLE_MAX) {\n-\t\tBNXT_TF_DBG(ERR, \"Invalid table index\\n\");\n+\tif (flow_type > BNXT_ULP_FDB_TYPE_DEFAULT) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid flow type\\n\");\n \t\treturn -EINVAL;\n \t}\n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n \n+\tflow_tbl = &flow_db->flow_tbl;\n \t/* check for max flows */\n \tif (fid >= flow_tbl->num_flows || !fid) {\n \t\tBNXT_TF_DBG(ERR, \"Invalid flow index\\n\");\n@@ -543,7 +573,7 @@ int32_t\tulp_flow_db_resource_del(struct bnxt_ulp_context\t*ulp_ctxt,\n \t}\n \n \t/* check if the flow is active or not */\n-\tif (!ulp_flow_db_active_flow_is_set(flow_tbl, fid)) {\n+\tif (!ulp_flow_db_active_flows_bit_is_set(flow_db, flow_type, fid)) {\n \t\tBNXT_TF_DBG(ERR, \"flow does not exist\\n\");\n \t\treturn -EINVAL;\n \t}\n@@ -607,17 +637,18 @@ int32_t\tulp_flow_db_resource_del(struct bnxt_ulp_context\t*ulp_ctxt,\n  * Free the flow database entry\n  *\n  * ulp_ctxt [in] Ptr to ulp_context\n- * tbl_idx [in] Specify it is regular or default flow\n+ * flow_type [in] - specify default or regular\n  * fid [in] The index to the flow entry\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_fid_free(struct bnxt_ulp_context\t\t*ulp_ctxt,\n-\t\t\t     enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t     uint32_t\t\t\t\tfid)\n+int32_t\n+ulp_flow_db_fid_free(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t     enum bnxt_ulp_fdb_type flow_type,\n+\t\t     uint32_t fid)\n {\n-\tstruct bnxt_ulp_flow_db\t\t*flow_db;\n-\tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n+\tstruct bnxt_ulp_flow_db *flow_db;\n+\tstruct bnxt_ulp_flow_tbl *flow_tbl;\n \n \tflow_db = bnxt_ulp_cntxt_ptr2_flow_db_get(ulp_ctxt);\n \tif (!flow_db) {\n@@ -625,12 +656,12 @@ int32_t\tulp_flow_db_fid_free(struct bnxt_ulp_context\t\t*ulp_ctxt,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (tbl_idx >= BNXT_ULP_FLOW_TABLE_MAX) {\n-\t\tBNXT_TF_DBG(ERR, \"Invalid table index\\n\");\n+\tif (flow_type > BNXT_ULP_FDB_TYPE_DEFAULT) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid flow type\\n\");\n \t\treturn -EINVAL;\n \t}\n \n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n+\tflow_tbl = &flow_db->flow_tbl;\n \n \t/* check for limits of fid */\n \tif (fid >= flow_tbl->num_flows || !fid) {\n@@ -639,7 +670,7 @@ int32_t\tulp_flow_db_fid_free(struct bnxt_ulp_context\t\t*ulp_ctxt,\n \t}\n \n \t/* check if the flow is active or not */\n-\tif (!ulp_flow_db_active_flow_is_set(flow_tbl, fid)) {\n+\tif (!ulp_flow_db_active_flows_bit_is_set(flow_db, flow_type, fid)) {\n \t\tBNXT_TF_DBG(ERR, \"flow does not exist\\n\");\n \t\treturn -EINVAL;\n \t}\n@@ -649,8 +680,11 @@ int32_t\tulp_flow_db_fid_free(struct bnxt_ulp_context\t\t*ulp_ctxt,\n \t\treturn -ENOENT;\n \t}\n \tflow_tbl->flow_tbl_stack[flow_tbl->head_index] = fid;\n-\tulp_flow_db_active_flow_set(flow_tbl, fid, 0);\n-\tif (tbl_idx == BNXT_ULP_REGULAR_FLOW_TABLE)\n+\n+\t/* Clear the flows bitmap */\n+\tulp_flow_db_active_flows_bit_set(flow_db, flow_type, fid, 0);\n+\n+\tif (flow_type == BNXT_ULP_FDB_TYPE_REGULAR)\n \t\tulp_flow_db_func_id_set(flow_db, fid, 0);\n \n \t/* all good, return success */\n@@ -661,22 +695,23 @@ int32_t\tulp_flow_db_fid_free(struct bnxt_ulp_context\t\t*ulp_ctxt,\n  * Get the flow database entry details\n  *\n  * ulp_ctxt [in] Ptr to ulp_context\n- * tbl_idx [in] Specify it is regular or default flow\n+ * flow_type [in] - specify default or regular\n  * fid [in] The index to the flow entry\n  * nxt_idx [in/out] the index to the next entry\n  * params [out] The contents to be copied into params.\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_resource_get(struct bnxt_ulp_context\t*ulp_ctxt,\n-\t\t\t\t enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t\t uint32_t\t\t\tfid,\n-\t\t\t\t uint32_t\t\t\t*nxt_idx,\n-\t\t\t\t struct ulp_flow_db_res_params\t*params)\n+int32_t\n+ulp_flow_db_resource_get(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t uint32_t fid,\n+\t\t\t uint32_t *nxt_idx,\n+\t\t\t struct ulp_flow_db_res_params *params)\n {\n-\tstruct bnxt_ulp_flow_db\t\t*flow_db;\n-\tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n-\tstruct ulp_fdb_resource_info\t*nxt_resource, *fid_resource;\n+\tstruct bnxt_ulp_flow_db *flow_db;\n+\tstruct bnxt_ulp_flow_tbl *flow_tbl;\n+\tstruct ulp_fdb_resource_info *nxt_resource, *fid_resource;\n \n \tflow_db = bnxt_ulp_cntxt_ptr2_flow_db_get(ulp_ctxt);\n \tif (!flow_db) {\n@@ -684,12 +719,12 @@ int32_t\tulp_flow_db_resource_get(struct bnxt_ulp_context\t*ulp_ctxt,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (tbl_idx >= BNXT_ULP_FLOW_TABLE_MAX) {\n-\t\tBNXT_TF_DBG(ERR, \"Invalid table index\\n\");\n+\tif (flow_type > BNXT_ULP_FDB_TYPE_DEFAULT) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid flow type\\n\");\n \t\treturn -EINVAL;\n \t}\n \n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n+\tflow_tbl = &flow_db->flow_tbl;\n \n \t/* check for limits of fid */\n \tif (fid >= flow_tbl->num_flows || !fid) {\n@@ -698,7 +733,7 @@ int32_t\tulp_flow_db_resource_get(struct bnxt_ulp_context\t*ulp_ctxt,\n \t}\n \n \t/* check if the flow is active or not */\n-\tif (!ulp_flow_db_active_flow_is_set(flow_tbl, fid)) {\n+\tif (!ulp_flow_db_active_flows_bit_is_set(flow_db, flow_type, fid)) {\n \t\tBNXT_TF_DBG(ERR, \"flow does not exist\\n\");\n \t\treturn -EINVAL;\n \t}\n@@ -724,17 +759,26 @@ int32_t\tulp_flow_db_resource_get(struct bnxt_ulp_context\t*ulp_ctxt,\n  * Get the flow database entry iteratively\n  *\n  * flow_tbl [in] Ptr to flow table\n+ * flow_type [in] - specify default or regular\n  * fid [in/out] The index to the flow entry\n  *\n  * returns 0 on success and negative on failure.\n  */\n static int32_t\n-ulp_flow_db_next_entry_get(struct bnxt_ulp_flow_tbl\t*flowtbl,\n-\t\t\t   uint32_t\t\t\t*fid)\n+ulp_flow_db_next_entry_get(struct bnxt_ulp_flow_db *flow_db,\n+\t\t\t   enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t   uint32_t *fid)\n {\n-\tuint32_t\tlfid = *fid;\n-\tuint32_t\tidx, s_idx, mod_fid;\n-\tuint64_t\tbs;\n+\tuint32_t lfid = *fid;\n+\tuint32_t idx, s_idx, mod_fid;\n+\tuint64_t bs;\n+\tuint64_t *active_flows;\n+\tstruct bnxt_ulp_flow_tbl *flowtbl = &flow_db->flow_tbl;\n+\n+\tif (flow_type == BNXT_ULP_FDB_TYPE_REGULAR)\n+\t\tactive_flows = flowtbl->active_reg_flows;\n+\telse\n+\t\tactive_flows = flowtbl->active_dflt_flows;\n \n \tdo {\n \t\t/* increment the flow id to find the next valid flow id */\n@@ -744,7 +788,7 @@ ulp_flow_db_next_entry_get(struct bnxt_ulp_flow_tbl\t*flowtbl,\n \t\tidx = lfid / ULP_INDEX_BITMAP_SIZE;\n \t\tmod_fid = lfid % ULP_INDEX_BITMAP_SIZE;\n \t\ts_idx = idx;\n-\t\twhile (!(bs = flowtbl->active_flow_tbl[idx])) {\n+\t\twhile (!(bs = active_flows[idx])) {\n \t\t\tidx++;\n \t\t\tif ((idx * ULP_INDEX_BITMAP_SIZE) >= flowtbl->num_flows)\n \t\t\t\treturn -ENOENT;\n@@ -761,7 +805,8 @@ ulp_flow_db_next_entry_get(struct bnxt_ulp_flow_tbl\t*flowtbl,\n \t\t\tBNXT_TF_DBG(ERR, \"Flow Database is corrupt\\n\");\n \t\t\treturn -ENOENT;\n \t\t}\n-\t} while (!ulp_flow_db_active_flow_is_set(flowtbl, lfid));\n+\t} while (!ulp_flow_db_active_flows_bit_is_set(flow_db, flow_type,\n+\t\t\t\t\t\t      lfid));\n \n \t/* all good, return success */\n \t*fid = lfid;\n@@ -772,16 +817,16 @@ ulp_flow_db_next_entry_get(struct bnxt_ulp_flow_tbl\t*flowtbl,\n  * Flush all flows in the flow database.\n  *\n  * ulp_ctxt [in] Ptr to ulp context\n- * tbl_idx [in] The index to table\n+ * flow_type [in] - specify default or regular\n  *\n  * returns 0 on success or negative number on failure\n  */\n-int32_t\tulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,\n-\t\t\t\tuint32_t\t\tidx)\n+int32_t\n+ulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\tenum bnxt_ulp_fdb_type flow_type)\n {\n-\tuint32_t\t\t\tfid = 0;\n-\tstruct bnxt_ulp_flow_db\t\t*flow_db;\n-\tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n+\tuint32_t fid = 0;\n+\tstruct bnxt_ulp_flow_db *flow_db;\n \n \tif (!ulp_ctx) {\n \t\tBNXT_TF_DBG(ERR, \"Invalid Argument\\n\");\n@@ -798,9 +843,8 @@ int32_t\tulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,\n \t\treturn -EINVAL;\n \t}\n \n-\tflow_tbl = &flow_db->flow_tbl[idx];\n-\twhile (!ulp_flow_db_next_entry_get(flow_tbl, &fid))\n-\t\tulp_mapper_resources_free(ulp_ctx, fid, idx);\n+\twhile (!ulp_flow_db_next_entry_get(flow_db, flow_type, &fid))\n+\t\tulp_mapper_resources_free(ulp_ctx, flow_type, fid);\n \n \tbnxt_ulp_cntxt_release_fdb_lock(ulp_ctx);\n \n@@ -811,7 +855,7 @@ int32_t\tulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,\n  * Flush all flows in the flow database that belong to a device function.\n  *\n  * ulp_ctxt [in] Ptr to ulp context\n- * tbl_idx [in] The index to table\n+ * func_id [in] - The port function id\n  *\n  * returns 0 on success or negative number on failure\n  */\n@@ -821,7 +865,6 @@ ulp_flow_db_function_flow_flush(struct bnxt_ulp_context *ulp_ctx,\n {\n \tuint32_t flow_id = 0;\n \tstruct bnxt_ulp_flow_db *flow_db;\n-\tstruct bnxt_ulp_flow_tbl *flow_tbl;\n \n \tif (!ulp_ctx || !func_id) {\n \t\tBNXT_TF_DBG(ERR, \"Invalid Argument\\n\");\n@@ -837,11 +880,13 @@ ulp_flow_db_function_flow_flush(struct bnxt_ulp_context *ulp_ctx,\n \t\tBNXT_TF_DBG(ERR, \"Flow db lock acquire failed\\n\");\n \t\treturn -EINVAL;\n \t}\n-\tflow_tbl = &flow_db->flow_tbl[BNXT_ULP_REGULAR_FLOW_TABLE];\n-\twhile (!ulp_flow_db_next_entry_get(flow_tbl, &flow_id)) {\n+\n+\twhile (!ulp_flow_db_next_entry_get(flow_db, BNXT_ULP_FDB_TYPE_REGULAR,\n+\t\t\t\t\t   &flow_id)) {\n \t\tif (flow_db->func_id_tbl[flow_id] == func_id)\n-\t\t\tulp_mapper_resources_free(ulp_ctx, flow_id,\n-\t\t\t\t\t\t  BNXT_ULP_REGULAR_FLOW_TABLE);\n+\t\t\tulp_mapper_resources_free(ulp_ctx,\n+\t\t\t\t\t\t  BNXT_ULP_FDB_TYPE_REGULAR,\n+\t\t\t\t\t\t  flow_id);\n \t}\n \tbnxt_ulp_cntxt_release_fdb_lock(ulp_ctx);\n \treturn 0;\n@@ -861,7 +906,7 @@ ulp_flow_db_session_flow_flush(struct bnxt_ulp_context *ulp_ctx)\n \t * TBD: Tf core implementation of FW session flush shall change this\n \t * implementation.\n \t */\n-\treturn ulp_flow_db_flush_flows(ulp_ctx, BNXT_ULP_REGULAR_FLOW_TABLE);\n+\treturn ulp_flow_db_flush_flows(ulp_ctx, BNXT_ULP_FDB_TYPE_REGULAR);\n }\n \n /*\n@@ -904,7 +949,7 @@ ulp_flow_db_validate_flow_func(struct bnxt_ulp_context *ulp_ctx,\n  */\n static int32_t\n ulp_flow_db_resource_hndl_get(struct bnxt_ulp_context *ulp_ctx,\n-\t\t\t      enum bnxt_ulp_flow_db_tables tbl_idx,\n+\t\t\t      enum bnxt_ulp_fdb_type flow_type,\n \t\t\t      uint32_t flow_id,\n \t\t\t      uint32_t resource_func,\n \t\t\t      uint32_t res_subtype,\n@@ -921,7 +966,12 @@ ulp_flow_db_resource_hndl_get(struct bnxt_ulp_context *ulp_ctx,\n \t\treturn -EINVAL;\n \t}\n \n-\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n+\tif (flow_type > BNXT_ULP_FDB_TYPE_DEFAULT) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid flow type\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\tflow_tbl = &flow_db->flow_tbl;\n \n \t/* check for limits of fid */\n \tif (flow_id >= flow_tbl->num_flows || !flow_id) {\n@@ -930,7 +980,7 @@ ulp_flow_db_resource_hndl_get(struct bnxt_ulp_context *ulp_ctx,\n \t}\n \n \t/* check if the flow is active or not */\n-\tif (!ulp_flow_db_active_flow_is_set(flow_tbl, flow_id)) {\n+\tif (!ulp_flow_db_active_flows_bit_is_set(flow_db, flow_type, flow_id)) {\n \t\tBNXT_TF_DBG(ERR, \"flow does not exist\\n\");\n \t\treturn -EINVAL;\n \t}\n@@ -978,7 +1028,7 @@ ulp_default_flow_db_cfa_action_get(struct bnxt_ulp_context *ulp_ctx,\n \tint32_t rc;\n \n \trc = ulp_flow_db_resource_hndl_get(ulp_ctx,\n-\t\t\t\t\t   BNXT_ULP_DEFAULT_FLOW_TABLE,\n+\t\t\t\t\t   BNXT_ULP_FDB_TYPE_DEFAULT,\n \t\t\t\t\t   flow_id,\n \t\t\t\t\t   BNXT_ULP_RESOURCE_FUNC_INDEX_TABLE,\n \t\t\t\t\t   sub_type, &hndl);\n@@ -990,80 +1040,3 @@ ulp_default_flow_db_cfa_action_get(struct bnxt_ulp_context *ulp_ctx,\n \t*cfa_action = hndl;\n \treturn 0;\n }\n-\n-#ifdef RTE_LIBRTE_BNXT_TRUFLOW_DEBUG\n-/*\n- * Dump the entry details\n- *\n- * ulp_ctxt [in] Ptr to ulp_context\n- *\n- * returns none\n- */\n-static void ulp_flow_db_res_dump(struct ulp_fdb_resource_info\t*r,\n-\t\t\t\t uint32_t\t*nxt_res)\n-{\n-\tuint8_t res_func = ulp_flow_db_resource_func_get(r);\n-\n-\tBNXT_TF_DBG(DEBUG, \"Resource func = %x, nxt_resource_idx = %x\\n\",\n-\t\t    res_func, (ULP_FLOW_DB_RES_NXT_MASK & r->nxt_resource_idx));\n-\tif (res_func == BNXT_ULP_RESOURCE_FUNC_EXT_EM_TABLE ||\n-\t    res_func == BNXT_ULP_RESOURCE_FUNC_INT_EM_TABLE)\n-\t\tBNXT_TF_DBG(DEBUG, \"EM Handle = 0x%016\" PRIX64 \"\\n\",\n-\t\t\t    r->resource_em_handle);\n-\telse\n-\t\tBNXT_TF_DBG(DEBUG, \"Handle = 0x%08x\\n\", r->resource_hndl);\n-\n-\t*nxt_res = 0;\n-\tULP_FLOW_DB_RES_NXT_SET(*nxt_res,\n-\t\t\t\tr->nxt_resource_idx);\n-}\n-\n-/*\n- * Dump the flow database entry details\n- *\n- * ulp_ctxt [in] Ptr to ulp_context\n- *\n- * returns none\n- */\n-int32_t\tulp_flow_db_debug_dump(struct bnxt_ulp_context\t*ulp_ctxt)\n-{\n-\tstruct bnxt_ulp_flow_db\t\t*flow_db;\n-\tstruct bnxt_ulp_flow_tbl\t*flow_tbl;\n-\tstruct ulp_fdb_resource_info\t*r;\n-\tuint32_t\t\t\tnxt_res = 0;\n-\tenum bnxt_ulp_flow_db_tables\ttbl_idx;\n-\tuint32_t\t\t\tfid;\n-\n-\tif (!ulp_ctxt || !ulp_ctxt->cfg_data) {\n-\t\tBNXT_TF_DBG(ERR, \"Invalid Arguments\\n\");\n-\t\treturn -EINVAL;\n-\t}\n-\tflow_db = bnxt_ulp_cntxt_ptr2_flow_db_get(ulp_ctxt);\n-\tif (!flow_db) {\n-\t\tBNXT_TF_DBG(ERR, \"Invalid Arguments\\n\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tfor (tbl_idx = 0; tbl_idx < BNXT_ULP_FLOW_TABLE_MAX; tbl_idx++) {\n-\t\tflow_tbl = &flow_db->flow_tbl[tbl_idx];\n-\t\tBNXT_TF_DBG(DEBUG, \"Dump Tbl index = %u, flows = %u:%u\\n\",\n-\t\t\t    tbl_idx, flow_tbl->num_flows,\n-\t\t\t    flow_tbl->num_resources);\n-\t\tBNXT_TF_DBG(DEBUG, \"Head_index = %u, Tail_index = %u\\n\",\n-\t\t\t    flow_tbl->head_index, flow_tbl->tail_index);\n-\t\tfor (fid = 0; fid < flow_tbl->num_flows; fid++) {\n-\t\t\tif (ulp_flow_db_active_flow_is_set(flow_tbl, fid)) {\n-\t\t\t\tBNXT_TF_DBG(DEBUG, \"fid = %u\\n\", fid);\n-\t\t\t\t/* iterate the resource */\n-\t\t\t\tnxt_res = fid;\n-\t\t\t\tdo {\n-\t\t\t\t\tr = &flow_tbl->flow_resources[nxt_res];\n-\t\t\t\t\tulp_flow_db_res_dump(r, &nxt_res);\n-\t\t\t\t} while (nxt_res);\n-\t\t\t}\n-\t\t}\n-\t\tBNXT_TF_DBG(DEBUG, \"Done.\\n\");\n-\t}\n-\treturn 0;\n-}\n-#endif\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_flow_db.h b/drivers/net/bnxt/tf_ulp/ulp_flow_db.h\nindex 8c83664d0..7ec4b8ae0 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_flow_db.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_flow_db.h\n@@ -46,21 +46,15 @@ struct bnxt_ulp_flow_tbl {\n \tuint32_t\ttail_index;\n \n \t/* Table to track the active flows. */\n-\tuint64_t\t*active_flow_tbl;\n+\tuint64_t\t*active_reg_flows;\n+\tuint64_t\t*active_dflt_flows;\n \tuint32_t\tnum_flows;\n \tuint32_t\tnum_resources;\n };\n \n-/* Flow database supports two tables. */\n-enum bnxt_ulp_flow_db_tables {\n-\tBNXT_ULP_REGULAR_FLOW_TABLE,\n-\tBNXT_ULP_DEFAULT_FLOW_TABLE,\n-\tBNXT_ULP_FLOW_TABLE_MAX\n-};\n-\n /* Structure for the flow database resource information. */\n struct bnxt_ulp_flow_db {\n-\tstruct bnxt_ulp_flow_tbl\tflow_tbl[BNXT_ULP_FLOW_TABLE_MAX];\n+\tstruct bnxt_ulp_flow_tbl\tflow_tbl;\n \tuint16_t\t\t\t*func_id_tbl;\n \tuint32_t\t\t\tfunc_id_tbl_size;\n };\n@@ -107,10 +101,11 @@ int32_t\tulp_flow_db_deinit(struct bnxt_ulp_context *ulp_ctxt);\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n-\t\t\t      enum bnxt_ulp_flow_db_tables tbl_idx,\n-\t\t\t      uint16_t func_id,\n-\t\t\t      uint32_t *fid);\n+int32_t\n+ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t      enum bnxt_ulp_fdb_type flow_type,\n+\t\t      uint16_t func_id,\n+\t\t      uint32_t *fid);\n \n /*\n  * Allocate the flow database entry.\n@@ -123,10 +118,11 @@ int32_t ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_resource_add(struct bnxt_ulp_context\t*ulp_ctxt,\n-\t\t\t\t enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t\t uint32_t\t\t\tfid,\n-\t\t\t\t struct ulp_flow_db_res_params\t*params);\n+int32_t\n+ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t uint32_t fid,\n+\t\t\t struct ulp_flow_db_res_params *params);\n \n /*\n  * Free the flow database entry.\n@@ -140,10 +136,11 @@ int32_t\tulp_flow_db_resource_add(struct bnxt_ulp_context\t*ulp_ctxt,\n  *\n  * Returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_resource_del(struct bnxt_ulp_context\t*ulp_ctxt,\n-\t\t\t\t enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t\t uint32_t\t\t\tfid,\n-\t\t\t\t struct ulp_flow_db_res_params\t*params);\n+int32_t\n+ulp_flow_db_resource_del(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t uint32_t fid,\n+\t\t\t struct ulp_flow_db_res_params *params);\n \n /*\n  * Free the flow database entry\n@@ -154,9 +151,10 @@ int32_t\tulp_flow_db_resource_del(struct bnxt_ulp_context\t*ulp_ctxt,\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_fid_free(struct bnxt_ulp_context\t\t*ulp_ctxt,\n-\t\t\t     enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t     uint32_t\t\t\t\tfid);\n+int32_t\n+ulp_flow_db_fid_free(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t     enum bnxt_ulp_fdb_type tbl_idx,\n+\t\t     uint32_t fid);\n \n /*\n  *Get the flow database entry details\n@@ -169,11 +167,12 @@ int32_t\tulp_flow_db_fid_free(struct bnxt_ulp_context\t\t*ulp_ctxt,\n  *\n  * returns 0 on success and negative on failure.\n  */\n-int32_t\tulp_flow_db_resource_get(struct bnxt_ulp_context\t*ulp_ctxt,\n-\t\t\t\t enum bnxt_ulp_flow_db_tables\ttbl_idx,\n-\t\t\t\t uint32_t\t\t\tfid,\n-\t\t\t\t uint32_t\t\t\t*nxt_idx,\n-\t\t\t\t struct ulp_flow_db_res_params\t*params);\n+int32_t\n+ulp_flow_db_resource_get(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t uint32_t fid,\n+\t\t\t uint32_t *nxt_idx,\n+\t\t\t struct ulp_flow_db_res_params *params);\n \n /*\n  * Flush all flows in the flow database.\n@@ -183,8 +182,9 @@ int32_t\tulp_flow_db_resource_get(struct bnxt_ulp_context\t*ulp_ctxt,\n  *\n  * returns 0 on success or negative number on failure\n  */\n-int32_t\tulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,\n-\t\t\t\tuint32_t\t\tidx);\n+int32_t\n+ulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\tuint32_t idx);\n \n /*\n  * Flush all flows in the flow database that belong to a device function.\n@@ -212,7 +212,7 @@ ulp_flow_db_session_flow_flush(struct bnxt_ulp_context *ulp_ctx);\n  * Check that flow id matches the function id or not\n  *\n  * ulp_ctxt [in] Ptr to ulp context\n- * flow_db [in] Ptr to flow table\n+ * flow_id [in] flow id of the flow.\n  * func_id [in] The func_id to be set, for reset pass zero.\n  *\n  * returns true on success or false on failure\n@@ -236,15 +236,4 @@ ulp_default_flow_db_cfa_action_get(struct bnxt_ulp_context *ulp_ctx,\n \t\t\t\t   uint32_t flow_id,\n \t\t\t\t   uint16_t *cfa_action);\n \n-#ifdef RTE_LIBRTE_BNXT_TRUFLOW_DEBUG\n-/*\n- * Dump the flow database entry details\n- *\n- * ulp_ctxt [in] Ptr to ulp_context\n- *\n- * returns none\n- */\n-int32_t\tulp_flow_db_debug_dump(struct bnxt_ulp_context\t*ulp_ctxt);\n-#endif\n-\n #endif /* _ULP_FLOW_DB_H_ */\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\nindex 5ed481ab3..0f55f4f75 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n@@ -2482,12 +2482,12 @@ ulp_mapper_resource_free(struct bnxt_ulp_context *ulp,\n }\n \n int32_t\n-ulp_mapper_resources_free(struct bnxt_ulp_context\t*ulp_ctx,\n-\t\t\t  uint32_t fid,\n-\t\t\t  enum bnxt_ulp_flow_db_tables\ttbl_type)\n+ulp_mapper_resources_free(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\t  enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t  uint32_t fid)\n {\n-\tstruct ulp_flow_db_res_params\tres_parms = { 0 };\n-\tint32_t\t\t\t\trc, trc;\n+\tstruct ulp_flow_db_res_params res_parms = { 0 };\n+\tint32_t rc, trc;\n \n \tif (!ulp_ctx) {\n \t\tBNXT_TF_DBG(ERR, \"Invalid parms, unable to free flow\\n\");\n@@ -2499,7 +2499,7 @@ ulp_mapper_resources_free(struct bnxt_ulp_context\t*ulp_ctx,\n \t * while status is good\n \t */\n \tres_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_YES;\n-\trc = ulp_flow_db_resource_del(ulp_ctx, tbl_type, fid, &res_parms);\n+\trc = ulp_flow_db_resource_del(ulp_ctx, flow_type, fid, &res_parms);\n \n \tif (rc) {\n \t\t/*\n@@ -2507,7 +2507,7 @@ ulp_mapper_resources_free(struct bnxt_ulp_context\t*ulp_ctx,\n \t\t * It likely means that the flow did not exist in the flow db.\n \t\t */\n \t\tBNXT_TF_DBG(ERR, \"Flow[%d][0x%08x] failed to free (rc=%d)\\n\",\n-\t\t\t    tbl_type, fid, rc);\n+\t\t\t    flow_type, fid, rc);\n \t\treturn rc;\n \t}\n \n@@ -2521,20 +2521,20 @@ ulp_mapper_resources_free(struct bnxt_ulp_context\t*ulp_ctx,\n \t\t\tBNXT_TF_DBG(ERR,\n \t\t\t\t    \"Flow[%d][0x%x] Res[%d][0x%016\" PRIx64\n \t\t\t\t    \"] failed rc=%d.\\n\",\n-\t\t\t\t    tbl_type, fid, res_parms.resource_func,\n+\t\t\t\t    flow_type, fid, res_parms.resource_func,\n \t\t\t\t    res_parms.resource_hndl, trc);\n \n \t\t/* All subsequent call require the non-critical_resource */\n \t\tres_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \n \t\trc = ulp_flow_db_resource_del(ulp_ctx,\n-\t\t\t\t\t      tbl_type,\n+\t\t\t\t\t      flow_type,\n \t\t\t\t\t      fid,\n \t\t\t\t\t      &res_parms);\n \t}\n \n \t/* Free the Flow ID since we've removed all resources */\n-\trc = ulp_flow_db_fid_free(ulp_ctx, tbl_type, fid);\n+\trc = ulp_flow_db_fid_free(ulp_ctx, flow_type, fid);\n \n \treturn rc;\n }\n@@ -2568,8 +2568,9 @@ ulp_mapper_glb_resource_info_deinit(struct bnxt_ulp_context *ulp_ctx,\n }\n \n int32_t\n-ulp_mapper_flow_destroy(struct bnxt_ulp_context\t*ulp_ctx, uint32_t fid,\n-\t\t\tenum bnxt_ulp_flow_db_tables flow_tbl_type)\n+ulp_mapper_flow_destroy(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\tenum bnxt_ulp_fdb_type flow_type,\n+\t\t\tuint32_t fid)\n {\n \tint32_t rc;\n \n@@ -2582,7 +2583,7 @@ ulp_mapper_flow_destroy(struct bnxt_ulp_context\t*ulp_ctx, uint32_t fid,\n \t\treturn -EINVAL;\n \t}\n \n-\trc = ulp_mapper_resources_free(ulp_ctx, fid, flow_tbl_type);\n+\trc = ulp_mapper_resources_free(ulp_ctx, flow_type, fid);\n \tbnxt_ulp_cntxt_release_fdb_lock(ulp_ctx);\n \treturn rc;\n \n@@ -2624,7 +2625,7 @@ ulp_mapper_glb_template_table_init(struct bnxt_ulp_context *ulp_ctx)\n \t\tparms.ulp_ctx = ulp_ctx;\n \t\tparms.dev_id = dev_id;\n \t\tparms.mapper_data = mapper_data;\n-\t\tparms.flow_type = BNXT_ULP_DEFAULT_FLOW_TABLE;\n+\t\tparms.flow_type = BNXT_ULP_FDB_TYPE_DEFAULT;\n \t\tparms.tmpl_type = BNXT_ULP_TEMPLATE_TYPE_CLASS;\n \n \t\t/* Get the class table entry from dev id and class id */\n@@ -2758,8 +2759,8 @@ ulp_mapper_flow_create(struct bnxt_ulp_context *ulp_ctx,\n flow_error:\n \tbnxt_ulp_cntxt_release_fdb_lock(ulp_ctx);\n \t/* Free all resources that were allocated during flow creation */\n-\ttrc = ulp_mapper_flow_destroy(ulp_ctx, parms.fid,\n-\t\t\t\t      BNXT_ULP_REGULAR_FLOW_TABLE);\n+\ttrc = ulp_mapper_flow_destroy(ulp_ctx, BNXT_ULP_FDB_TYPE_REGULAR,\n+\t\t\t\t      parms.fid);\n \tif (trc)\n \t\tBNXT_TF_DBG(ERR, \"Failed to free all resources rc=%d\\n\", trc);\n \ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.h b/drivers/net/bnxt/tf_ulp/ulp_mapper.h\nindex 936fb9af4..6f93bcdc1 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.h\n@@ -111,16 +111,17 @@ ulp_mapper_flow_create(struct bnxt_ulp_context\t*ulp_ctx,\n \n /* Function that frees all resources associated with the flow. */\n int32_t\n-ulp_mapper_flow_destroy(struct bnxt_ulp_context\t*ulp_ctx, uint32_t fid,\n-\t\t\tenum bnxt_ulp_flow_db_tables flow_tbl_type);\n+ulp_mapper_flow_destroy(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\tenum bnxt_ulp_fdb_type flow_type,\n+\t\t\tuint32_t fid);\n \n /*\n  * Function that frees all resources and can be called on default or regular\n  * flows\n  */\n int32_t\n-ulp_mapper_resources_free(struct bnxt_ulp_context\t*ulp_ctx,\n-\t\t\t  uint32_t fid,\n-\t\t\t  enum bnxt_ulp_flow_db_tables\ttbl_type);\n+ulp_mapper_resources_free(struct bnxt_ulp_context *ulp_ctx,\n+\t\t\t  enum bnxt_ulp_fdb_type flow_type,\n+\t\t\t  uint32_t fid);\n \n #endif /* _ULP_MAPPER_H_ */\n",
    "prefixes": [
        "v2",
        "06/12"
    ]
}