From patchwork Tue Nov 3 12:22:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 83577 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 96C1DA0521; Tue, 3 Nov 2020 13:28:49 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9D18BCAAD; Tue, 3 Nov 2020 13:22:56 +0100 (CET) Received: from wnew3-smtp.messagingengine.com (wnew3-smtp.messagingengine.com [64.147.123.17]) by dpdk.org (Postfix) with ESMTP id 693A9CAAA for ; Tue, 3 Nov 2020 13:22:54 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.west.internal (Postfix) with ESMTP id BDDACCB7; Tue, 3 Nov 2020 07:22:51 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Tue, 03 Nov 2020 07:22:52 -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=+3d3TtOheP5gh grs8eSmgHwNMshshQSmEueMFucBF0k=; b=lWRDKSOIBjW962A1jVFmcTmzGsuTh CEmYrxpcyEv7NqMxHm8zPKG6eEnHwUGNx1VTZ4nh5hLuO8GWhHbpjXuLAKkc5tOU A1TtHl0HVp52c2rbsSu5EEiQ8j8setZ/zMjixU3dqGVdeusS04hyXXRAXD6Abo3L YMBa3lhkLs6a6qU9/W0nubgYQASr2EiZ221/cyDey7opnoaA1FhKqYfSH0erSsw1 9U2q7vS+gmBCvxKgZ52I2XuyelioCdSLGl4v1dP0ucp4C1s0MUZ8v+zWL9+PLn1F HChpWAzDABjYrMNc5giAoPstISeIAM7FuLIiSxpAM4//9nfZOxMmyMM/w== 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=+3d3TtOheP5ghgrs8eSmgHwNMshshQSmEueMFucBF0k=; b=o+TiXQLY 45FAzwVNlJuOm1dna3Nwx2KffbFw1oWzoanm3DWjK0D9rd6/7DzYpWO5MPsaGrPp hVFG0mNNw9pUEgZ/KiqoA/uacn31xOe7QFw7jKV8/VQvas4cSn4EOaLTCocz9zmt Igho3D5mne2gQGobKsraZbDMGLf9FRMdqUFCqmb9jlZszEzktAxZduz3X3jBDqGn wu3yKLnv6sVtQjm6Cau4jHKq+M4mGaSDZox7NbHixUXZUYkneQG2la3lxfl1uAai 4/Et9s+7TNJLRD9fmzXsZ5JDF5w/Bl9mll4EMM7RKMhdFtbSIucPmE0JgdNC1J2c 8ryaVhnRsveG6w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedruddtfedgfeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefvhhhomhgr shcuofhonhhjrghlohhnuceothhhohhmrghssehmohhnjhgrlhhonhdrnhgvtheqnecugg ftrfgrthhtvghrnhepjefhhffhvedvledtiedttdeigfejgeehvdfghfdvhfegvdehieel ieejhedvfeeknecuffhomhgrihhnpehrgihmohguvgdrmhhqnecukfhppeejjedrudefge drvddtfedrudekgeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhl fhhrohhmpehthhhomhgrshesmhhonhhjrghlohhnrdhnvght 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 57CF93064683; Tue, 3 Nov 2020 07:22:49 -0500 (EST) 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, Wenzhuo Lu , Beilei Xing , Bernard Iremonger , Matan Azrad , Shahaf Shuler Date: Tue, 3 Nov 2020 13:22:05 +0100 Message-Id: <20201103122205.183472-17-thomas@monjalon.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201103122205.183472-1-thomas@monjalon.net> References: <20201029092751.3837177-1-thomas@monjalon.net> <20201103122205.183472-1-thomas@monjalon.net> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v4 16/16] ethdev: include mbuf registration in Tx timestamp API 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" Previously, the Tx timestamp field and flag were registered in testpmd, as described in mlx5 guide. For consistency between Rx and Tx timestamps, managing mbuf registrations inside the driver, as properly documented, is a simpler expectation. The only driver to support this feature (mlx5) is updated as well as the testpmd application. Signed-off-by: Thomas Monjalon Acked-by: Viacheslav Ovsiienko Acked-by: David Marchand Acked-by: Andrew Rybchenko --- app/test-pmd/config.c | 38 ---------------------------------- doc/guides/nics/mlx5.rst | 5 ++--- drivers/net/mlx5/mlx5_ethdev.c | 8 ++++++- lib/librte_ethdev/rte_ethdev.h | 6 +++++- 4 files changed, 14 insertions(+), 43 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 1668ae3238..9a2baf16fe 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -3955,44 +3955,6 @@ show_tx_pkt_times(void) void set_tx_pkt_times(unsigned int *tx_times) { - uint16_t port_id; - int offload_found = 0; - int offset; - int flag; - - static const struct rte_mbuf_dynfield desc_offs = { - .name = RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, - .size = sizeof(uint64_t), - .align = __alignof__(uint64_t), - }; - static const struct rte_mbuf_dynflag desc_flag = { - .name = RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, - }; - - RTE_ETH_FOREACH_DEV(port_id) { - struct rte_eth_dev_info dev_info = { 0 }; - int ret; - - ret = rte_eth_dev_info_get(port_id, &dev_info); - if (ret == 0 && dev_info.tx_offload_capa & - DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP) { - offload_found = 1; - break; - } - } - if (!offload_found) { - printf("No device supporting Tx timestamp scheduling found, " - "dynamic flag and field not registered\n"); - return; - } - offset = rte_mbuf_dynfield_register(&desc_offs); - if (offset < 0 && rte_errno != EEXIST) - printf("Dynamic timestamp field registration error: %d", - rte_errno); - flag = rte_mbuf_dynflag_register(&desc_flag); - if (flag < 0 && rte_errno != EEXIST) - printf("Dynamic timestamp flag registration error: %d", - rte_errno); tx_pkt_times_inter = tx_times[0]; tx_pkt_times_intra = tx_times[1]; } diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index afa65a1379..fa8b13dd1b 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -237,9 +237,8 @@ Limitations ``txq_inline_max`` and ``txq_inline_mpw`` devargs keys. - To provide the packet send scheduling on mbuf timestamps the ``tx_pp`` - parameter should be specified, RTE_MBUF_DYNFIELD_TIMESTAMP_NAME and - RTE_MBUF_DYNFLAG_TIMESTAMP_NAME should be registered by application. - When PMD sees the RTE_MBUF_DYNFLAG_TIMESTAMP_NAME set on the packet + parameter should be specified. + When PMD sees the RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME set on the packet being sent it tries to synchronize the time of packet appearing on the wire with the specified packet timestamp. It the specified one is in the past it should be ignored, if one is in the distant future diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 7631f644b2..76ef02664f 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -88,7 +88,13 @@ mlx5_dev_configure(struct rte_eth_dev *dev) if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG) dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH; - + if ((dev->data->dev_conf.txmode.offloads & + DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP) && + rte_mbuf_dyn_tx_timestamp_register(NULL, NULL) != 0) { + DRV_LOG(ERR, "port %u cannot register Tx timestamp field/flag", + dev->data->port_id); + return -rte_errno; + } memcpy(priv->rss_conf.rss_key, use_app_rss_key ? dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key : diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 1fc5f662fa..619cbe521e 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1413,7 +1413,11 @@ struct rte_eth_conf { #define DEV_TX_OFFLOAD_IP_TNL_TSO 0x00080000 /** Device supports outer UDP checksum */ #define DEV_TX_OFFLOAD_OUTER_UDP_CKSUM 0x00100000 -/** Device supports send on timestamp */ +/** + * Device sends on time read from RTE_MBUF_DYNFIELD_TIMESTAMP_NAME + * if RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME is set in ol_flags. + * The mbuf field and flag are registered when the offload is configured. + */ #define DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP 0x00200000 /* * If new Tx offload capabilities are defined, they also must be