From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 27358A04B5; Thu, 29 Oct 2020 12:02:19 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7EDD5C9FA; Thu, 29 Oct 2020 12:02:17 +0100 (CET) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by dpdk.org (Postfix) with ESMTP id 93C30C9EA for ; Thu, 29 Oct 2020 12:02:14 +0100 (CET) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id E9F737F4F0; Thu, 29 Oct 2020 14:02:12 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru E9F737F4F0 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1603969333; bh=Elgt8MzFpPzd8IzyPOLkJL4vgpj+QRiYuYnWF6YGdTA=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=TCZT+8949Bmg0z2E10Fiq102ykJpOetUnHP+B72mNBgEzi1n4HG99sCPbJw6L18Ib B8URZ3ZxE2qHcazE7X7tkNc8rqX4ZKEh5YLzjDZvdrx2SWj94cYq6yvni4W7DVrtA2 KsGcImJoxFqujF1LVvAhmDKdbiZ4w9WZWJ/GpYAc= To: Thomas Monjalon , dev@dpdk.org Cc: ferruh.yigit@intel.com, david.marchand@redhat.com, bruce.richardson@intel.com, olivier.matz@6wind.com, jerinj@marvell.com, viacheslavo@nvidia.com, Nithin Dabilpuram , Kiran Kumar K , Ray Kinsella , Neil Horman References: <20201029092751.3837177-1-thomas@monjalon.net> <20201029092751.3837177-11-thomas@monjalon.net> From: Andrew Rybchenko Organization: OKTET Labs Message-ID: <69cd6699-290f-102f-038a-f9fdde5874a1@oktetlabs.ru> Date: Thu, 29 Oct 2020 14:02:12 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <20201029092751.3837177-11-thomas@monjalon.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH 10/15] net/octeontx2: 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" On 10/29/20 12:27 PM, Thomas Monjalon wrote: > 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. > > Signed-off-by: Thomas Monjalon > --- > drivers/net/octeontx2/otx2_ethdev.c | 33 +++++++++++++++++++++++++++++ > drivers/net/octeontx2/otx2_rx.h | 19 ++++++++++++++--- > drivers/net/octeontx2/version.map | 7 ++++++ > 3 files changed, 56 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c > index cfb733a4b5..ad95219438 100644 > --- a/drivers/net/octeontx2/otx2_ethdev.c > +++ b/drivers/net/octeontx2/otx2_ethdev.c > @@ -4,6 +4,7 @@ > > #include > > +#include > #include > #include > #include > @@ -14,6 +15,35 @@ > #include "otx2_ethdev.h" > #include "otx2_ethdev_sec.h" > > +uint64_t rte_pmd_octeontx2_timestamp_rx_dynflag; > +int rte_pmd_octeontx2_timestamp_dynfield_offset = -1; > + > +static int > +otx2_rx_timestamp_setup(uint16_t flags) > +{ > + int timestamp_rx_dynflag_offset; > + > + if ((flags & NIX_RX_OFFLOAD_TSTAMP_F) == 0) > + return 0; > + > + rte_pmd_octeontx2_timestamp_dynfield_offset = rte_mbuf_dynfield_lookup( > + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); > + if (rte_pmd_octeontx2_timestamp_dynfield_offset < 0) { > + otx2_err("Failed to lookup timestamp field"); > + return -rte_errno; > + } > + timestamp_rx_dynflag_offset = rte_mbuf_dynflag_lookup( > + RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, NULL); > + if (timestamp_rx_dynflag_offset < 0) { > + otx2_err("Failed to lookup Rx timestamp flag"); > + return -rte_errno; > + } > + rte_pmd_octeontx2_timestamp_rx_dynflag = > + RTE_BIT64(timestamp_rx_dynflag_offset); > + > + return 0; > +} > + > static inline uint64_t > nix_get_rx_offload_capa(struct otx2_eth_dev *dev) > { > @@ -1874,6 +1904,9 @@ otx2_nix_configure(struct rte_eth_dev *eth_dev) > dev->tx_offload_flags |= nix_tx_offload_flags(eth_dev); > dev->rss_info.rss_grps = NIX_RSS_GRPS; > > + if (otx2_rx_timestamp_setup(dev->rx_offload_flags) != 0) > + goto fail_offloads; > + > nb_rxq = RTE_MAX(data->nb_rx_queues, 1); > nb_txq = RTE_MAX(data->nb_tx_queues, 1); > > diff --git a/drivers/net/octeontx2/otx2_rx.h b/drivers/net/octeontx2/otx2_rx.h > index 61a5c436dd..6981edce82 100644 > --- a/drivers/net/octeontx2/otx2_rx.h > +++ b/drivers/net/octeontx2/otx2_rx.h > @@ -63,6 +63,18 @@ union mbuf_initializer { > uint64_t value; > }; > > +/* variables are exported because this file is included in other drivers */ > +extern uint64_t rte_pmd_octeontx2_timestamp_rx_dynflag; > +extern int rte_pmd_octeontx2_timestamp_dynfield_offset; > + > +static inline rte_mbuf_timestamp_t * > +otx2_timestamp_dynfield(struct rte_mbuf *mbuf) > +{ > + return RTE_MBUF_DYNFIELD(mbuf, > + rte_pmd_octeontx2_timestamp_dynfield_offset, > + rte_mbuf_timestamp_t *); > +} > + May be ethdev should provide the inline function?