From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 88B6EA04C7;
	Wed, 16 Sep 2020 06:31:07 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 09DF51C19F;
	Wed, 16 Sep 2020 06:29:23 +0200 (CEST)
Received: from mail-pf1-f226.google.com (mail-pf1-f226.google.com
 [209.85.210.226]) by dpdk.org (Postfix) with ESMTP id A57451C19F
 for <dev@dpdk.org>; Wed, 16 Sep 2020 06:29:11 +0200 (CEST)
Received: by mail-pf1-f226.google.com with SMTP id z18so686497pfg.0
 for <dev@dpdk.org>; Tue, 15 Sep 2020 21:29:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=jMc0VYK9X62arJbzhvQVonQH5/F6wLUA9imtipla3y0=;
 b=EbKhb/n+PMDo/xx5yzR1MGjSbC6xDq+3B2suc8YtoOJNSPQi9UBCFyGMsoOI90mGbz
 9mNbjcaCoCTc8JkXJD95Ird3ym/VzgZtmpzmSCGuPWAO4T0fa5b4dV2tzvihYreaIDMV
 YYoqKFw1mbW+iM0Na/3dSWbPAkVGtjz34Xz7s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=jMc0VYK9X62arJbzhvQVonQH5/F6wLUA9imtipla3y0=;
 b=IO21rAg8ILo6Mmql9isOdErrjAF2Wc06GGTgkVC2HvHqjL69/SuCl5cde+LlBnngNX
 Pu+KQPJ5MbH7UAHt41QnRhy082gOFaRHR602XBA09rMn5clRLbxe20Ok+vHjbEVycCG3
 wsjGvy57vbqloqkHNCGIGLiBTR9+0sxVhckfFUwt3vGIneNNpr4bYJT5LrPRzcgR7bRr
 5zRuuGAhwBG0VTbrpaDfRfBGubqdGqJefrmDKCMZW6NumBOD2vJGRu9GzZfgrnf4JLxQ
 81TDGFG2cKfCvk3HwvYPNuyhanMTVflOKjrzxiHP7smeuG+YycCvMc74bZ6Jq8eeSniV
 S4JA==
X-Gm-Message-State: AOAM533HYd5Q9nrC22j+P/FTd0u4FE5IX7Y5sckuA6QZVBEOa2EA+WZI
 atnmcm+yGm0aKWtKcqdibvnmZhfDtqIDlzbKQikNtJBig3OQjqzUT5AadHKgVWZu5utK4/ZvKVt
 EDZdQtacHZqi3soBQtRuZ1lXdZGIVxCMgmIdfg8icxTCzgXO23lPPCvb/Mru6sgCNGSfkLRXwT5
 BBHw==
X-Google-Smtp-Source: ABdhPJyjYKqoXyaz/THr/di4BAgCjHctEs80ncsjiJIG9KJyYXGW95Unw0/OzkNbVrWcC4Oxu4Cf7NEYxLfZ
X-Received: by 2002:a62:be0f:0:b029:142:2501:39f0 with SMTP id
 l15-20020a62be0f0000b0290142250139f0mr4843504pff.63.1600230550714; 
 Tue, 15 Sep 2020 21:29:10 -0700 (PDT)
Received: from localhost.localdomain ([192.19.223.252])
 by smtp-relay.gmail.com with ESMTPS id hk6sm132636pjb.6.2020.09.15.21.29.10
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 15 Sep 2020 21:29:10 -0700 (PDT)
X-Relaying-Domain: broadcom.com
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: dev@dpdk.org
Cc: Somnath Kotur <somnath.kotur@broadcom.com>,
 Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Date: Tue, 15 Sep 2020 21:28:38 -0700
Message-Id: <20200916042851.32914-13-ajit.khaparde@broadcom.com>
X-Mailer: git-send-email 2.21.1 (Apple Git-122.3)
In-Reply-To: <20200916042851.32914-1-ajit.khaparde@broadcom.com>
References: <20200911015603.88359-1-ajit.khaparde@broadcom.com>
 <20200916042851.32914-1-ajit.khaparde@broadcom.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-dev] [PATCH v2 12/25] net/bnxt: fix VFR cleanup during init
	failure
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>,
 <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>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

From: Somnath Kotur <somnath.kotur@broadcom.com>

If VF-rep port add fails for some reason, code was rolling back
all ports added so far. With some applications, there is no need
to do that. Just log failure message for the VF rep port add and continue.
Also include RTE_MAX_ETH_PORTS value in the bounds check as one port
will be taken by the uplink port anyway

Fixes: 6dc83230b43b ("net/bnxt: support port representor data path")

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 44 ++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 890888531..2a106fe7a 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -6014,7 +6014,7 @@ static int bnxt_rep_port_probe(struct rte_pci_device *pci_dev,
 		return -EINVAL;
 	}
 
-	if (num_rep > RTE_MAX_ETHPORTS) {
+	if (num_rep >= RTE_MAX_ETHPORTS) {
 		PMD_DRV_LOG(ERR,
 			    "nb_representor_ports = %d > %d MAX ETHPORTS\n",
 			    num_rep, RTE_MAX_ETHPORTS);
@@ -6057,28 +6057,36 @@ static int bnxt_rep_port_probe(struct rte_pci_device *pci_dev,
 					 NULL, NULL,
 					 bnxt_vf_representor_init,
 					 &representor);
-
-		if (!ret) {
-			vf_rep_eth_dev = rte_eth_dev_allocated(name);
-			if (!vf_rep_eth_dev) {
-				PMD_DRV_LOG(ERR, "Failed to find the eth_dev"
-					    " for VF-Rep: %s.", name);
-				bnxt_pci_remove_dev_with_reps(backing_eth_dev);
-				ret = -ENODEV;
-				return ret;
-			}
-			PMD_DRV_LOG(DEBUG, "BNXT Port:%d VFR pci probe\n",
-				    backing_eth_dev->data->port_id);
-			backing_bp->rep_info[representor.vf_id].vfr_eth_dev =
-				vf_rep_eth_dev;
-			backing_bp->num_reps++;
-		} else {
+		if (ret) {
 			PMD_DRV_LOG(ERR, "failed to create bnxt vf "
 				    "representor %s.", name);
-			bnxt_pci_remove_dev_with_reps(backing_eth_dev);
+			goto err;
 		}
+
+		vf_rep_eth_dev = rte_eth_dev_allocated(name);
+		if (!vf_rep_eth_dev) {
+			PMD_DRV_LOG(ERR, "Failed to find the eth_dev"
+				    " for VF-Rep: %s.", name);
+			ret = -ENODEV;
+			goto err;
+		}
+
+		PMD_DRV_LOG(DEBUG, "BNXT Port:%d VFR pci probe\n",
+				backing_eth_dev->data->port_id);
+		backing_bp->rep_info[representor.vf_id].vfr_eth_dev =
+							 vf_rep_eth_dev;
+		backing_bp->num_reps++;
 	}
 
+	return 0;
+
+err:
+	/* If num_rep > 1, then rollback already created
+	 * ports, since we'll be failing the probe anyway
+	 */
+	if (num_rep > 1)
+		bnxt_pci_remove_dev_with_reps(backing_eth_dev);
+
 	return ret;
 }
 
-- 
2.21.1 (Apple Git-122.3)