From patchwork Fri Sep 1 08:06:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrien Mazarguil X-Patchwork-Id: 28206 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 [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 12FAD7D22; Fri, 1 Sep 2017 10:07:37 +0200 (CEST) Received: from mail-wr0-f181.google.com (mail-wr0-f181.google.com [209.85.128.181]) by dpdk.org (Postfix) with ESMTP id 64BEA7D09 for ; Fri, 1 Sep 2017 10:07:34 +0200 (CEST) Received: by mail-wr0-f181.google.com with SMTP id p14so4467170wrg.3 for ; Fri, 01 Sep 2017 01:07:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=3TyWgCTUSBB+C+go1zxSCRQhW9XP/6yeuhfcAX5AbCg=; b=TBGJ4ytQE0ZBEDD+wAFYFrDj0kGzJBxb9tyy75VmkBRK6ty1q2ovAkgWcvm0bLbtEC 2qXV/COTQDi6CzTkmlSCLJIsU4fFyZb6p46veaf871bvTCY2o5tpbnSTP1PGKLSYWXwI oSDXa7lUNQyJE6SKtQDhBC6lAvy9oaQZfNATW3NUqrvQHNJqQZaDG+6JcjRs9CuowZ3I X10HvVtxvHoRm4VaG56H72UVdx9qa1VVWkaWRIxtZ36hJw12cajtguVFNwVA+sjFoTzC mrZkpYxnS+koKxssviHdj2MQKsdVhwD1thJjITbbuRHNhfAbLTi5r73Ks28D1eb0aZ78 gUlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=3TyWgCTUSBB+C+go1zxSCRQhW9XP/6yeuhfcAX5AbCg=; b=My/JaueQ9HmKVNCC6/jPZYmijD45YPnrb6eQ4IK0YHjJWj3YFUMc8S0hDpsBmb2MVG DsfzI7oRFtp3Nb2VXtBEfso5f4hmk7dgF8Ba2B2Tkdl4ZvBc/jM5ViPDMGpGBK58jTbP TsjmkcZ/qSZj09zR7DSLh7FYjYdqAlNIhyu7d/ulTAZyFZM1kddS7bNuNRomy4ecaqcS uXDtq2L7TMnWeg3K1Fv+C+v4y9h/j1gOFfVF1xUz2DL4yfkMPf822tR5X3lLXEB3K4QV fPDWT5NS5DJ0jc1m4TvFY1JE8SYxgC4Qwg00TvJ9LKLYw+t4ilb82GyHo6lOeQmKDp6P CDQA== X-Gm-Message-State: AHPjjUi6N29YfgMl0o7WQEnzs/iZZGPC28pV/pArLZ7MvdwZT3ibkLXt B0FCRRWwZdWf59JRBm8= X-Google-Smtp-Source: ADKCNb5EalWY3SxZRdhbl+6fFLPrI7hbev5ZBCLSdRHw+rlbGCMVANPySMjqpqEUbmlEepY8S/lL2g== X-Received: by 10.223.129.200 with SMTP id 66mr52571wra.25.1504253253585; Fri, 01 Sep 2017 01:07:33 -0700 (PDT) Received: from 6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id m199sm1577535wmd.14.2017.09.01.01.07.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Sep 2017 01:07:32 -0700 (PDT) From: Adrien Mazarguil To: dev@dpdk.org Date: Fri, 1 Sep 2017 10:06:22 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2 07/51] net/mlx4: remove soft counters compilation option 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" Software counters are mandatory since hardware counters are not implemented. Signed-off-by: Adrien Mazarguil --- config/common_base | 1 - doc/guides/nics/mlx4.rst | 6 ------ drivers/net/mlx4/Makefile | 4 ---- drivers/net/mlx4/mlx4.c | 37 ------------------------------------- drivers/net/mlx4/mlx4.h | 12 ------------ 5 files changed, 60 deletions(-) diff --git a/config/common_base b/config/common_base index 5e97a08..c7ffb6b 100644 --- a/config/common_base +++ b/config/common_base @@ -217,7 +217,6 @@ CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS=n CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4 CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0 CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8 -CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1 # # Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD diff --git a/doc/guides/nics/mlx4.rst b/doc/guides/nics/mlx4.rst index bba1034..eba81ba 100644 --- a/doc/guides/nics/mlx4.rst +++ b/doc/guides/nics/mlx4.rst @@ -97,7 +97,6 @@ Limitations - RSS RETA cannot be configured - RSS always includes L3 (IPv4/IPv6) and L4 (UDP/TCP). They cannot be dissociated. -- Hardware counters are not implemented (they are software counters). Configuration ------------- @@ -145,11 +144,6 @@ These options can be modified in the ``.config`` file. This value is always 1 for RX queues since they use a single MP. -- ``CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS`` (default **1**) - - Toggle software counters. No counters are available if this option is - disabled since hardware counters are not supported. - Environment variables ~~~~~~~~~~~~~~~~~~~~~ diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile index 07a66c4..147e541 100644 --- a/drivers/net/mlx4/Makefile +++ b/drivers/net/mlx4/Makefile @@ -80,10 +80,6 @@ ifdef CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE CFLAGS += -DMLX4_PMD_TX_MP_CACHE=$(CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE) endif -ifdef CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS -CFLAGS += -DMLX4_PMD_SOFT_COUNTERS=$(CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS) -endif - ifeq ($(CONFIG_RTE_LIBRTE_MLX4_DEBUG_BROKEN_VERBS),y) CFLAGS += -DMLX4_PMD_DEBUG_BROKEN_VERBS endif diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index cb07a53..2e8de92 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -34,7 +34,6 @@ /* * Known limitations: * - RSS hash key and options cannot be modified. - * - Hardware counters aren't implemented. */ /* System headers. */ @@ -1372,9 +1371,7 @@ mlx4_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) struct txq_elt *elt_next = &(*txq->elts)[elts_head_next]; struct txq_elt *elt = &(*txq->elts)[elts_head]; unsigned int segs = NB_SEGS(buf); -#ifdef MLX4_PMD_SOFT_COUNTERS unsigned int sent_size = 0; -#endif uint32_t send_flags = 0; /* Clean up old buffer. */ @@ -1452,9 +1449,7 @@ mlx4_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) send_flags); if (unlikely(err)) goto stop; -#ifdef MLX4_PMD_SOFT_COUNTERS sent_size += length; -#endif } else { #if MLX4_PMD_SGE_WR_N > 1 struct ibv_sge sges[MLX4_PMD_SGE_WR_N]; @@ -1473,9 +1468,7 @@ mlx4_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) send_flags); if (unlikely(err)) goto stop; -#ifdef MLX4_PMD_SOFT_COUNTERS sent_size += ret.length; -#endif #else /* MLX4_PMD_SGE_WR_N > 1 */ DEBUG("%p: TX scattered buffers support not" " compiled in", (void *)txq); @@ -1483,19 +1476,15 @@ mlx4_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) #endif /* MLX4_PMD_SGE_WR_N > 1 */ } elts_head = elts_head_next; -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increment sent bytes counter. */ txq->stats.obytes += sent_size; -#endif } stop: /* Take a shortcut if nothing must be sent. */ if (unlikely(i == 0)) return 0; -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increment sent packets counter. */ txq->stats.opackets += i; -#endif /* Ring QP doorbell. */ err = txq->if_qp->send_flush(txq->qp); if (unlikely(err)) { @@ -2786,10 +2775,8 @@ mlx4_rx_burst_sp(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) " completion status (%d): %s", (void *)rxq, wc.wr_id, wc.status, ibv_wc_status_str(wc.status)); -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increment dropped packets counter. */ ++rxq->stats.idropped; -#endif /* Link completed WRs together for repost. */ *next = wr; next = &wr->next; @@ -2901,10 +2888,8 @@ mlx4_rx_burst_sp(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) /* Return packet. */ *(pkts++) = pkt_buf; ++pkts_ret; -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increase bytes counter. */ rxq->stats.ibytes += pkt_buf_len; -#endif repost: if (++elts_head >= elts_n) elts_head = 0; @@ -2924,10 +2909,8 @@ mlx4_rx_burst_sp(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) abort(); } rxq->elts_head = elts_head; -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increase packets counter. */ rxq->stats.ipackets += pkts_ret; -#endif return pkts_ret; } @@ -3008,10 +2991,8 @@ mlx4_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) " completion status (%d): %s", (void *)rxq, wc.wr_id, wc.status, ibv_wc_status_str(wc.status)); -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increment dropped packets counter. */ ++rxq->stats.idropped; -#endif /* Add SGE to array for repost. */ sges[i] = elt->sge; goto repost; @@ -3062,10 +3043,8 @@ mlx4_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) /* Return packet. */ *(pkts++) = seg; ++pkts_ret; -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increase bytes counter. */ rxq->stats.ibytes += len; -#endif repost: if (++elts_head >= elts_n) elts_head = 0; @@ -3083,10 +3062,8 @@ mlx4_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) abort(); } rxq->elts_head = elts_head; -#ifdef MLX4_PMD_SOFT_COUNTERS /* Increase packets counter. */ rxq->stats.ipackets += pkts_ret; -#endif return pkts_ret; } @@ -4270,17 +4247,13 @@ mlx4_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) continue; idx = rxq->stats.idx; if (idx < RTE_ETHDEV_QUEUE_STAT_CNTRS) { -#ifdef MLX4_PMD_SOFT_COUNTERS tmp.q_ipackets[idx] += rxq->stats.ipackets; tmp.q_ibytes[idx] += rxq->stats.ibytes; -#endif tmp.q_errors[idx] += (rxq->stats.idropped + rxq->stats.rx_nombuf); } -#ifdef MLX4_PMD_SOFT_COUNTERS tmp.ipackets += rxq->stats.ipackets; tmp.ibytes += rxq->stats.ibytes; -#endif tmp.ierrors += rxq->stats.idropped; tmp.rx_nombuf += rxq->stats.rx_nombuf; } @@ -4291,21 +4264,14 @@ mlx4_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) continue; idx = txq->stats.idx; if (idx < RTE_ETHDEV_QUEUE_STAT_CNTRS) { -#ifdef MLX4_PMD_SOFT_COUNTERS tmp.q_opackets[idx] += txq->stats.opackets; tmp.q_obytes[idx] += txq->stats.obytes; -#endif tmp.q_errors[idx] += txq->stats.odropped; } -#ifdef MLX4_PMD_SOFT_COUNTERS tmp.opackets += txq->stats.opackets; tmp.obytes += txq->stats.obytes; -#endif tmp.oerrors += txq->stats.odropped; } -#ifndef MLX4_PMD_SOFT_COUNTERS - /* FIXME: retrieve and add hardware counters. */ -#endif *stats = tmp; priv_unlock(priv); } @@ -4340,9 +4306,6 @@ mlx4_stats_reset(struct rte_eth_dev *dev) (*priv->txqs)[i]->stats = (struct mlx4_txq_stats){ .idx = idx }; } -#ifndef MLX4_PMD_SOFT_COUNTERS - /* FIXME: reset hardware counters. */ -#endif priv_unlock(priv); } diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h index 702f9c9..97e042e 100644 --- a/drivers/net/mlx4/mlx4.h +++ b/drivers/net/mlx4/mlx4.h @@ -101,14 +101,6 @@ #define MLX4_PMD_TX_MP_CACHE 8 #endif -/* - * If defined, only use software counters. The PMD will never ask the hardware - * for these, and many of them won't be available. - */ -#ifndef MLX4_PMD_SOFT_COUNTERS -#define MLX4_PMD_SOFT_COUNTERS 1 -#endif - /* Alarm timeout. */ #define MLX4_ALARM_TIMEOUT_US 100000 @@ -186,10 +178,8 @@ enum { struct mlx4_rxq_stats { unsigned int idx; /**< Mapping index. */ -#ifdef MLX4_PMD_SOFT_COUNTERS uint64_t ipackets; /**< Total of successfully received packets. */ uint64_t ibytes; /**< Total of successfully received bytes. */ -#endif uint64_t idropped; /**< Total of packets dropped when RX ring full. */ uint64_t rx_nombuf; /**< Total of RX mbuf allocation failures. */ }; @@ -252,10 +242,8 @@ struct txq_elt { struct mlx4_txq_stats { unsigned int idx; /**< Mapping index. */ -#ifdef MLX4_PMD_SOFT_COUNTERS uint64_t opackets; /**< Total of successfully sent packets. */ uint64_t obytes; /**< Total of successfully sent bytes. */ -#endif uint64_t odropped; /**< Total of packets not sent when TX ring full. */ };