From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id D710A8D36 for ; Wed, 9 Sep 2015 17:10:41 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 09 Sep 2015 08:09:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,496,1437462000"; d="scan'208";a="800926496" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by orsmga002.jf.intel.com with ESMTP; 09 Sep 2015 08:09:35 -0700 Received: from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com [10.237.217.45]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id t89F9YHs011322; Wed, 9 Sep 2015 16:09:34 +0100 Received: from sivswdev01.ir.intel.com (localhost [127.0.0.1]) by sivswdev01.ir.intel.com with ESMTP id t89F9Yu3029040; Wed, 9 Sep 2015 16:09:34 +0100 Received: (from bricha3@localhost) by sivswdev01.ir.intel.com with id t89F9YIV029036; Wed, 9 Sep 2015 16:09:34 +0100 From: Bruce Richardson To: dev@dpdk.org Date: Wed, 9 Sep 2015 16:09:33 +0100 Message-Id: <1441811374-28984-4-git-send-email-bruce.richardson@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1441811374-28984-1-git-send-email-bruce.richardson@intel.com> References: <1434108496-1993-1-git-send-email-bruce.richardson@intel.com> <1441811374-28984-1-git-send-email-bruce.richardson@intel.com> Subject: [dpdk-dev] [PATCH v2 3/4] ethdev: remove duplicated debug functions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Sep 2015 15:10:42 -0000 The functions for rx/tx burst, for rx_queue_count and descriptor_done in the ethdev library all had two copies of the code. One copy in rte_ethdev.h was inlined for performance, while a second was in rte_ethdev.c for debugging purposes only. We can eliminate the second copy of the functions by moving the additional debug checks into the copies of the functions in the header file. [Any compilation for debugging at optimization level 0 will not inline the function so the result should be same as when the function was in the .c file.] Signed-off-by: Bruce Richardson --- lib/librte_ether/rte_ethdev.c | 64 ------------------------------------------- lib/librte_ether/rte_ethdev.h | 59 ++++++++++++++++++++------------------- 2 files changed, 29 insertions(+), 94 deletions(-) diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index 01e44c6..4ce59dd 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -2827,70 +2827,6 @@ rte_eth_mirror_rule_reset(uint8_t port_id, uint8_t rule_id) return (*dev->dev_ops->mirror_rule_reset)(dev, rule_id); } -#ifdef RTE_LIBRTE_ETHDEV_DEBUG -uint16_t -rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id, - struct rte_mbuf **rx_pkts, uint16_t nb_pkts) -{ - struct rte_eth_dev *dev; - - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); - - dev = &rte_eth_devices[port_id]; - RTE_ETH_FPTR_OR_ERR_RET(*dev->rx_pkt_burst, 0); - if (queue_id >= dev->data->nb_rx_queues) { - RTE_PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", queue_id); - return 0; - } - return (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id], - rx_pkts, nb_pkts); -} - -uint16_t -rte_eth_tx_burst(uint8_t port_id, uint16_t queue_id, - struct rte_mbuf **tx_pkts, uint16_t nb_pkts) -{ - struct rte_eth_dev *dev; - - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); - - dev = &rte_eth_devices[port_id]; - - RTE_ETH_FPTR_OR_ERR_RET(*dev->tx_pkt_burst, 0); - if (queue_id >= dev->data->nb_tx_queues) { - RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", queue_id); - return 0; - } - return (*dev->tx_pkt_burst)(dev->data->tx_queues[queue_id], - tx_pkts, nb_pkts); -} - -uint32_t -rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id) -{ - struct rte_eth_dev *dev; - - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); - - dev = &rte_eth_devices[port_id]; - RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, 0); - return (*dev->dev_ops->rx_queue_count)(dev, queue_id); -} - -int -rte_eth_rx_descriptor_done(uint8_t port_id, uint16_t queue_id, uint16_t offset) -{ - struct rte_eth_dev *dev; - - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); - - dev = &rte_eth_devices[port_id]; - RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_descriptor_done, -ENOTSUP); - return (*dev->dev_ops->rx_descriptor_done)(dev->data->rx_queues[queue_id], - offset); -} -#endif - int rte_eth_dev_callback_register(uint8_t port_id, enum rte_eth_event_type event, diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index 5501b04..1113ed2 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -2567,18 +2567,21 @@ extern int rte_eth_dev_set_vlan_pvid(uint8_t port_id, uint16_t pvid, int on); * of pointers to *rte_mbuf* structures effectively supplied to the * *rx_pkts* array. */ -#ifdef RTE_LIBRTE_ETHDEV_DEBUG -extern uint16_t rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id, - struct rte_mbuf **rx_pkts, uint16_t nb_pkts); -#else static inline uint16_t rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id, struct rte_mbuf **rx_pkts, const uint16_t nb_pkts) { - struct rte_eth_dev *dev; + struct rte_eth_dev *dev = &rte_eth_devices[port_id]; - dev = &rte_eth_devices[port_id]; +#ifdef RTE_LIBRTE_ETHDEV_DEBUG + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); + RTE_ETH_FPTR_OR_ERR_RET(*dev->rx_pkt_burst, 0); + if (queue_id >= dev->data->nb_rx_queues) { + RTE_PMD_DEBUG_TRACE("Invalid RX queue_id=%d\n", queue_id); + return 0; + } +#endif int16_t nb_rx = (*dev->rx_pkt_burst)(dev->data->rx_queues[queue_id], rx_pkts, nb_pkts); @@ -2596,7 +2599,6 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id, return nb_rx; } -#endif /** * Get the number of used descriptors in a specific queue @@ -2608,18 +2610,16 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id, * @return * The number of used descriptors in the specific queue. */ -#ifdef RTE_LIBRTE_ETHDEV_DEBUG -extern uint32_t rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id); -#else static inline uint32_t rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id) { - struct rte_eth_dev *dev; - - dev = &rte_eth_devices[port_id]; + struct rte_eth_dev *dev = &rte_eth_devices[port_id]; +#ifdef RTE_LIBRTE_ETHDEV_DEBUG + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); + RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, 0); +#endif return (*dev->dev_ops->rx_queue_count)(dev, queue_id); } -#endif /** * Check if the DD bit of the specific RX descriptor in the queue has been set @@ -2635,21 +2635,17 @@ rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id) * - (0) if the specific DD bit is not set. * - (-ENODEV) if *port_id* invalid. */ -#ifdef RTE_LIBRTE_ETHDEV_DEBUG -extern int rte_eth_rx_descriptor_done(uint8_t port_id, - uint16_t queue_id, - uint16_t offset); -#else static inline int rte_eth_rx_descriptor_done(uint8_t port_id, uint16_t queue_id, uint16_t offset) { - struct rte_eth_dev *dev; - - dev = &rte_eth_devices[port_id]; + struct rte_eth_dev *dev = &rte_eth_devices[port_id]; +#ifdef RTE_LIBRTE_ETHDEV_DEBUG + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); + RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_descriptor_done, -ENOTSUP); +#endif return (*dev->dev_ops->rx_descriptor_done)( \ dev->data->rx_queues[queue_id], offset); } -#endif /** * Send a burst of output packets on a transmit queue of an Ethernet device. @@ -2709,17 +2705,21 @@ rte_eth_rx_descriptor_done(uint8_t port_id, uint16_t queue_id, uint16_t offset) * the transmit ring. The return value can be less than the value of the * *tx_pkts* parameter when the transmit ring is full or has been filled up. */ -#ifdef RTE_LIBRTE_ETHDEV_DEBUG -extern uint16_t rte_eth_tx_burst(uint8_t port_id, uint16_t queue_id, - struct rte_mbuf **tx_pkts, uint16_t nb_pkts); -#else static inline uint16_t rte_eth_tx_burst(uint8_t port_id, uint16_t queue_id, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) { - struct rte_eth_dev *dev; + struct rte_eth_dev *dev = &rte_eth_devices[port_id]; + +#ifdef RTE_LIBRTE_ETHDEV_DEBUG + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0); + RTE_ETH_FPTR_OR_ERR_RET(*dev->tx_pkt_burst, 0); - dev = &rte_eth_devices[port_id]; + if (queue_id >= dev->data->nb_tx_queues) { + RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", queue_id); + return 0; + } +#endif #ifdef RTE_ETHDEV_RXTX_CALLBACKS struct rte_eth_rxtx_callback *cb = dev->pre_tx_burst_cbs[queue_id]; @@ -2735,7 +2735,6 @@ rte_eth_tx_burst(uint8_t port_id, uint16_t queue_id, return (*dev->tx_pkt_burst)(dev->data->tx_queues[queue_id], tx_pkts, nb_pkts); } -#endif /** * Setup a new signature filter rule on an Ethernet device -- 2.4.3