Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/93576/?format=api
http://patches.dpdk.org/api/patches/93576/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210530085929.29695-29-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-29-venkatkumar.duvvuru@broadcom.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20210530085929.29695-29-venkatkumar.duvvuru@broadcom.com", "date": "2021-05-30T08:58:59", "name": "[28/58] net/bnxt: add support for mapper flow database opcodes", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "ae91af41580299e20ecc78d4d1dc554035c2fbe3", "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-29-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/93576/comments/", "check": "success", "checks": "http://patches.dpdk.org/api/patches/93576/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 0B4FFA0524;\n\tSun, 30 May 2021 11:04:26 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 625D4410F9;\n\tSun, 30 May 2021 11:01:17 +0200 (CEST)", "from relay.smtp-ext.broadcom.com (saphodev.broadcom.com\n [192.19.11.229]) by mails.dpdk.org (Postfix) with ESMTP id 3BD4540E01\n for <dev@dpdk.org>; Sun, 30 May 2021 11:01:15 +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 CE94E7DC0;\n Sun, 30 May 2021 02:01:13 -0700 (PDT)" ], "DKIM-Filter": "OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com CE94E7DC0", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1622365274;\n bh=cPCwC6QrZComzBuVXBBNPIHxDuxFxTn3EUkazHZP2+A=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=ECzxhh8c/6c+La8MMZed9/tAklqXmzGlEF5s1SwVF2tA9MgYcpY5USKXA5xE/j4Y0\n mH9EGFp6yC4GAjqw5zNEMnABti7QvZQsq6ND9HzbvD0Kxx/GQn//kIW+rBnYOcPt5X\n UXcS8F0lpOxtlp5AwgoEShsjF03gMMNPcyp9I9OI=", "From": "Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>", "To": "dev@dpdk.org", "Cc": "Kishore Padmanabha <kishore.padmanabha@broadcom.com>,\n Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>", "Date": "Sun, 30 May 2021 14:28:59 +0530", "Message-Id": "<20210530085929.29695-29-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 28/58] net/bnxt: add support for mapper flow\n database opcodes", "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: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\n\nAdded support for mapper flow database opcode to enable\nshared resources like mirror action. This allows mapper\nto conditionally populate flow database based on template content.\n\nSigned-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\nSigned-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>\nReviewed-by: Michael Baucom <michael.baucom@broadcom.com>\n---\n drivers/net/bnxt/tf_ulp/ulp_mapper.c | 119 ++++++++++++------\n .../net/bnxt/tf_ulp/ulp_template_db_enum.h | 8 ++\n drivers/net/bnxt/tf_ulp/ulp_template_struct.h | 4 +\n 3 files changed, 95 insertions(+), 36 deletions(-)", "diff": "diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\nindex 2bb8d08699..4e9211a7ab 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c\n@@ -469,6 +469,80 @@ ulp_mapper_child_flow_free(struct bnxt_ulp_context *ulp,\n \treturn 0;\n }\n \n+/*\n+ * Process the flow database opcode action.\n+ * returns 0 on success.\n+ */\n+static int32_t\n+ulp_mapper_fdb_opc_process(struct bnxt_ulp_mapper_parms *parms,\n+\t\t\t struct bnxt_ulp_mapper_tbl_info *tbl,\n+\t\t\t struct ulp_flow_db_res_params *fid_parms)\n+{\n+\tuint32_t push_fid, fid = 0;\n+\tuint64_t val64;\n+\tint32_t rc = 0;\n+\n+\tswitch (tbl->fdb_opcode) {\n+\tcase BNXT_ULP_FDB_OPC_PUSH:\n+\t\tpush_fid = parms->fid;\n+\t\tbreak;\n+\tcase BNXT_ULP_FDB_OPC_ALLOC_PUSH_REGFILE:\n+\t\t/* allocate a new fid */\n+\t\trc = ulp_flow_db_fid_alloc(parms->ulp_ctx,\n+\t\t\t\t\t BNXT_ULP_FDB_TYPE_REGULAR,\n+\t\t\t\t\t tbl->resource_func, &fid);\n+\t\tif (rc) {\n+\t\t\tBNXT_TF_DBG(ERR,\n+\t\t\t\t \"Unable to allocate flow table entry\\n\");\n+\t\t\treturn rc;\n+\t\t}\n+\t\t/* Store the allocated fid in regfile*/\n+\t\tval64 = fid;\n+\t\trc = ulp_regfile_write(parms->regfile, tbl->flow_db_operand,\n+\t\t\t\t val64);\n+\t\tif (!rc) {\n+\t\t\tBNXT_TF_DBG(ERR, \"Write regfile[%d] failed\\n\",\n+\t\t\t\t tbl->flow_db_operand);\n+\t\t\trc = -EINVAL;\n+\t\t\tgoto error;\n+\t\t}\n+\t\t/* Use the allocated fid to update the flow resource */\n+\t\tpush_fid = fid;\n+\t\tbreak;\n+\tcase BNXT_ULP_FDB_OPC_PUSH_REGFILE:\n+\t\t/* get the fid from the regfile */\n+\t\trc = ulp_regfile_read(parms->regfile, tbl->flow_db_operand,\n+\t\t\t\t &val64);\n+\t\tif (!rc) {\n+\t\t\tBNXT_TF_DBG(ERR, \"regfile[%d] read oob\\n\",\n+\t\t\t\t tbl->flow_db_operand);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\t/* Use the extracted fid to update the flow resource */\n+\t\tpush_fid = (uint32_t)val64;\n+\t\tbreak;\n+\tdefault:\n+\t\treturn rc; /* Nothing to be done */\n+\t}\n+\n+\t/* Add the resource to the flow database */\n+\trc = ulp_flow_db_resource_add(parms->ulp_ctx, parms->flow_type,\n+\t\t\t\t push_fid, fid_parms);\n+\tif (rc) {\n+\t\tBNXT_TF_DBG(ERR, \"Failed to add res to flow %x rc = %d\\n\",\n+\t\t\t push_fid, rc);\n+\t\tgoto error;\n+\t}\n+\treturn rc;\n+\n+error:\n+\t/* free the allocated fid */\n+\tif (fid)\n+\t\tulp_flow_db_fid_free(parms->ulp_ctx,\n+\t\t\t\t BNXT_ULP_FDB_TYPE_REGULAR, fid);\n+\treturn rc;\n+}\n+\n /*\n * Process the identifier instruction and either store it in the flow database\n * or return it in the val (if not NULL) on success. If val is NULL, the\n@@ -524,10 +598,7 @@ ulp_mapper_ident_process(struct bnxt_ulp_mapper_parms *parms,\n \t\tfid_parms.resource_hndl\t= iparms.id;\n \t\tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \n-\t\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t\t parms->flow_type,\n-\t\t\t\t\t parms->fid,\n-\t\t\t\t\t &fid_parms);\n+\t\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \t\tif (rc) {\n \t\t\tBNXT_TF_DBG(ERR, \"Failed to link res to flow rc = %d\\n\",\n \t\t\t\t rc);\n@@ -618,10 +689,7 @@ ulp_mapper_ident_extract(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.resource_type = ident->ident_type;\n \tfid_parms.resource_hndl = sparms.search_id;\n \tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n-\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t parms->flow_type,\n-\t\t\t\t parms->fid,\n-\t\t\t\t &fid_parms);\n+\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Failed to link res to flow rc = %d\\n\",\n \t\t\t rc);\n@@ -1103,10 +1171,7 @@ ulp_mapper_mark_gfid_process(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \tfid_parms.resource_type\t= mark_flag;\n \tfid_parms.resource_hndl\t= gfid;\n-\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t parms->flow_type,\n-\t\t\t\t parms->fid,\n-\t\t\t\t &fid_parms);\n+\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \tif (rc)\n \t\tBNXT_TF_DBG(ERR, \"Fail to link res to flow rc = %d\\n\", rc);\n \treturn rc;\n@@ -1152,10 +1217,7 @@ ulp_mapper_mark_act_ptr_process(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \tfid_parms.resource_type\t= mark_flag;\n \tfid_parms.resource_hndl\t= act_idx;\n-\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t parms->flow_type,\n-\t\t\t\t parms->fid,\n-\t\t\t\t &fid_parms);\n+\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \tif (rc)\n \t\tBNXT_TF_DBG(ERR, \"Fail to link res to flow rc = %d\\n\", rc);\n \treturn rc;\n@@ -1201,10 +1263,7 @@ ulp_mapper_mark_vfr_idx_process(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \tfid_parms.resource_type\t= mark_flag;\n \tfid_parms.resource_hndl\t= act_idx;\n-\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t parms->flow_type,\n-\t\t\t\t parms->fid,\n-\t\t\t\t &fid_parms);\n+\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \tif (rc)\n \t\tBNXT_TF_DBG(ERR, \"Fail to link res to flow rc = %d\\n\", rc);\n \treturn rc;\n@@ -1580,10 +1639,7 @@ ulp_mapper_tcam_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t\tfid_parms.resource_type\t= tbl->resource_type;\n \t\tfid_parms.critical_resource = tbl->critical_resource;\n \t\tfid_parms.resource_hndl\t= idx;\n-\t\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t\t parms->flow_type,\n-\t\t\t\t\t parms->fid,\n-\t\t\t\t\t &fid_parms);\n+\t\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \t\tif (rc) {\n \t\t\tBNXT_TF_DBG(ERR,\n \t\t\t\t \"Failed to link resource to flow rc = %d\\n\",\n@@ -1741,10 +1797,7 @@ ulp_mapper_em_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.critical_resource\t= tbl->critical_resource;\n \tfid_parms.resource_hndl\t\t= iparms.flow_handle;\n \n-\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t parms->flow_type,\n-\t\t\t\t parms->fid,\n-\t\t\t\t &fid_parms);\n+\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Fail to link res to flow rc = %d\\n\",\n \t\t\t rc);\n@@ -1968,10 +2021,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \tfid_parms.resource_hndl\t= index;\n \tfid_parms.critical_resource = BNXT_ULP_CRITICAL_RESOURCE_NO;\n \n-\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t parms->flow_type,\n-\t\t\t\t parms->fid,\n-\t\t\t\t &fid_parms);\n+\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \tif (rc) {\n \t\tBNXT_TF_DBG(ERR, \"Failed to link resource to flow rc = %d\\n\",\n \t\t\t rc);\n@@ -2280,10 +2330,7 @@ ulp_mapper_gen_tbl_process(struct bnxt_ulp_mapper_parms *parms,\n \t\tfid_parms.resource_sub_type = tbl->resource_sub_type;\n \t\tfid_parms.resource_hndl\t= ckey;\n \t\tfid_parms.critical_resource = tbl->critical_resource;\n-\t\trc = ulp_flow_db_resource_add(parms->ulp_ctx,\n-\t\t\t\t\t parms->flow_type,\n-\t\t\t\t\t parms->fid,\n-\t\t\t\t\t &fid_parms);\n+\t\trc = ulp_mapper_fdb_opc_process(parms, tbl, &fid_parms);\n \t\tif (rc)\n \t\t\tBNXT_TF_DBG(ERR, \"Fail to add gen ent flowdb %d\\n\", rc);\n \t}\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 2a9a290eea..f16651a821 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@@ -179,6 +179,14 @@ enum bnxt_ulp_direction {\n \tBNXT_ULP_DIRECTION_LAST = 2\n };\n \n+enum bnxt_ulp_fdb_opc {\n+\tBNXT_ULP_FDB_OPC_PUSH = 0,\n+\tBNXT_ULP_FDB_OPC_ALLOC_PUSH_REGFILE = 1,\n+\tBNXT_ULP_FDB_OPC_PUSH_REGFILE = 2,\n+\tBNXT_ULP_FDB_OPC_NOP = 3,\n+\tBNXT_ULP_FDB_OPC_LAST = 4\n+};\n+\n enum bnxt_ulp_flow_mem_type {\n \tBNXT_ULP_FLOW_MEM_TYPE_INT = 0,\n \tBNXT_ULP_FLOW_MEM_TYPE_EXT = 1,\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\nindex 67308f1cf1..167116a2f4 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h\n@@ -220,6 +220,10 @@ struct bnxt_ulp_mapper_tbl_info {\n \n \t/* Table opcode for table operations */\n \tuint32_t\t\t\ttbl_opcode;\n+\n+\t/* FDB table opcode */\n+\tenum bnxt_ulp_fdb_opc\t\tfdb_opcode;\n+\tuint32_t\t\t\tflow_db_operand;\n };\n \n struct bnxt_ulp_mapper_key_field_info {\n", "prefixes": [ "28/58" ] }{ "id": 93576, "url": "