From patchwork Thu Oct 29 09:27:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82717 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 47B9AA04DD; Thu, 29 Oct 2020 10:29:43 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B3869C8DC; Thu, 29 Oct 2020 10:28:17 +0100 (CET) Received: from wnew3-smtp.messagingengine.com (wnew3-smtp.messagingengine.com [64.147.123.17]) by dpdk.org (Postfix) with ESMTP id 3E9B0C8B2 for ; Thu, 29 Oct 2020 10:28:11 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.west.internal (Postfix) with ESMTP id C85629B8; Thu, 29 Oct 2020 05:28:09 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:10 -0400 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=laTi8L+gyZ7hG Cn2/9peEaRGJ42YQ/XJrPdGr+qFtQI=; b=Bak+9Vg+7s0OGGc2NTckLPioI/Rxt cq7DRkT84y+GBDzE+lc2qf4CrdsjqIBWU29RxqT/CLgauOr8HaxBzjINva0nT+ZW VHDThuSOUHgNXnEuz1a2fnTswkCNUQTYQt6AFej7LXDknea2x9Q18RkuIu7dCuFE falYvch4Z6emS4ModjM+htairM7vGvX2CC9FxVFCEoihthgwzApGlqRkohdSQmIC 9OWmzvPJbkAzCjstOhTE9guLm0bvCjoV65ryvIjOYj56zF7VVn8pxWPW+d99IiLA TNbOr2CRoxsM/DzdQbgwaV2lW2Qd9bpHEs/lD64R9HkKJMY7+R9szncWA== 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=laTi8L+gyZ7hGCn2/9peEaRGJ42YQ/XJrPdGr+qFtQI=; b=W/dRoKMK NIOSqmP4zrzKTcUmIlg76yZlGpUhG9MUUtZ8hRj6um9IYAei9ey0xec0dtPCsTkq HH6sNNUY3/dmtprgUxBS0eTWUyQKx1hg+ZYtR1qOw7CzM+aJ7CW4tK8IHWDchGED ZEX5sO7sPrQtOr99UxrpIEocH+IY2owBRXQTdeAhmaFKvJ+QJw5md7kqggqeWtHk XF+LQ6dI05UC+PjZLZiQ7gJRogFCmMt+fB7/aDk8/EpN4pmJ3byIYukEtiP2autX aOsiOYFQvnWayiXWktpPzhphlc1BbtIF0Bz52WPZRUnWHb87VJWRKvWz5MGuoeuq vW8GzPCWjXoFKA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepfeenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho nhdrnhgvth X-ME-Proxy: Received: from xps.monjalon.net (184.203.134.77.rev.sfr.net [77.134.203.184]) by mail.messagingengine.com (Postfix) with ESMTPA id 191BA328005D; Thu, 29 Oct 2020 05:28:08 -0400 (EDT) From: Thomas Monjalon 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, Shepard Siegel , Ed Czeck , John Miller Date: Thu, 29 Oct 2020 10:27:40 +0100 Message-Id: <20201029092751.3837177-6-thomas@monjalon.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201029092751.3837177-1-thomas@monjalon.net> References: <20201029092751.3837177-1-thomas@monjalon.net> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 05/15] net/ark: switch timestamp to dynamic mbuf field 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" The mbuf timestamp is moved to a dynamic field in order to allow removal of the deprecated static field. The related dynamic mbuf flag is set, although was missing previously. The timestamp is set if configured for at least one device. Signed-off-by: Thomas Monjalon --- drivers/net/ark/ark_ethdev.c | 23 +++++++++++++++++++++++ drivers/net/ark/ark_ethdev_rx.c | 10 +++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index fa343999a1..629f825019 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "rte_pmd_ark.h" #include "ark_global.h" @@ -79,6 +80,8 @@ static int eth_ark_set_mtu(struct rte_eth_dev *dev, uint16_t size); #define ARK_TX_MAX_QUEUE (4096 * 4) #define ARK_TX_MIN_QUEUE (256) +uint64_t ark_timestamp_rx_dynflag; +int ark_timestamp_dynfield_offset = -1; int rte_pmd_ark_rx_userdata_dynfield_offset = -1; int rte_pmd_ark_tx_userdata_dynfield_offset = -1; @@ -552,6 +555,24 @@ static int eth_ark_dev_configure(struct rte_eth_dev *dev) { struct ark_adapter *ark = dev->data->dev_private; + int ark_timestamp_rx_dynflag_offset; + + if (dev->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_TIMESTAMP) { + ark_timestamp_dynfield_offset = rte_mbuf_dynfield_lookup( + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); + if (ark_timestamp_dynfield_offset < 0) { + ARK_PMD_LOG(ERR, "Failed to lookup timestamp field\n"); + return -rte_errno; + } + ark_timestamp_rx_dynflag_offset = rte_mbuf_dynflag_lookup( + RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, NULL); + if (ark_timestamp_rx_dynflag_offset < 0) { + ARK_PMD_LOG(ERR, "Failed to lookup Rx timestamp flag\n"); + return -rte_errno; + } + ark_timestamp_rx_dynflag = + RTE_BIT64(ark_timestamp_rx_dynflag_offset); + } eth_ark_dev_set_link_up(dev); if (ark->user_ext.dev_configure) @@ -782,6 +803,8 @@ eth_ark_dev_info_get(struct rte_eth_dev *dev, ETH_LINK_SPEED_50G | ETH_LINK_SPEED_100G); + dev_info->rx_offload_capa = DEV_RX_OFFLOAD_TIMESTAMP; + return 0; } diff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c index 825b4791be..dda796da0d 100644 --- a/drivers/net/ark/ark_ethdev_rx.c +++ b/drivers/net/ark/ark_ethdev_rx.c @@ -15,6 +15,9 @@ #define ARK_RX_META_OFFSET (RTE_PKTMBUF_HEADROOM - ARK_RX_META_SIZE) #define ARK_RX_MAX_NOCHAIN (RTE_MBUF_DEFAULT_DATAROOM) +extern uint64_t ark_timestamp_rx_dynflag; +extern int ark_timestamp_dynfield_offset; + /* Forward declarations */ struct ark_rx_queue; struct ark_rx_meta; @@ -272,7 +275,12 @@ eth_ark_recv_pkts(void *rx_queue, mbuf->port = meta->port; mbuf->pkt_len = meta->pkt_len; mbuf->data_len = meta->pkt_len; - mbuf->timestamp = meta->timestamp; + /* set timestamp if enabled at least on one device */ + if (ark_timestamp_rx_dynflag > 0) { + *RTE_MBUF_DYNFIELD(mbuf, ark_timestamp_dynfield_offset, + rte_mbuf_timestamp_t *) = meta->timestamp; + mbuf->ol_flags |= ark_timestamp_rx_dynflag; + } rte_pmd_ark_mbuf_rx_userdata_set(mbuf, meta->user_data); if (ARK_DEBUG_CORE) { /* debug sanity checks */