DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: dev@dpdk.org
Cc: Kishore Padmanabha <kishore.padmanabha@broadcom.com>,
	Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>,
	Shahaji Bhosle <sbhosle@broadcom.com>
Subject: [dpdk-dev] [PATCH v5 16/22] net/bnxt: modify VF representor alloc sequence
Date: Thu,  4 Nov 2021 14:58:40 -0700	[thread overview]
Message-ID: <20211104215846.58672-17-ajit.khaparde@broadcom.com> (raw)
In-Reply-To: <20211104215846.58672-1-ajit.khaparde@broadcom.com>

[-- Attachment #1: Type: text/plain, Size: 3599 bytes --]

From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>

When the VF representor interface is created, the VF pair relationship
is established between the VF and it is representor. If the pair
already exists then the pair needs to be deleted before allocation.
This could happen if the application is abruptly killed and restarted.
If the deletion of an existing VF rep is not done then hw pipeline is not
cleaned and a new allocation shall leave the hw in inconsistent state.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Shahaji Bhosle <sbhosle@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 28 ++++++++++++++++++++++++++++
 drivers/net/bnxt/bnxt_hwrm.h |  1 +
 drivers/net/bnxt/bnxt_reps.c |  6 ++++++
 3 files changed, 35 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 94a7daf632..67ed807dad 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -5994,6 +5994,34 @@ int bnxt_hwrm_first_vf_id_query(struct bnxt *bp, uint16_t fid,
 	return rc;
 }
 
+int bnxt_hwrm_cfa_pair_exists(struct bnxt *bp, struct bnxt_representor *rep_bp)
+{
+	struct hwrm_cfa_pair_info_output *resp = bp->hwrm_cmd_resp_addr;
+	struct hwrm_cfa_pair_info_input req = {0};
+	int rc = 0;
+
+	if (!(BNXT_PF(bp) || BNXT_VF_IS_TRUSTED(bp))) {
+		PMD_DRV_LOG(DEBUG,
+			    "Not a PF or trusted VF. Command not supported\n");
+		return 0;
+	}
+
+	HWRM_PREP(&req, HWRM_CFA_PAIR_INFO, BNXT_USE_CHIMP_MB);
+	snprintf(req.pair_name, sizeof(req.pair_name), "%svfr%d",
+		 bp->eth_dev->data->name, rep_bp->vf_id);
+	req.flags =
+		rte_cpu_to_le_32(HWRM_CFA_PAIR_INFO_INPUT_FLAGS_LOOKUP_TYPE);
+
+	rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);
+	HWRM_CHECK_RESULT();
+	if (rc == HWRM_ERR_CODE_SUCCESS && strlen(resp->pair_name)) {
+		HWRM_UNLOCK();
+		return !rc;
+	}
+	HWRM_UNLOCK();
+	return rc;
+}
+
 int bnxt_hwrm_cfa_pair_alloc(struct bnxt *bp, struct bnxt_representor *rep_bp)
 {
 	struct hwrm_cfa_pair_alloc_output *resp = bp->hwrm_cmd_resp_addr;
diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h
index 72d486468c..f8f0556201 100644
--- a/drivers/net/bnxt/bnxt_hwrm.h
+++ b/drivers/net/bnxt/bnxt_hwrm.h
@@ -293,6 +293,7 @@ int bnxt_clear_one_vnic_filter(struct bnxt *bp,
 void bnxt_free_vf_info(struct bnxt *bp);
 int bnxt_hwrm_first_vf_id_query(struct bnxt *bp, uint16_t fid,
 				uint16_t *first_vf_id);
+int bnxt_hwrm_cfa_pair_exists(struct bnxt *bp, struct bnxt_representor *rep_bp);
 int bnxt_hwrm_cfa_pair_alloc(struct bnxt *bp, struct bnxt_representor *rep);
 int bnxt_hwrm_cfa_pair_free(struct bnxt *bp, struct bnxt_representor *rep);
 int bnxt_hwrm_cfa_adv_flow_mgmt_qcaps(struct bnxt *bp);
diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c
index 60aaa56299..22b76b72b9 100644
--- a/drivers/net/bnxt/bnxt_reps.c
+++ b/drivers/net/bnxt/bnxt_reps.c
@@ -315,6 +315,12 @@ static int bnxt_tf_vfr_alloc(struct rte_eth_dev *vfr_ethdev)
 		BNXT_TF_DBG(ERR, "Invalid arguments\n");
 		return 0;
 	}
+	/* update the port id so you can backtrack to ethdev */
+	vfr->dpdk_port_id = vfr_ethdev->data->port_id;
+
+	/* If pair is present, then delete the pair */
+	if (bnxt_hwrm_cfa_pair_exists(parent_bp, vfr))
+		(void)bnxt_hwrm_cfa_pair_free(parent_bp, vfr);
 
 	/* Update the ULP portdata base with the new VFR interface */
 	rc = ulp_port_db_dev_port_intf_update(parent_bp->ulp_ctx, vfr_ethdev);
-- 
2.30.1 (Apple Git-130)


  parent reply	other threads:[~2021-11-04 22:00 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-01  5:59 [dpdk-dev] [PATCH 0/9] fixes and enhancements to Truflow Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 1/9] net/bnxt: add nat support for dest IP and port combination Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 2/9] net/bnxt: support multi root capability flag Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 3/9] net/bnxt: fix the out of boundary issue in hash list Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 4/9] net/bnxt: add clear on read stats support for Thor Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 5/9] net/bnxt: add feature capability option for socket direct Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 6/9] net/bnxt: enable wildcard match for ingress flows Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 7/9] net/bnxt: support inner IP header for GRE tunnel flows Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 8/9] net/bnxt: get Truflow version Venkat Duvvuru
2021-10-01  5:59 ` [dpdk-dev] [PATCH 9/9] net/bnxt: increase scaling numbers on Thor Venkat Duvvuru
2021-10-26  5:05 ` [dpdk-dev] [PATCH v2 00/19] fixes and enhancements to Truflow Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 01/19] net/bnxt: add NAT support for dest IP and port combination Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 02/19] net/bnxt: add support for multi root capability Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 03/19] net/bnxt: fix the out of boundary issue in hash list Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 04/19] net/bnxt: add clear on read support Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 05/19] net/bnxt: add capability option for socket redirect Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 06/19] net/bnxt: enable wildcard match for ingress flows Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 07/19] net/bnxt: support inner IP header for GRE tunnel flows Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 08/19] net/bnxt: get TruFlow version Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 09/19] net/bnxt: increase flow scale for Thor Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 10/19] net/bnxt: remove accumulation of stats devargs argument Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 11/19] net/bnxt: fix clang compiler warnings Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 12/19] net/bnxt: updated the log messages Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 13/19] net/bnxt: add support for socket redirect feature Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 14/19] net/bnxt: delete the VF pair before VF representor alloc Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 15/19] net/bnxt: add new API TruFlow get SRAM resources Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 16/19] net/bnxt: add TruFlow and AFM SRAM partitioning support Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 17/19] net/bnxt: add Tx TruFlow table config for p4 Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 18/19] net/bnxt: remove 2-slice WC entries for scale Venkat Duvvuru
2021-10-26  5:05   ` [dpdk-dev] [PATCH v2 19/19] net/bnxt: check for mismatch of control and physical port Venkat Duvvuru
2021-11-02  4:05 ` [dpdk-dev] [PATCH v3 00/20] fixes and enhancements to Truflow Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 01/20] net/bnxt: add NAT support for dest IP and port combination Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 02/20] net/bnxt: add support for multi root capability Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 03/20] net/bnxt: fix the out of boundary issue in hash list Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 04/20] net/bnxt: add clear on read support Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 05/20] net/bnxt: add capability option for socket redirect Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 06/20] net/bnxt: enable wildcard match for ingress flows Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 07/20] net/bnxt: support inner IP header for GRE tunnel flows Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 08/20] net/bnxt: get TruFlow version Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 09/20] net/bnxt: increase flow scale for Thor Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 10/20] net/bnxt: remove accumulation of stats devargs argument Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 11/20] net/bnxt: fix clang compiler warnings Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 12/20] net/bnxt: updated the log messages Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 13/20] net/bnxt: add support for socket direct feature Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 14/20] net/bnxt: delete the VF pair before VF representor alloc Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 15/20] net/bnxt: add new API TruFlow get SRAM resources Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 16/20] net/bnxt: add TruFlow and AFM SRAM partitioning support Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 17/20] net/bnxt: add Tx TruFlow table config for p4 device Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 18/20] net/bnxt: remove 2-slice WC entries for scale Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 19/20] net/bnxt: check for mismatch of control and physical port Venkat Duvvuru
2021-11-02  4:05   ` [dpdk-dev] [PATCH v3 20/20] net/bnxt: use enum for bank ID Venkat Duvvuru
2021-11-03  0:52   ` [dpdk-dev] [PATCH v4 00/20] fixes and enhancements to Truflow Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 01/20] net/bnxt: add NAT support for dest IP and port combination Ajit Khaparde
2021-11-03 13:24       ` Ferruh Yigit
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 02/20] net/bnxt: add support for multi root capability Ajit Khaparde
2021-11-03 13:24       ` Ferruh Yigit
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 03/20] net/bnxt: fix out of bounds issue in hash list Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 04/20] net/bnxt: add clear on read support Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 05/20] net/bnxt: add capability option for socket redirect Ajit Khaparde
2021-11-03 13:24       ` Ferruh Yigit
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 06/20] net/bnxt: enable wildcard match for ingress flows Ajit Khaparde
2021-11-03 13:24       ` Ferruh Yigit
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 07/20] net/bnxt: support inner IP header for GRE tunnel flows Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 08/20] net/bnxt: get TruFlow version Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 09/20] net/bnxt: increase flow scale for Thor Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 10/20] net/bnxt: remove devargs for stats accumulation Ajit Khaparde
2021-11-03 13:24       ` Ferruh Yigit
2021-11-03 13:35         ` Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 11/20] net/bnxt: fix clang compiler warnings Ajit Khaparde
2021-11-03 13:24       ` Ferruh Yigit
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 12/20] net/bnxt: update log messages in TruFlow path Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 13/20] net/bnxt: add support for socket direct feature Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 14/20] net/bnxt: modify VF representor alloc sequence Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 15/20] net/bnxt: add new TruFlow API to get SRAM resources Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 16/20] net/bnxt: add TruFlow and AFM SRAM partitioning support Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 17/20] net/bnxt: add Tx TruFlow table config for P4 device Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 18/20] net/bnxt: remove 2 slice WC entries Ajit Khaparde
2021-11-03 13:24       ` Ferruh Yigit
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 19/20] net/bnxt: check mismatch of control and physical port Ajit Khaparde
2021-11-03  0:52     ` [dpdk-dev] [PATCH v4 20/20] net/bnxt: use enum for bank ID Ajit Khaparde
2021-11-03  3:40     ` [dpdk-dev] [PATCH v4 00/20] fixes and enhancements to Truflow Ajit Khaparde
2021-11-04 21:58     ` [dpdk-dev] [PATCH v5 00/22] " Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 01/22] net/bnxt: add NAT support for dest IP and port combination Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 02/22] net/bnxt: add support for multi root capability Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 03/22] net/bnxt: fix out of bounds issue in hash list Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 04/22] net/bnxt: add clear on read support Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 05/22] net/bnxt: add capability option for socket redirect Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 06/22] net/bnxt: remove unused functions Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 07/22] net/bnxt: address ISO C90 compilation error Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 08/22] net/bnxt: enable wildcard match for ingress flows Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 09/22] net/bnxt: support inner IP header for GRE tunnel flows Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 10/22] net/bnxt: get TruFlow version Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 11/22] net/bnxt: increase flow scale for Thor Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 12/22] net/bnxt: remove devargs for stats accumulation Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 13/22] net/bnxt: fix clang compiler warnings Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 14/22] net/bnxt: update log messages in TruFlow path Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 15/22] net/bnxt: add support for socket direct feature Ajit Khaparde
2021-11-04 21:58       ` Ajit Khaparde [this message]
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 17/22] net/bnxt: add new TruFlow API to get SRAM resources Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 18/22] net/bnxt: add TruFlow and AFM SRAM partitioning support Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 19/22] net/bnxt: add Tx TruFlow table config for P4 device Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 20/22] net/bnxt: remove 2 slice wildcard entries Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 21/22] net/bnxt: check mismatch of control and physical port Ajit Khaparde
2021-11-04 21:58       ` [dpdk-dev] [PATCH v5 22/22] net/bnxt: use enum for bank ID Ajit Khaparde
2021-11-05  0:57       ` [dpdk-dev] [PATCH v5 00/22] fixes and enhancements to Truflow Ajit Khaparde
2021-11-05 11:10       ` Ferruh Yigit
2021-11-05 11:30         ` Thomas Monjalon
2021-11-05 16:55         ` [dpdk-dev] [PATCH] doc: update release notes for bnxt PMD Ajit Khaparde
2021-11-05 18:14           ` Ferruh Yigit
2021-11-05 18:22             ` Ajit Khaparde
2021-11-05 18:38               ` Ferruh Yigit
2021-11-05 18:41                 ` Ajit Khaparde
2021-11-05 18:42                   ` Ferruh Yigit
2021-11-05 18:48                     ` Ajit Khaparde
2021-11-05 16:57         ` [dpdk-dev] [PATCH v5 00/22] fixes and enhancements to Truflow Ajit Khaparde
2021-11-05 17:20           ` Ferruh Yigit
2021-11-05 18:46         ` [dpdk-dev] [PATCH] doc: update for bnxt PMD Ajit Khaparde
2021-11-17  3:59           ` Ajit Khaparde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211104215846.58672-17-ajit.khaparde@broadcom.com \
    --to=ajit.khaparde@broadcom.com \
    --cc=dev@dpdk.org \
    --cc=kishore.padmanabha@broadcom.com \
    --cc=sbhosle@broadcom.com \
    --cc=venkatkumar.duvvuru@broadcom.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).