From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 ; Wed, 16 Sep 2020 06:29:11 +0200 (CEST) Received: by mail-pf1-f226.google.com with SMTP id z18so686497pfg.0 for ; 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 To: dev@dpdk.org Cc: Somnath Kotur , Venkat Duvvuru 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Somnath Kotur 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 Reviewed-by: Venkat Duvvuru Reviewed-by: Ajit Khaparde --- 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)