From patchwork Wed Aug 7 09:46:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 142987 X-Patchwork-Delegate: bruce.richardson@intel.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 45D2D4575B; Wed, 7 Aug 2024 11:47:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8C9F7410D4; Wed, 7 Aug 2024 11:47:16 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) by mails.dpdk.org (Postfix) with ESMTP id 8D9A14064C for ; Wed, 7 Aug 2024 11:47:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1723024035; x=1754560035; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WMVHp79XXfZ9w+MVBk38li3O6kN2asMtgwE7JzjBQ6g=; b=I8U18jJuRawAiEpNLJCj+UP4zFIePoqLrYICDDtKPjwwTRM23fDGGw/2 iL6pjTUX1wkfhcgGVBKtbqodb+x8MuxdiUxylELKS4jjSe+isYcVprMsK 8eqSpQoa2kDdeWDFprpdkB+FxfgaFDjQlWSrAVhknXN1auPFbhnj1BWW8 FgmNT7AIRAvxlAP/T22Z2hcmSnFgux7yvNxL74uhgW25AeFsyL04fZOEf PKCyKRubVtM9kX5H0du+FMc7h2fNOBLwQxt9bdt7vQFKV805rw+WGlWNQ fr4XkQxgh1FRbJG0qgvJnGQ0fx+NKAT+urKuQN4pL8DUKYmrAgNPuM5V6 Q==; X-CSE-ConnectionGUID: BtmfxkEdS/6Ch1jbL+VFwQ== X-CSE-MsgGUID: GhLo7cJ7STmLrKoOl2EHAg== X-IronPort-AV: E=McAfee;i="6700,10204,11156"; a="21257927" X-IronPort-AV: E=Sophos;i="6.09,269,1716274800"; d="scan'208";a="21257927" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Aug 2024 02:47:13 -0700 X-CSE-ConnectionGUID: O7+UwRdPQZS22HdjEzMNDg== X-CSE-MsgGUID: zfkifiyuRZuqjuBJQA4+sw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.09,269,1716274800"; d="scan'208";a="87467359" Received: from silpixa00400562.ir.intel.com (HELO silpixa00401385.ir.intel.com) ([10.237.214.39]) by orviesa002.jf.intel.com with ESMTP; 07 Aug 2024 02:47:12 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson Subject: [PATCH v2 01/15] net/ice: add traffic management node query function Date: Wed, 7 Aug 2024 10:46:52 +0100 Message-ID: <20240807094706.459822-2-bruce.richardson@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240807094706.459822-1-bruce.richardson@intel.com> References: <20240807093407.452784-1-bruce.richardson@intel.com> <20240807094706.459822-1-bruce.richardson@intel.com> MIME-Version: 1.0 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 Implement the new node querying function for the "ice" net driver. Signed-off-by: Bruce Richardson --- drivers/net/ice/ice_tm.c | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/drivers/net/ice/ice_tm.c b/drivers/net/ice/ice_tm.c index 8a29a9e744..459446a6b0 100644 --- a/drivers/net/ice/ice_tm.c +++ b/drivers/net/ice/ice_tm.c @@ -17,6 +17,11 @@ static int ice_tm_node_add(struct rte_eth_dev *dev, uint32_t node_id, uint32_t weight, uint32_t level_id, const struct rte_tm_node_params *params, struct rte_tm_error *error); +static int ice_node_query(const struct rte_eth_dev *dev, uint32_t node_id, + uint32_t *parent_node_id, uint32_t *priority, + uint32_t *weight, uint32_t *level_id, + struct rte_tm_node_params *params, + struct rte_tm_error *error); static int ice_tm_node_delete(struct rte_eth_dev *dev, uint32_t node_id, struct rte_tm_error *error); static int ice_node_type_get(struct rte_eth_dev *dev, uint32_t node_id, @@ -35,6 +40,7 @@ const struct rte_tm_ops ice_tm_ops = { .node_add = ice_tm_node_add, .node_delete = ice_tm_node_delete, .node_type_get = ice_node_type_get, + .node_query = ice_node_query, .hierarchy_commit = ice_hierarchy_commit, }; @@ -219,6 +225,48 @@ ice_node_type_get(struct rte_eth_dev *dev, uint32_t node_id, return 0; } +static int +ice_node_query(const struct rte_eth_dev *dev, uint32_t node_id, + uint32_t *parent_node_id, uint32_t *priority, + uint32_t *weight, uint32_t *level_id, + struct rte_tm_node_params *params, + struct rte_tm_error *error) +{ + struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private); + struct ice_tm_node *tm_node; + + if (node_id == RTE_TM_NODE_ID_NULL) { + error->type = RTE_TM_ERROR_TYPE_NODE_ID; + error->message = "invalid node id"; + return -EINVAL; + } + + /* check if the node id exists */ + tm_node = find_node(pf->tm_conf.root, node_id); + if (!tm_node) { + error->type = RTE_TM_ERROR_TYPE_NODE_ID; + error->message = "no such node"; + return -EEXIST; + } + + if (parent_node_id != NULL) + *parent_node_id = tm_node->parent->id; + + if (priority != NULL) + *priority = tm_node->priority; + + if (weight != NULL) + *weight = tm_node->weight; + + if (level_id != NULL) + *level_id = tm_node->level; + + if (params != NULL) + *params = tm_node->params; + + return 0; +} + static inline struct ice_tm_shaper_profile * ice_shaper_profile_search(struct rte_eth_dev *dev, uint32_t shaper_profile_id)