From patchwork Fri Jan 17 11:55:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 64838 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3C5C8A051A; Fri, 17 Jan 2020 12:56:23 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 65711152A; Fri, 17 Jan 2020 12:56:17 +0100 (CET) Received: from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130]) by dpdk.org (Postfix) with ESMTP id ED62AFFA for ; Fri, 17 Jan 2020 12:56:15 +0100 (CET) From: Xiaoyu Min To: jerinjacobk@gmail.com, orika@mellanox.com, viacheslavo@mellanox.com, matan@mellanox.com, rasland@mellanox.com, Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko , Adrien Mazarguil Cc: dev@dpdk.org Date: Fri, 17 Jan 2020 13:55:59 +0200 Message-Id: <358125d80c3c2b53a649b23aed0aabdebb198716.1579257283.git.jackmin@mellanox.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: References: MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 1/5] ethdev: add API to dump device internal flow info 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" Introduce an API which dump the device's internal representation information of rte flows in hardware. Signed-off-by: Xiaoyu Min Acked-by: Ori Kam Reviewed-by: Ferruh Yigit --- lib/librte_ethdev/rte_ethdev_version.map | 3 +++ lib/librte_ethdev/rte_flow.c | 16 ++++++++++++++++ lib/librte_ethdev/rte_flow.h | 21 +++++++++++++++++++++ lib/librte_ethdev/rte_flow_driver.h | 5 +++++ 4 files changed, 45 insertions(+) diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map index a7dacf2cf2..3f32fdecf7 100644 --- a/lib/librte_ethdev/rte_ethdev_version.map +++ b/lib/librte_ethdev/rte_ethdev_version.map @@ -227,4 +227,7 @@ EXPERIMENTAL { rte_flow_dynf_metadata_mask; rte_flow_dynf_metadata_register; rte_eth_dev_set_ptypes; + + # added in 20.02 + rte_flow_dev_dump; }; diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index 87a3e8c4c6..751ce721b2 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -1212,3 +1212,19 @@ rte_flow_expand_rss(struct rte_flow_expand_rss *buf, size_t size, } return lsize; } + +int +rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error *error) +{ + struct rte_eth_dev *dev = &rte_eth_devices[port_id]; + const struct rte_flow_ops *ops = rte_flow_ops_get(port_id, error); + + if (unlikely(!ops)) + return -rte_errno; + if (likely(!!ops->dev_dump)) + return flow_err(port_id, ops->dev_dump(dev, file, error), + error); + return rte_flow_error_set(error, ENOSYS, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, rte_strerror(ENOSYS)); +} diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index 58b50265d2..cf7cf61ae8 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -2790,6 +2790,27 @@ enum rte_flow_conv_op { RTE_FLOW_CONV_OP_ACTION_NAME_PTR, }; +/** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice. + * + * Dump hardware internal representation information of + * rte flow to file. + * + * @param[in] port_id + * The port identifier of the Ethernet device. + * @param[in] file + * A pointer to a file for output. + * @param[out] error + * Perform verbose error reporting if not NULL. PMDs initialize this + * structure in case of error only. + * @return + * 0 on success, a nagative value otherwise. + */ +__rte_experimental +int +rte_flow_dev_dump(uint16_t port_id, FILE *file, struct rte_flow_error *error); + /** * Check if mbuf dynamic field for metadata is registered. * diff --git a/lib/librte_ethdev/rte_flow_driver.h b/lib/librte_ethdev/rte_flow_driver.h index a0359853e6..51a9a57a0f 100644 --- a/lib/librte_ethdev/rte_flow_driver.h +++ b/lib/librte_ethdev/rte_flow_driver.h @@ -96,6 +96,11 @@ struct rte_flow_ops { (struct rte_eth_dev *, int, struct rte_flow_error *); + /** See rte_flow_dev_dump(). */ + int (*dev_dump) + (struct rte_eth_dev *dev, + FILE *file, + struct rte_flow_error *error); }; /**