From patchwork Fri Oct 30 17:29:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82962 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 66FD3A04E6; Fri, 30 Oct 2020 18:31:37 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CBD925A51; Fri, 30 Oct 2020 18:30:09 +0100 (CET) Received: from new2-smtp.messagingengine.com (new2-smtp.messagingengine.com [66.111.4.224]) by dpdk.org (Postfix) with ESMTP id CD2314F9C for ; Fri, 30 Oct 2020 18:29:57 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.nyi.internal (Postfix) with ESMTP id 807A4580659; Fri, 30 Oct 2020 13:29:56 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Fri, 30 Oct 2020 13:29:56 -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=jf3PCODWty1Uw9UBXVk8YF1no5Hhc 3nnJK97pIqZWZHnXGw+iBqAS4capT5m4ZalLNpgwbd4Yw9NYjjj4WeHnTNiQlY2x jPcyJ/jIrfeA1CSTGgVnepN9abSKInNJporG3NiQpxkCIQZE13vrq6oWXmXh3i4A Ya3SaG7/tR2GGTXKW5RuwTpfo4AbM+ZKxnXYkrvaEgNB5HXWrZ4xqZa1akTz7uKv 7TYQ18+zHAwuDJhxaDZpEAgT6qOPqCDEVU4oTjxdQmvIFR2HULZ+FM4oaR+XBv9y evNTovLO1JtY9BZ+Jo7svu+owzvcPkduKtyROazv+YsNh2LTt5VNx9jnQ== 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=fnOA7jh9 r+Fzft48rkKCgLMvmCcTFll2iFP08cJMyfgVk+iDVeqByAZHLgrAD+x7N14IQ3hp KLe17wb5w3Dtod8m7v3k6sVBHGQMYTvC0R2vG7kzPhhOyT2TXdKj7GArzrq7+S9i O9BZhmL6yVR/P4NxYBLPOIT44KMQ0gYKLQYd4m/zoWpuDqV3+q4MEGywInl2MZoV H/tuw2BbGQl0+YElt/TbvpP9PdmLxEtDxVAVJEE2h7stqGIfetVaS03Hh7D8655s hE0WXTVXlcVzUlV3DutPmNkQKp4m/fo5qK9pq3DSe6xVfBkuBRv1nhA7xjkmvofw ipQ395LLKxXGVw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleehgdeliecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepgeenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho 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 EE1153064685; Fri, 30 Oct 2020 13:29:54 -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, akhil.goyal@nxp.com, jerinj@marvell.com, Shepard Siegel , Ed Czeck , John Miller Date: Fri, 30 Oct 2020 18:29:30 +0100 Message-Id: <20201030172940.1073558-6-thomas@monjalon.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201030172940.1073558-1-thomas@monjalon.net> References: <20201026052105.1561859-1-thomas@monjalon.net> <20201030172940.1073558-1-thomas@monjalon.net> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v5 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 */