From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <dev-bounces@dpdk.org> Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F3BA6A0521; Tue, 3 Nov 2020 15:10:49 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EF3D3CAD6; Tue, 3 Nov 2020 15:09:52 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id 95853CACD for <dev@dpdk.org>; Tue, 3 Nov 2020 15:09:50 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 3BD95BDC; Tue, 3 Nov 2020 09:09:48 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Tue, 03 Nov 2020 09:09:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm2; bh=dzrga604Capbk MVFKYtM1ntfRljEjDFKVYkOCck5Kog=; b=Vkb6FmP1k/sq3QImO3z8LQV1kx59x NLj6YZqfEQsVhB5B6oI/k00Buzz8fxC/ajY93NutO73euGA6pI04l1v5zpsJ4ZAs eJsZaI6BAJaTxOxDT2oY6jho7eRSnnMLHcfDfLhWG9Et4r8smImmdPbtMxfIV2Na 6n+mByT71FiidBHo2BXjySCPDZhFEznKTNQqxpGiuh1g/5AN1x9n5gzX72vL5q5Y OBB28a18Q8vB7jtot2EuzQfb6kiFuz7IsCBR3G3MTLNjPSBYBB9rasAHhBTjF0AN BKlLa8ZvCMkcB8ZPcPH3/I+61essL7FRm8GT90R711Glz5OIf8c9aTcFQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=dzrga604CapbkMVFKYtM1ntfRljEjDFKVYkOCck5Kog=; b=q2V6HxgL cx+hghexWuHzhLlF6PWUksk+R0EfmYVNLFiunA1hDPyxCUOfMvU2WEIdtK7Gsqq7 xZxlnxY7SP104IchEa71thC1oBjEfHDCtOwySM3Gxtm+5VHagNoaczYbF12wU5kV uhECIQIlV6NI6HUZPw4InMZGm4uThqFFx7i2NDKvkJ0KuKM4Tg0WY9wDfOzVyaNs VzzcJfI2QOmlSU/e5dFO6bNjkYXww8otwVUsb7H2AHg8PpZUfRqjaiLJ6Yfjw5D+ kuhVHcAic5D/fIw+UqRdSPYNVnPZDuSOuEETOWvq6M2OJsyIwBW5r6+T/VFnOYtj zaPFOMSbHzRpxg== X-ME-Sender: <xms:q2ShXzBQwTDqfo338b0uFHVgoUnLMPzfri565tTAKjh1CTrvrIEJ8g> <xme:q2ShX5hgkEQkUlPcNnEgdH1fNSufreFoSjzXJiKPEAi8ADn9oVsfYe4nVty4-EO9Z r91nFbn8RcKtYUomg> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedruddtfedgheekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefvhhhomhgr shcuofhonhhjrghlohhnuceothhhohhmrghssehmohhnjhgrlhhonhdrnhgvtheqnecugg ftrfgrthhtvghrnhepvdehgfeivdejgedtveehfefhteelfefgieevgfffveefjeegtdfg uedthedtgeevnecukfhppeejjedrudefgedrvddtfedrudekgeenucevlhhushhtvghruf hiiigvpedvnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhomhgrshesmhhonhhjrghl ohhnrdhnvght X-ME-Proxy: <xmx:q2ShX-kIwrvObADe67S1PFY52nDFKuy05ydjEE_Uid0w3vMp8Vhv7w> <xmx:q2ShX1yNTs9p5GZx8f9qQfbqSkda_DPMRTmlJEUzn33GGK2pmvng5Q> <xmx:q2ShX4Schiyyg7pRpR35EYy7N6IK8JNnbbdOzrcUkkef9l8fEmP6dg> <xmx:q2ShX3Eh4-QUM3gv4bqExwLDQo3AJ6Ww6HIKpxl8pIzSm8a31uhX1g> Received: from xps.monjalon.net (184.203.134.77.rev.sfr.net [77.134.203.184]) by mail.messagingengine.com (Postfix) with ESMTPA id B3C55328005E; Tue, 3 Nov 2020 09:09:46 -0500 (EST) From: Thomas Monjalon <thomas@monjalon.net> To: dev@dpdk.org Cc: ferruh.yigit@intel.com, david.marchand@redhat.com, bruce.richardson@intel.com, olivier.matz@6wind.com, andrew.rybchenko@oktetlabs.ru, jerinj@marvell.com, viacheslavo@nvidia.com, Reshma Pattan <reshma.pattan@intel.com> Date: Tue, 3 Nov 2020 15:09:18 +0100 Message-Id: <20201103140931.488700-4-thomas@monjalon.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201103140931.488700-1-thomas@monjalon.net> References: <20201029092751.3837177-1-thomas@monjalon.net> <20201103140931.488700-1-thomas@monjalon.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v5 03/16] latency: switch Rx timestamp to dynamic mbuf field X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> The mbuf timestamp is moved to a dynamic field in order to allow removal of the deprecated static field. The related mbuf flag is also replaced with the dynamic one. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: David Marchand <david.marchand@redhat.com> --- lib/librte_latencystats/rte_latencystats.c | 30 ++++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/lib/librte_latencystats/rte_latencystats.c b/lib/librte_latencystats/rte_latencystats.c index ba2fff3bcb..ab8db7a139 100644 --- a/lib/librte_latencystats/rte_latencystats.c +++ b/lib/librte_latencystats/rte_latencystats.c @@ -9,6 +9,7 @@ #include <rte_string_fns.h> #include <rte_mbuf.h> +#include <rte_mbuf_dyn.h> #include <rte_log.h> #include <rte_cycles.h> #include <rte_ethdev.h> @@ -31,6 +32,16 @@ latencystat_cycles_per_ns(void) /* Macros for printing using RTE_LOG */ #define RTE_LOGTYPE_LATENCY_STATS RTE_LOGTYPE_USER1 +static uint64_t timestamp_dynflag; +static int timestamp_dynfield_offset = -1; + +static inline rte_mbuf_timestamp_t * +timestamp_dynfield(struct rte_mbuf *mbuf) +{ + return RTE_MBUF_DYNFIELD(mbuf, + timestamp_dynfield_offset, rte_mbuf_timestamp_t *); +} + static const char *MZ_RTE_LATENCY_STATS = "rte_latencystats"; static int latency_stats_index; static uint64_t samp_intvl; @@ -128,10 +139,10 @@ add_time_stamps(uint16_t pid __rte_unused, diff_tsc = now - prev_tsc; timer_tsc += diff_tsc; - if ((pkts[i]->ol_flags & PKT_RX_TIMESTAMP) == 0 + if ((pkts[i]->ol_flags & timestamp_dynflag) == 0 && (timer_tsc >= samp_intvl)) { - pkts[i]->timestamp = now; - pkts[i]->ol_flags |= PKT_RX_TIMESTAMP; + *timestamp_dynfield(pkts[i]) = now; + pkts[i]->ol_flags |= timestamp_dynflag; timer_tsc = 0; } prev_tsc = now; @@ -161,8 +172,8 @@ calc_latency(uint16_t pid __rte_unused, now = rte_rdtsc(); for (i = 0; i < nb_pkts; i++) { - if (pkts[i]->ol_flags & PKT_RX_TIMESTAMP) - latency[cnt++] = now - pkts[i]->timestamp; + if (pkts[i]->ol_flags & timestamp_dynflag) + latency[cnt++] = now - *timestamp_dynfield(pkts[i]); } rte_spinlock_lock(&glob_stats->lock); @@ -241,6 +252,15 @@ rte_latencystats_init(uint64_t app_samp_intvl, return -1; } + /* Register mbuf field and flag for Rx timestamp */ + ret = rte_mbuf_dyn_rx_timestamp_register(×tamp_dynfield_offset, + ×tamp_dynflag); + if (ret != 0) { + RTE_LOG(ERR, LATENCY_STATS, + "Cannot register mbuf field/flag for timestamp\n"); + return -rte_errno; + } + /** Register Rx/Tx callbacks */ RTE_ETH_FOREACH_DEV(pid) { struct rte_eth_dev_info dev_info; -- 2.28.0