get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 73211,
    "url": "https://patches.dpdk.org/api/patches/73211/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20200706082502.26935-14-somnath.kotur@broadcom.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20200706082502.26935-14-somnath.kotur@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200706082502.26935-14-somnath.kotur@broadcom.com",
    "date": "2020-07-06T08:24:55",
    "name": "[13/20] net/bnxt: enable support for PF and VF port action items",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "a49c8b0f81752d5aa902daff29bd14195c2ad020",
    "submitter": {
        "id": 908,
        "url": "https://patches.dpdk.org/api/people/908/?format=api",
        "name": "Somnath Kotur",
        "email": "somnath.kotur@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "https://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20200706082502.26935-14-somnath.kotur@broadcom.com/mbox/",
    "series": [
        {
            "id": 10805,
            "url": "https://patches.dpdk.org/api/series/10805/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=10805",
            "date": "2020-07-06T08:24:42",
            "name": "bnxt patches",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/10805/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/73211/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/73211/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 C1459A00C5;\n\tMon,  6 Jul 2020 10:32:52 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 993301DAD4;\n\tMon,  6 Jul 2020 10:30:23 +0200 (CEST)",
            "from relay.smtp.broadcom.com (relay.smtp.broadcom.com\n [192.19.211.62]) by dpdk.org (Postfix) with ESMTP id C14ED1D96F\n for <dev@dpdk.org>; Mon,  6 Jul 2020 10:30:06 +0200 (CEST)",
            "from dhcp-10-123-153-55.dhcp.broadcom.net\n (dhcp-10-123-153-55.dhcp.broadcom.net [10.123.153.55])\n by relay.smtp.broadcom.com (Postfix) with ESMTP id 57EDB2984E2;\n Mon,  6 Jul 2020 01:30:06 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 57EDB2984E2",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1594024206;\n bh=K5yjlwHgEkkqVsLHnAJ6AGYipjXA3Qr1q4BL2skUH9Y=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=u8+XbA2+Pn753gX1bZWhwNFYG+nNBZczgYE0Yn+YFPXLWyt8dhhmkHQ2yF81QuGKV\n ZmvrPCNhyxkf2ssWA0g4oJA+V0t1wuOQyu3mMQehiTA3C39VAymbwF4XjMpAjgz4IW\n ew8SPUCbYTeRxI4yumrI8fB0O7BjauDd7teFLXOg=",
        "From": "Somnath Kotur <somnath.kotur@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com",
        "Date": "Mon,  6 Jul 2020 13:54:55 +0530",
        "Message-Id": "<20200706082502.26935-14-somnath.kotur@broadcom.com>",
        "X-Mailer": "git-send-email 2.10.1.613.g2cc2e70",
        "In-Reply-To": "<20200706082502.26935-1-somnath.kotur@broadcom.com>",
        "References": "<20200706082502.26935-1-somnath.kotur@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH 13/20] net/bnxt: enable support for PF and VF\n\tport action items",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\n\nAdded support for the PF and VF port action items in the flow\ncreate. During flow create the output port action can now be specified\nas PF or VF port and those ports are parsed accordingly and converted\nto vnic or vport as per the flow direction.\n\nSigned-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>\nReviewed-by: Michael Baucom <michael.baucom@broadcom.com>\nSigned-off-by: Somnath Kotur <somnath.kotur@broadcom.com>\nSigned-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>\n---\n drivers/net/bnxt/tf_ulp/ulp_port_db.c          |  52 +++++++++\n drivers/net/bnxt/tf_ulp/ulp_port_db.h          |  26 +++++\n drivers/net/bnxt/tf_ulp/ulp_rte_parser.c       | 151 +++++++++++++++++--------\n drivers/net/bnxt/tf_ulp/ulp_rte_parser.h       |   4 +-\n drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h |   4 +-\n 5 files changed, 189 insertions(+), 48 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/tf_ulp/ulp_port_db.c b/drivers/net/bnxt/tf_ulp/ulp_port_db.c\nindex 3c5a218..122b5f4 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_port_db.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_port_db.c\n@@ -162,6 +162,7 @@ int32_t\tulp_port_db_dev_port_intf_update(struct bnxt_ulp_context *ulp_ctxt,\n \t\t\tbnxt_get_vnic_id(port_id, BNXT_ULP_INTF_TYPE_INVALID);\n \t\tfunc->phy_port_id = bnxt_get_phy_port_id(port_id);\n \t\tfunc->func_valid = true;\n+\t\tfunc->ifindex = ifindex;\n \t}\n \n \tif (intf->type == BNXT_ULP_INTF_TYPE_VF_REP) {\n@@ -178,6 +179,7 @@ int32_t\tulp_port_db_dev_port_intf_update(struct bnxt_ulp_context *ulp_ctxt,\n \t\tfunc->func_vnic =\n \t\t\tbnxt_get_vnic_id(port_id, BNXT_ULP_INTF_TYPE_VF_REP);\n \t\tfunc->phy_port_id = bnxt_get_phy_port_id(port_id);\n+\t\tfunc->ifindex = ifindex;\n \t}\n \n \tport_data = &port_db->phy_port_list[func->phy_port_id];\n@@ -461,3 +463,53 @@ ulp_port_db_phy_port_vport_get(struct bnxt_ulp_context *ulp_ctxt,\n \t*out_port = port_db->phy_port_list[phy_port].port_vport;\n \treturn 0;\n }\n+\n+/*\n+ * Api to get the port type for a given ulp ifindex.\n+ *\n+ * ulp_ctxt [in] Ptr to ulp context\n+ * ifindex [in] ulp ifindex\n+ *\n+ * Returns port type.\n+ */\n+enum bnxt_ulp_intf_type\n+ulp_port_db_port_type_get(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t  uint32_t ifindex)\n+{\n+\tstruct bnxt_ulp_port_db *port_db;\n+\n+\tport_db = bnxt_ulp_cntxt_ptr2_port_db_get(ulp_ctxt);\n+\tif (!port_db || ifindex >= port_db->ulp_intf_list_size || !ifindex) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid Arguments\\n\");\n+\t\treturn BNXT_ULP_INTF_TYPE_INVALID;\n+\t}\n+\treturn port_db->ulp_intf_list[ifindex].type;\n+}\n+\n+/*\n+ * Api to get the ulp ifindex for a given function id.\n+ *\n+ * ulp_ctxt [in] Ptr to ulp context\n+ * func_id [in].device func id\n+ * ifindex [out] ulp ifindex\n+ *\n+ * Returns 0 on success or negative number on failure.\n+ */\n+int32_t\n+ulp_port_db_dev_func_id_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t\t     uint32_t func_id, uint32_t *ifindex)\n+{\n+\tstruct bnxt_ulp_port_db *port_db;\n+\n+\t*ifindex = 0;\n+\tport_db = bnxt_ulp_cntxt_ptr2_port_db_get(ulp_ctxt);\n+\tif (!port_db || func_id >= BNXT_PORT_DB_MAX_FUNC) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid Arguments\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\tif (!port_db->ulp_func_id_tbl[func_id].func_valid)\n+\t\treturn -ENOENT;\n+\n+\t*ifindex = port_db->ulp_func_id_tbl[func_id].ifindex;\n+\treturn 0;\n+}\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_port_db.h b/drivers/net/bnxt/tf_ulp/ulp_port_db.h\nindex e3870f9..4afbb84 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_port_db.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_port_db.h\n@@ -46,6 +46,7 @@ struct ulp_func_if_info {\n \tuint16_t\t\tfunc_parif;\n \tuint16_t\t\tfunc_vnic;\n \tuint16_t\t\tphy_port_id;\n+\tuint16_t\t\tifindex;\n };\n \n /* Structure for the Port database resource information. */\n@@ -218,4 +219,29 @@ ulp_port_db_phy_port_vport_get(struct bnxt_ulp_context *ulp_ctxt,\n \t\t\t       uint32_t phy_port,\n \t\t\t       uint16_t *out_port);\n \n+/*\n+ * Api to get the port type for a given ulp ifindex.\n+ *\n+ * ulp_ctxt [in] Ptr to ulp context\n+ * ifindex [in] ulp ifindex\n+ *\n+ * Returns port type.\n+ */\n+enum bnxt_ulp_intf_type\n+ulp_port_db_port_type_get(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t  uint32_t ifindex);\n+\n+/*\n+ * Api to get the ulp ifindex for a given function id.\n+ *\n+ * ulp_ctxt [in] Ptr to ulp context\n+ * func_id [in].device func id\n+ * ifindex [out] ulp ifindex\n+ *\n+ * Returns 0 on success or negative number on failure.\n+ */\n+int32_t\n+ulp_port_db_dev_func_id_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt,\n+\t\t\t\t     uint32_t func_id, uint32_t *ifindex);\n+\n #endif /* _ULP_PORT_DB_H_ */\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c\nindex 58090bf..3c65442 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c\n@@ -155,8 +155,8 @@ bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[],\n \t\t}\n \t\taction_item++;\n \t}\n-\t/* update the implied VNIC */\n-\tulp_rte_parser_vnic_process(params);\n+\t/* update the implied port details */\n+\tulp_rte_parser_implied_act_port_process(params);\n \treturn BNXT_TF_RC_SUCCESS;\n }\n \n@@ -235,30 +235,26 @@ ulp_rte_parser_svif_process(struct ulp_rte_parser_params *params)\n \t\t\t\t       port_id, svif_mask);\n }\n \n-/* Function to handle the implicit VNIC RTE port id */\n+/* Function to handle the implicit action port id */\n int32_t\n-ulp_rte_parser_vnic_process(struct ulp_rte_parser_params *params)\n+ulp_rte_parser_implied_act_port_process(struct ulp_rte_parser_params *params)\n {\n-\tstruct ulp_rte_act_bitmap *act = &params->act_bitmap;\n+\tstruct rte_flow_action action_item = {0};\n+\tstruct rte_flow_action_port_id port_id = {0};\n \n-\tif (ULP_BITMAP_ISSET(act->bits, BNXT_ULP_ACTION_BIT_VNIC) ||\n-\t    ULP_BITMAP_ISSET(act->bits, BNXT_ULP_ACTION_BIT_VPORT)) {\n-\t\t/*\n-\t\t * Reset the vnic/vport action bitmaps\n-\t\t * it is not required for match\n-\t\t */\n-\t\tULP_BITMAP_RESET(params->act_bitmap.bits,\n-\t\t\t\t BNXT_ULP_ACTION_BIT_VNIC);\n-\t\tULP_BITMAP_RESET(params->act_bitmap.bits,\n-\t\t\t\t BNXT_ULP_ACTION_BIT_VPORT);\n+\t/* Read the action port set bit */\n+\tif (ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET)) {\n+\t\t/* Already set, so just exit */\n \t\treturn BNXT_TF_RC_SUCCESS;\n \t}\n+\tport_id.id = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_INCOMING_IF);\n+\taction_item.conf = &port_id;\n \n-\t/* Update the vnic details */\n-\tulp_rte_pf_act_handler(NULL, params);\n-\t/* Reset the hdr_bitmap with vnic bit */\n-\tULP_BITMAP_RESET(params->act_bitmap.bits, BNXT_ULP_ACTION_BIT_VNIC);\n+\t/* Update the action port based on incoming port */\n+\tulp_rte_port_id_act_handler(&action_item, params);\n \n+\t/* Reset the action port set bit */\n+\tULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET, 0);\n \treturn BNXT_TF_RC_SUCCESS;\n }\n \n@@ -1314,46 +1310,111 @@ int32_t\n ulp_rte_pf_act_handler(const struct rte_flow_action *action_item __rte_unused,\n \t\t       struct ulp_rte_parser_params *params)\n {\n-\tuint32_t svif;\n+\tuint32_t port_id, pid;\n+\tuint32_t ifindex;\n+\tuint16_t pid_s;\n+\tstruct ulp_rte_act_prop *act = &params->act_prop;\n \n-\t/* Update the hdr_bitmap with vnic bit */\n-\tULP_BITMAP_SET(params->act_bitmap.bits, BNXT_ULP_ACTION_BIT_VNIC);\n+\t/* Get the port id of the current device */\n+\tport_id = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_INCOMING_IF);\n+\n+\t/* Get the port db ifindex */\n+\tif (ulp_port_db_dev_port_to_ulp_index(params->ulp_ctx, port_id,\n+\t\t\t\t\t      &ifindex)) {\n+\t\tBNXT_TF_DBG(ERR, \"Invalid port id\\n\");\n+\t\treturn BNXT_TF_RC_ERROR;\n+\t}\n \n-\t/* copy the PF of the current device into VNIC Property */\n-\tsvif = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_INCOMING_IF);\n-\tsvif = bnxt_get_vnic_id(svif, BNXT_ULP_INTF_TYPE_INVALID);\n-\tsvif = rte_cpu_to_be_32(svif);\n-\tmemcpy(&params->act_prop.act_details[BNXT_ULP_ACT_PROP_IDX_VNIC],\n-\t       &svif, BNXT_ULP_ACT_PROP_SZ_VNIC);\n+\t/* Check the port is PF port */\n+\tif (ulp_port_db_port_type_get(params->ulp_ctx,\n+\t\t\t\t      ifindex) != BNXT_ULP_INTF_TYPE_PF) {\n+\t\tBNXT_TF_DBG(ERR, \"Port is not a PF port\\n\");\n+\t\treturn BNXT_TF_RC_ERROR;\n+\t}\n \n+\tif (params->dir == ULP_DIR_EGRESS) {\n+\t\t/* For egress direction, fill vport */\n+\t\tif (ulp_port_db_vport_get(params->ulp_ctx, ifindex, &pid_s))\n+\t\t\treturn BNXT_TF_RC_ERROR;\n+\t\tpid = pid_s;\n+\t\tpid = rte_cpu_to_be_32(pid);\n+\t\tmemcpy(&act->act_details[BNXT_ULP_ACT_PROP_IDX_VPORT],\n+\t\t       &pid, BNXT_ULP_ACT_PROP_SZ_VPORT);\n+\t} else {\n+\t\t/* For ingress direction, fill vnic */\n+\t\tif (ulp_port_db_default_vnic_get(params->ulp_ctx, ifindex,\n+\t\t\t\t\t\t BNXT_ULP_DRV_FUNC_VNIC,\n+\t\t\t\t\t\t &pid_s))\n+\t\t\treturn BNXT_TF_RC_ERROR;\n+\t\tpid = pid_s;\n+\t\tpid = rte_cpu_to_be_32(pid);\n+\t\tmemcpy(&act->act_details[BNXT_ULP_ACT_PROP_IDX_VNIC],\n+\t\t       &pid, BNXT_ULP_ACT_PROP_SZ_VNIC);\n+\t}\n+\n+\t/*Update the action port set bit */\n+\tULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET, 1);\n \treturn BNXT_TF_RC_SUCCESS;\n }\n \n /* Function to handle the parsing of RTE Flow action VF. */\n int32_t\n ulp_rte_vf_act_handler(const struct rte_flow_action *action_item,\n-\t\t       struct ulp_rte_parser_params *param)\n+\t\t       struct ulp_rte_parser_params *params)\n {\n \tconst struct rte_flow_action_vf *vf_action;\n \tuint32_t pid;\n+\tuint32_t ifindex;\n+\tuint16_t pid_s;\n+\tstruct ulp_rte_act_prop *act = &params->act_prop;\n+\tenum bnxt_ulp_intf_type intf_type;\n \n \tvf_action = action_item->conf;\n-\tif (vf_action) {\n-\t\tif (vf_action->original) {\n-\t\t\tBNXT_TF_DBG(ERR,\n-\t\t\t\t    \"Parse Error:VF Original not supported\\n\");\n-\t\t\treturn BNXT_TF_RC_PARSE_ERR;\n-\t\t}\n-\t\t/* TBD: Update the computed VNIC using VF conversion */\n-\t\tpid = bnxt_get_vnic_id(vf_action->id,\n-\t\t\t\t       BNXT_ULP_INTF_TYPE_INVALID);\n+\tif (!vf_action) {\n+\t\tBNXT_TF_DBG(ERR, \"ParseErr: Invalid Argument\\n\");\n+\t\treturn BNXT_TF_RC_PARSE_ERR;\n+\t}\n+\n+\tif (vf_action->original) {\n+\t\tBNXT_TF_DBG(ERR, \"ParseErr:VF Original not supported\\n\");\n+\t\treturn BNXT_TF_RC_PARSE_ERR;\n+\t}\n+\n+\t/* Check the port is VF port */\n+\tif (ulp_port_db_dev_func_id_to_ulp_index(params->ulp_ctx, vf_action->id,\n+\t\t\t\t\t\t &ifindex)) {\n+\t\tBNXT_TF_DBG(ERR, \"VF is not valid interface\\n\");\n+\t\treturn BNXT_TF_RC_ERROR;\n+\t}\n+\tintf_type = ulp_port_db_port_type_get(params->ulp_ctx, ifindex);\n+\tif (intf_type != BNXT_ULP_INTF_TYPE_VF &&\n+\t    intf_type != BNXT_ULP_INTF_TYPE_TRUSTED_VF) {\n+\t\tBNXT_TF_DBG(ERR, \"Port is not a VF port\\n\");\n+\t\treturn BNXT_TF_RC_ERROR;\n+\t}\n+\n+\tif (params->dir == ULP_DIR_EGRESS) {\n+\t\t/* For egress direction, fill vport */\n+\t\tif (ulp_port_db_vport_get(params->ulp_ctx, ifindex, &pid_s))\n+\t\t\treturn BNXT_TF_RC_ERROR;\n+\t\tpid = pid_s;\n \t\tpid = rte_cpu_to_be_32(pid);\n-\t\tmemcpy(&param->act_prop.act_details[BNXT_ULP_ACT_PROP_IDX_VNIC],\n+\t\tmemcpy(&act->act_details[BNXT_ULP_ACT_PROP_IDX_VPORT],\n+\t\t       &pid, BNXT_ULP_ACT_PROP_SZ_VPORT);\n+\t} else {\n+\t\t/* For ingress direction, fill vnic */\n+\t\tif (ulp_port_db_default_vnic_get(params->ulp_ctx, ifindex,\n+\t\t\t\t\t\t BNXT_ULP_DRV_FUNC_VNIC,\n+\t\t\t\t\t\t &pid_s))\n+\t\t\treturn BNXT_TF_RC_ERROR;\n+\t\tpid = pid_s;\n+\t\tpid = rte_cpu_to_be_32(pid);\n+\t\tmemcpy(&act->act_details[BNXT_ULP_ACT_PROP_IDX_VNIC],\n \t\t       &pid, BNXT_ULP_ACT_PROP_SZ_VNIC);\n \t}\n \n-\t/* Update the hdr_bitmap with count */\n-\tULP_BITMAP_SET(param->act_bitmap.bits, BNXT_ULP_ACTION_BIT_VNIC);\n+\t/*Update the action port set bit */\n+\tULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET, 1);\n \treturn BNXT_TF_RC_SUCCESS;\n }\n \n@@ -1415,8 +1476,8 @@ ulp_rte_port_id_act_handler(const struct rte_flow_action *act_item,\n \t\t       &pid, BNXT_ULP_ACT_PROP_SZ_VNIC);\n \t}\n \n-\t/*Update the hdr_bitmap with vnic */\n-\tULP_BITMAP_SET(param->act_bitmap.bits, BNXT_ULP_ACTION_BIT_VNIC);\n+\t/*Update the action port set bit */\n+\tULP_COMP_FLD_IDX_WR(param, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET, 1);\n \treturn BNXT_TF_RC_SUCCESS;\n }\n \n@@ -1460,8 +1521,8 @@ ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item,\n \tmemcpy(&prm->act_prop.act_details[BNXT_ULP_ACT_PROP_IDX_VPORT],\n \t       &pid, BNXT_ULP_ACT_PROP_SZ_VPORT);\n \n-\t/* update the hdr_bitmap with vport */\n-\tULP_BITMAP_SET(prm->act_bitmap.bits, BNXT_ULP_ACTION_BIT_VPORT);\n+\t/*Update the action port set bit */\n+\tULP_COMP_FLD_IDX_WR(prm, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET, 1);\n \treturn BNXT_TF_RC_SUCCESS;\n }\n \ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h\nindex 1bb4721..49e9cbb 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h\n+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h\n@@ -35,9 +35,9 @@\n int32_t\n ulp_rte_parser_svif_process(struct ulp_rte_parser_params *params);\n \n-/* Function to handle the implicit VNIC RTE port id */\n+/* Function to handle the implicit action port id */\n int32_t\n-ulp_rte_parser_vnic_process(struct ulp_rte_parser_params *params);\n+ulp_rte_parser_implied_act_port_process(struct ulp_rte_parser_params *params);\n \n /*\n  * Function to handle the parsing of RTE Flows and placing\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 13d1782..ada3a5e 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@@ -128,7 +128,9 @@ enum bnxt_ulp_cf_idx {\n \tBNXT_ULP_CF_IDX_ACT_ENCAP_IPV6_FLAG = 32,\n \tBNXT_ULP_CF_IDX_ACT_DEC_TTL = 33,\n \tBNXT_ULP_CF_IDX_ACT_T_DEC_TTL = 34,\n-\tBNXT_ULP_CF_IDX_LAST = 35\n+\tBNXT_ULP_CF_IDX_ACT_PORT_IS_SET = 35,\n+\tBNXT_ULP_CF_IDX_MATCH_PORT_TYPE = 36,\n+\tBNXT_ULP_CF_IDX_LAST = 37\n };\n \n enum bnxt_ulp_cond_opcode {\n",
    "prefixes": [
        "13/20"
    ]
}