From patchwork Mon Jan 16 09:39:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nithin Dabilpuram X-Patchwork-Id: 122089 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: 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]) by inbox.dpdk.org (Postfix) with ESMTP id D8D33423EE; Mon, 16 Jan 2023 10:41:27 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4A7F942D23; Mon, 16 Jan 2023 10:41:06 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id CD98542D2B for ; Mon, 16 Jan 2023 10:41:04 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30G63aaZ000602 for ; Mon, 16 Jan 2023 01:41:04 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=yZMv/zkyQ8JgD3iVGGrJIUbUYwHOBTxsb5+B53tnF78=; b=U4EqXnXWte+cyEm2G6mWw54yIj6gC469OzSJP2VVsmIsFKwzojqNgA6cmO9Qlfu8hjBX QXME5fdYuGK3q1YGBoj8A0VPLf2OMeLCpwI63YXchAWMtE2OVG5S1egLUwhNeCa9IdBe UKIKccGF6VHyzvPILnaaPiG9hQw6i4yZlcl83tdct+8WmDPp2LoJHYnhc7jT6BguUA1b GFu5s7VksoJ4W1blyZAuldFGjPeKNCoGaaZ+aO9RSCkLDka2GLP2uExYqznmCQ0EHzTR ANanyra+t95gF7joFEU35/a0trWTwz8NngjyF8O4BDrxXerIgabOHB4wuKLFxt1bYhYW Sw== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3n3tmvkujx-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Mon, 16 Jan 2023 01:41:03 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Mon, 16 Jan 2023 01:41:02 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Mon, 16 Jan 2023 01:41:02 -0800 Received: from hyd1588t430.caveonetworks.com (unknown [10.29.52.204]) by maili.marvell.com (Postfix) with ESMTP id 5F80B3F7052; Mon, 16 Jan 2023 01:41:00 -0800 (PST) From: Nithin Dabilpuram To: , Nithin Dabilpuram , "Kiran Kumar K" , Sunil Kumar Kori , Satha Rao CC: Subject: [PATCH 6/9] common/cnxk: free tm resources in order from leaf to root Date: Mon, 16 Jan 2023 15:09:51 +0530 Message-ID: <20230116093954.172938-6-ndabilpuram@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230116093954.172938-1-ndabilpuram@marvell.com> References: <20230116093954.172938-1-ndabilpuram@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: CWX2BUyQFyhgo2bOib3ne3HRW09mHqoA X-Proofpoint-GUID: CWX2BUyQFyhgo2bOib3ne3HRW09mHqoA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.923,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-01-16_08,2023-01-13_02,2022-06-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Now that kernel is clearing parent info that is needed for flush, free the resources in order from leaf to root so that when SMQ flush is called there is always hierarchy present from SMQ till TL1. Signed-off-by: Nithin Dabilpuram --- drivers/common/cnxk/roc_nix_tm.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/drivers/common/cnxk/roc_nix_tm.c b/drivers/common/cnxk/roc_nix_tm.c index 4ced7a052f..6d470f424d 100644 --- a/drivers/common/cnxk/roc_nix_tm.c +++ b/drivers/common/cnxk/roc_nix_tm.c @@ -1817,6 +1817,7 @@ nix_tm_free_resources(struct roc_nix *roc_nix, uint32_t tree_mask, bool hw_only) enum roc_nix_tm_tree tree; uint32_t profile_id; int rc = 0; + int hw_lvl; for (tree = 0; tree < ROC_NIX_TM_TREE_MAX; tree++) { if (!(tree_mask & BIT(tree))) @@ -1825,20 +1826,25 @@ nix_tm_free_resources(struct roc_nix *roc_nix, uint32_t tree_mask, bool hw_only) plt_tm_dbg("Freeing resources of tree %u", tree); list = nix_tm_node_list(nix, tree); - next_node = TAILQ_FIRST(list); - while (next_node) { - node = next_node; - next_node = TAILQ_NEXT(node, node); + /* Flush and free resources from leaf */ + for (hw_lvl = NIX_TXSCH_LVL_SMQ; hw_lvl < NIX_TXSCH_LVL_CNT; hw_lvl++) { + next_node = TAILQ_FIRST(list); + while (next_node) { + node = next_node; + next_node = TAILQ_NEXT(node, node); + if (node->hw_lvl != hw_lvl) + continue; - if (!nix_tm_is_leaf(nix, node->lvl) && - node->flags & NIX_TM_NODE_HWRES) { - /* Clear xoff in path for flush to succeed */ - rc = nix_tm_clear_path_xoff(nix, node); - if (rc) - return rc; - rc = nix_tm_free_node_resource(nix, node); - if (rc) - return rc; + if (!nix_tm_is_leaf(nix, node->lvl) && + node->flags & NIX_TM_NODE_HWRES) { + /* Clear xoff in path for flush to succeed */ + rc = nix_tm_clear_path_xoff(nix, node); + if (rc) + return rc; + rc = nix_tm_free_node_resource(nix, node); + if (rc) + return rc; + } } }