From patchwork Tue Aug 13 03:06:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Haiyue" X-Patchwork-Id: 57642 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 17FDC1BE89; Tue, 13 Aug 2019 05:11:12 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by dpdk.org (Postfix) with ESMTP id CDAB7378B for ; Tue, 13 Aug 2019 05:11:09 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Aug 2019 20:11:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,379,1559545200"; d="scan'208";a="259997336" Received: from npg-dpdk-haiyue-1.sh.intel.com ([10.67.111.73]) by orsmga001.jf.intel.com with ESMTP; 12 Aug 2019 20:11:08 -0700 From: Haiyue Wang To: dev@dpdk.org Cc: Haiyue Wang Date: Tue, 13 Aug 2019 11:06:10 +0800 Message-Id: <1565665572-65495-2-git-send-email-haiyue.wang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1565665572-65495-1-git-send-email-haiyue.wang@intel.com> References: <1565665572-65495-1-git-send-email-haiyue.wang@intel.com> Subject: [dpdk-dev] [RFC v2 1/3] ethdev: add the API for getting trace information 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" Enhance the PMD to support retrieving trace information like Rx/Tx burst selection etc. Signed-off-by: Haiyue Wang --- lib/librte_ethdev/rte_ethdev.c | 18 ++++++++++++++++++ lib/librte_ethdev/rte_ethdev.h | 9 +++++++++ lib/librte_ethdev/rte_ethdev_core.h | 4 ++++ 3 files changed, 31 insertions(+) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 17d183e..6098fad 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -4083,6 +4083,24 @@ rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t queue_id, } int +rte_eth_trace_info_get(uint16_t port_id, uint16_t queue_id, + enum rte_eth_trace type, char *buf, int sz) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); + + if (buf == NULL) + return -EINVAL; + + dev = &rte_eth_devices[port_id]; + + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->trace_info_get, -ENOTSUP); + + return dev->dev_ops->trace_info_get(dev, queue_id, type, buf, sz); +} + +int rte_eth_dev_set_mc_addr_list(uint16_t port_id, struct rte_ether_addr *mc_addr_set, uint32_t nb_mc_addr) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index dc6596b..9405157 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -404,6 +404,11 @@ struct rte_eth_rxmode { uint64_t offloads; }; +enum rte_eth_trace { + ETH_TRACE_RX_BURST, + ETH_TRACE_TX_BURST, +}; + /** * VLAN types to indicate if it is for single VLAN, inner VLAN or outer VLAN. * Note that single VLAN is treated the same as inner VLAN. @@ -3556,6 +3561,10 @@ int rte_eth_rx_queue_info_get(uint16_t port_id, uint16_t queue_id, int rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t queue_id, struct rte_eth_txq_info *qinfo); +int +rte_eth_trace_info_get(uint16_t port_id, uint16_t queue_id, + enum rte_eth_trace type, char *buf, int sz); + /** * Retrieve device registers and register attributes (number of registers and * register size) diff --git a/lib/librte_ethdev/rte_ethdev_core.h b/lib/librte_ethdev/rte_ethdev_core.h index 2922d5b..366bf5b 100644 --- a/lib/librte_ethdev/rte_ethdev_core.h +++ b/lib/librte_ethdev/rte_ethdev_core.h @@ -170,6 +170,9 @@ typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev, typedef void (*eth_txq_info_get_t)(struct rte_eth_dev *dev, uint16_t tx_queue_id, struct rte_eth_txq_info *qinfo); +typedef int (*eth_trace_info_get_t)(struct rte_eth_dev *dev, + uint16_t queue_id, enum rte_eth_trace type, char *buf, int sz); + typedef int (*mtu_set_t)(struct rte_eth_dev *dev, uint16_t mtu); /**< @internal Set MTU. */ @@ -418,6 +421,7 @@ struct eth_dev_ops { eth_dev_infos_get_t dev_infos_get; /**< Get device info. */ eth_rxq_info_get_t rxq_info_get; /**< retrieve RX queue information. */ eth_txq_info_get_t txq_info_get; /**< retrieve TX queue information. */ + eth_trace_info_get_t trace_info_get; /**< Get trace. */ eth_fw_version_get_t fw_version_get; /**< Get firmware version. */ eth_dev_supported_ptypes_get_t dev_supported_ptypes_get; /**< Get packet types supported and identified by device. */