From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E9A64A0567; Wed, 10 Mar 2021 13:12:46 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6ED8922A4F5; Wed, 10 Mar 2021 13:12:44 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 8BDA322A4DE for ; Wed, 10 Mar 2021 13:12:42 +0100 (CET) IronPort-SDR: I4lwbhvwmRtygfiLrSKl5ykN51Ipj4eWBbQ1wx7iS+pfAcIhLWb/Xy790FflGMboCtQinb/8l7 LNaPycUxlLdA== X-IronPort-AV: E=McAfee;i="6000,8403,9917"; a="187812362" X-IronPort-AV: E=Sophos;i="5.81,237,1610438400"; d="scan'208";a="187812362" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Mar 2021 04:12:42 -0800 IronPort-SDR: 1303bR01yXQWddfuv17gsbWbycqOLEtPZSEYcfgN6VLue7HnJfaTePwGyOWyZCVw1U3g2b4ubD 952F15vaqpfg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,237,1610438400"; d="scan'208";a="603065389" Received: from dpdk51.sh.intel.com ([10.67.111.142]) by fmsmga005.fm.intel.com with ESMTP; 10 Mar 2021 04:12:39 -0800 From: Qi Zhang To: ferruh.yigit@intel.com Cc: dev@dpdk.org, xiao.w.wang@intel.com, jingjing.wu@intel.com, beilei.xing@intel.com, jia.guo@intel.com, qiming.yang@intel.com, haiyue.wang@intel.comi, Qi Zhang Date: Wed, 10 Mar 2021 20:16:19 +0800 Message-Id: <20210310121626.2019863-2-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210310121626.2019863-1-qi.z.zhang@intel.com> References: <20210310121626.2019863-1-qi.z.zhang@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH 1/8] ether: refine debug compile option 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 Sender: "dev" PMDs use RTE_LIBRTE__DEBUG_RX|TX as compile option to wrap data path debug code. As .config has been removed since the meson build, It is not friendly for new DPDK users to notice those debug options. The patch introduces below compile options for specific Rx/Tx data path debug, so PMD can choose to reuse them to avoid maintain their own. - RTE_LIBRTE_ETHDEV_DEBUG_RX - RTE_LIBRTE_ETHDEV_DEBUG_TX Also, all the compile options are documented on the overview page, so users can easily find them. Signed-off-by: Qi Zhang --- doc/guides/nics/overview.rst | 20 ++++++++++++++++++++ lib/librte_ethdev/rte_ethdev.h | 16 ++++++++-------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst index 20cd52b097..20cf54ef32 100644 --- a/doc/guides/nics/overview.rst +++ b/doc/guides/nics/overview.rst @@ -32,3 +32,23 @@ More details about features can be found in :doc:`features`. Features marked with "P" are partially supported. Refer to the appropriate NIC guide in the following sections for details. + +The ethdev layer support below compile options for debug purpose: + +- ``RTE_LIBRTE_ETHDEV_DEBUG`` (default **disabled**) + + Compile with debug code on data path. + +- ``RTE_LIBRTE_ETHDEV_DEBUG_RX`` (default **disabled**) + + Compile with debug code on Rx data path. + +- ``RTE_LIBRTE_ETHDEV_DEBUG_TX`` (default **disabled**) + + Compile with debug code on Tx data path. + +.. Note:: + + The lib_ethdev use above options to wrap debug code to trace invalid parameters on + data path APIs, so performance downgrade is expected when enable those options. + Each PMD can decide to reuse them to wrap their own debug code in the Rx/Tx path. diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 059a061072..335831129f 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -4877,7 +4877,7 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id, struct rte_eth_dev *dev = &rte_eth_devices[port_id]; uint16_t nb_rx; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined(RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_RX) RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); RTE_FUNC_PTR_OR_ERR_RET(*dev->rx_pkt_burst, 0); @@ -5011,11 +5011,11 @@ rte_eth_rx_descriptor_status(uint16_t port_id, uint16_t queue_id, struct rte_eth_dev *dev; void *rxq; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined (RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_RX) RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); #endif dev = &rte_eth_devices[port_id]; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined (RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_RX) if (queue_id >= dev->data->nb_rx_queues) return -ENODEV; #endif @@ -5068,11 +5068,11 @@ static inline int rte_eth_tx_descriptor_status(uint16_t port_id, struct rte_eth_dev *dev; void *txq; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined (RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_TX) RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); #endif dev = &rte_eth_devices[port_id]; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined (RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_TX) if (queue_id >= dev->data->nb_tx_queues) return -ENODEV; #endif @@ -5154,7 +5154,7 @@ rte_eth_tx_burst(uint16_t port_id, uint16_t queue_id, { struct rte_eth_dev *dev = &rte_eth_devices[port_id]; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined (RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_TX) RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); RTE_FUNC_PTR_OR_ERR_RET(*dev->tx_pkt_burst, 0); @@ -5252,7 +5252,7 @@ rte_eth_tx_prepare(uint16_t port_id, uint16_t queue_id, { struct rte_eth_dev *dev; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined (RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_TX) if (!rte_eth_dev_is_valid_port(port_id)) { RTE_ETHDEV_LOG(ERR, "Invalid TX port_id=%u\n", port_id); rte_errno = ENODEV; @@ -5262,7 +5262,7 @@ rte_eth_tx_prepare(uint16_t port_id, uint16_t queue_id, dev = &rte_eth_devices[port_id]; -#ifdef RTE_LIBRTE_ETHDEV_DEBUG +#if defined (RTE_LIBRTE_ETHDEV_DEBUG) || defined(RTE_LIBRTE_ETHDEV_DEBUG_TX) if (queue_id >= dev->data->nb_tx_queues) { RTE_ETHDEV_LOG(ERR, "Invalid TX queue_id=%u\n", queue_id); rte_errno = EINVAL; -- 2.26.2