From patchwork Thu Oct 29 09:27:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82713 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 199EFA04DD; Thu, 29 Oct 2020 10:28:23 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1541FC860; Thu, 29 Oct 2020 10:28:06 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id 5250EC850 for ; Thu, 29 Oct 2020 10:28:02 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 06D9471B; Thu, 29 Oct 2020 05:27:59 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:00 -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=d3ztsAyXOIJYQ l5EkxV8lcANpMnAVb2RCdS4o479Bec=; b=H8yaK6HBQciyxzoD738TJ6fgQ8viN yF/ckOKFSAygIOec/bG4zGsMAuhwTAnB3VvRwgZ6IL0+eIQsH/lZ9loGO7B2mr3g FN6lOUdaMyYySExAQNMgEGOJhVMO7XeyE/1NpGnSbBE/SFBzrPvYytI0Ogqtxax1 XOCirwa5/U5hBMbPUVzZ4NCoQyCn/sLBWsnXd29vEuUn/PRQB9p7Mv81iEZQfmA/ PNgl8P7b6fAkyUpX91BAz9p72qPAL6uj/kwXmOImiy7wuA3MNn0UMR63NV9xVwtq xVS1BI4IMmOaIQZWEwBavwTsfljYQfEPyvdV0JiFZhy1LACJw7dLXOtcg== 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=d3ztsAyXOIJYQl5EkxV8lcANpMnAVb2RCdS4o479Bec=; b=R05Op0gF YoPh3HYYkwq+douycdz5xFhWnYERvsv+Pg5/p6VCLOkqHbHybJdsTgpJAqVXFOL1 iMKjzpr6ABLxdzKAm3WcaObFAlDspSsTlLVtyytfaYYX0LDHSj1FIUXLFQNeTO74 IgT97VITrruAdwMYpnCqvffVyItsnCOydPiaPjcCAxY4RonuDWQT0qeQtcCk5Nrc zy2li+GFtrk92gRmUkQaEqq+Z3IGwQ4LrXvo5SzmWZzNTgQkmhuxdRf1rovb5cmo B624p0CfvAhTNgy3xmXPh8UvIBwG/9k7W3MQh2f2H2z8rDL4L1ksWxG5fS1UeMqt WkHIHY6tpLGmJg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho 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 840573280063; Thu, 29 Oct 2020 05:27:58 -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, Nikhil Rao Date: Thu, 29 Oct 2020 10:27:36 +0100 Message-Id: <20201029092751.3837177-2-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 01/15] eventdev: remove software Rx timestamp 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" This a revert of the commit 569758758dcd ("eventdev: add Rx timestamp"). If the Rx timestamp is not configured on the ethdev port, there is no reason to set one. Also the accuracy of the timestamp was bad because set at a late stage. Anyway there is no trace of the usage of this timestamp. Signed-off-by: Thomas Monjalon --- doc/guides/prog_guide/event_ethernet_rx_adapter.rst | 6 +----- lib/librte_eventdev/rte_event_eth_rx_adapter.c | 11 ----------- lib/librte_eventdev/rte_event_eth_rx_adapter.h | 6 +----- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst index 236f43f455..cb44ce0e47 100644 --- a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst +++ b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst @@ -12,11 +12,7 @@ be supported in hardware or require a software thread to receive packets from the ethdev port using ethdev poll mode APIs and enqueue these as events to the event device using the eventdev API. Both transfer mechanisms may be present on the same platform depending on the particular combination of the ethdev and -the event device. For SW based packet transfer, if the mbuf does not have a -timestamp set, the adapter adds a timestamp to the mbuf using -rte_get_tsc_cycles(), this provides a more accurate timestamp as compared to -if the application were to set the timestamp since it avoids event device -schedule latency. +the event device. The Event Ethernet Rx Adapter library is intended for the application code to configure both transfer mechanisms using a common API. A capability API allows diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c index f0000d1ede..3c73046551 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c @@ -763,7 +763,6 @@ rxa_buffer_mbufs(struct rte_event_eth_rx_adapter *rx_adapter, uint32_t rss_mask; uint32_t rss; int do_rss; - uint64_t ts; uint16_t nb_cb; uint16_t dropped; @@ -771,16 +770,6 @@ rxa_buffer_mbufs(struct rte_event_eth_rx_adapter *rx_adapter, rss_mask = ~(((m->ol_flags & PKT_RX_RSS_HASH) != 0) - 1); do_rss = !rss_mask && !eth_rx_queue_info->flow_id_mask; - if ((m->ol_flags & PKT_RX_TIMESTAMP) == 0) { - ts = rte_get_tsc_cycles(); - for (i = 0; i < num; i++) { - m = mbufs[i]; - - m->timestamp = ts; - m->ol_flags |= PKT_RX_TIMESTAMP; - } - } - for (i = 0; i < num; i++) { m = mbufs[i]; diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.h b/lib/librte_eventdev/rte_event_eth_rx_adapter.h index 2dd259c279..21bb1e54c8 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.h +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.h @@ -21,11 +21,7 @@ * * The adapter uses a EAL service core function for SW based packet transfer * and uses the eventdev PMD functions to configure HW based packet transfer - * between the ethernet device and the event device. For SW based packet - * transfer, if the mbuf does not have a timestamp set, the adapter adds a - * timestamp to the mbuf using rte_get_tsc_cycles(), this provides a more - * accurate timestamp as compared to if the application were to set the time - * stamp since it avoids event device schedule latency. + * between the ethernet device and the event device. * * The ethernet Rx event adapter's functions are: * - rte_event_eth_rx_adapter_create_ext() From patchwork Thu Oct 29 09:27:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82714 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 3F570A04DD; Thu, 29 Oct 2020 10:28:39 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8A07FC86E; Thu, 29 Oct 2020 10:28:07 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id 75546C85E for ; Thu, 29 Oct 2020 10:28:04 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 3A4E196B; Thu, 29 Oct 2020 05:28:02 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:02 -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=AklnAr9ayfm51 8jrErRNTR6/yLG0/sBobDWiiT8ThXU=; b=CaSSlgGKAHrnkcDoIr85Bolnx5bul 0SJiTEUmWRgj6oTbQjK6GOkJfU59Hv9Jq402uEsJrtUPhXgZiszQ1mowZm9xXJ1t PdZFnDPzTVRRDssfnANByu413X1QLgm2SCcW+f49JFK4c7k18VvY/SUERHVZWXbb buH0cu9C+YsanugAP9hLil+L7f5wvKJ2nh4oE9AZgXp3VG0tS7vhW9IIh0t11/uI OGVlLEJ2r333l3u65Ex473wqTw8ppxmcKF3OgcIleDozdOf000wtiZRGwxfN18ks GMO3tZ1dmSR1ccAasQfa9S4gEPpvvscLKDffEofbZygDrE9Qkdnj/qv0g== 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=AklnAr9ayfm518jrErRNTR6/yLG0/sBobDWiiT8ThXU=; b=CHYthtlX B+O0kSGGdhFS5Vbx6gOBZpRKXz8rq3+WzZd4USX/vcmBlIMSBbcNosaRkhOmyWoA 9c6kl90358hr7RzZsEXF5rsX0FhdsLdAH0D8pj9i577nqHela+Qh+hqIoSEhX4Mr YO394L7VDmqgrlSMBH17Eo/xhLzlzoUI1TNJSqBiXVtm4LBF8LBIFILeqOkwZnAz EUifNSqdlKqW8A9horPnFpYsuhXEThd/+RmH6fJHeVHsTA8ROWKH+qMuSQ2OSxBP Nik7Pws75iCOa8eSiIUBGR/+b1agv7gFfxU3fPIKJf6C7KhJvzgaLrXq8ZjfrLU/ ANG5XnnTheoAug== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhephffvufffkffojghfggfgsedtkeertd ertddtnecuhfhrohhmpefvhhhomhgrshcuofhonhhjrghlohhnuceothhhohhmrghssehm ohhnjhgrlhhonhdrnhgvtheqnecuggftrfgrthhtvghrnhepvdehgfeivdejgedtveehfe fhteelfefgieevgfffveefjeegtdfguedthedtgeevnecukfhppeejjedrudefgedrvddt fedrudekgeenucevlhhushhtvghrufhiiigvpedunecurfgrrhgrmhepmhgrihhlfhhroh hmpehthhhomhgrshesmhhonhhjrghlohhnrdhnvght 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 C61FD3280064; Thu, 29 Oct 2020 05:28:00 -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 Date: Thu, 29 Oct 2020 10:27:37 +0100 Message-Id: <20201029092751.3837177-3-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 02/15] mbuf: add Rx timestamp dynamic flag 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" There is already a dynamic field for timestamp, used only for Tx scheduling, thanks to the dedicated flag. The same field can be used for Rx timestamp filled by drivers. The only missing part to get rid of the static timestamp field was to declare a new dynamic flag for Rx usage. After migrating all Rx timestamp usages, it will be possible to remove the deprecated timestamp field. Signed-off-by: Thomas Monjalon Acked-by: Andrew Rybchenko Acked-by: Ajit Khaparde --- lib/librte_mbuf/rte_mbuf_dyn.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf_dyn.h b/lib/librte_mbuf/rte_mbuf_dyn.h index 0ebac88b83..5fb85c0610 100644 --- a/lib/librte_mbuf/rte_mbuf_dyn.h +++ b/lib/librte_mbuf/rte_mbuf_dyn.h @@ -258,14 +258,14 @@ void rte_mbuf_dyn_dump(FILE *out); * timestamp. The dynamic Tx timestamp flag tells whether the field contains * actual timestamp value for the packets being sent, this value can be * used by PMD to schedule packet sending. - * - * After PKT_RX_TIMESTAMP flag and fixed timestamp field deprecation - * and obsoleting, the dedicated Rx timestamp flag is supposed to be - * introduced and the shared dynamic timestamp field will be used - * to handle the timestamps on receiving datapath as well. */ #define RTE_MBUF_DYNFIELD_TIMESTAMP_NAME "rte_dynfield_timestamp" +/** + * Indicate that the timestamp field in the mbuf was filled by the driver. + */ +#define RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME "rte_dynflag_rx_timestamp" + /** * When PMD sees the RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME flag set on the * packet being sent it tries to synchronize the time of packet appearing From patchwork Thu Oct 29 09:27:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82715 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 874C4A04DD; Thu, 29 Oct 2020 10:29:03 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2B98AC8B0; Thu, 29 Oct 2020 10:28:12 +0100 (CET) Received: from wnew3-smtp.messagingengine.com (wnew3-smtp.messagingengine.com [64.147.123.17]) by dpdk.org (Postfix) with ESMTP id BDD12C884 for ; Thu, 29 Oct 2020 10:28:07 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.west.internal (Postfix) with ESMTP id DE941972; Thu, 29 Oct 2020 05:28:04 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:05 -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=QyZVbia3vs6/U MqiDG5Uw6jan9+5GxOcIEB4g7FcJM8=; b=KaEkSoFmuaw1bE+2NAzcnhg8nfQ8c fAIMkKi7J5zxKJy3n3FBd3Heqds6p4hpG+zCbHFkUI36kHWaHXsu8o88j637GLk4 rPAqMRlNqiz152+RezMxaodD9/Dql75yPVu2cbqOLl+vRUultSIbvxgcnEUWV4R+ C1AVTWlQ6ssuX1XGcL/tdYp0jKwIBRx50Qds5/W8oYgmf2aEvzqGrR8H0lfA+yUN zTQOP2PKdS1Wzhf15D0nTjHEZbA5rUOpGOi4n6RDFdE6ybn2ppP4UEGA8dtGRDAl QUpX0iyyOewzMH3fd+mPNQ5W1HTigv6w5KohQ+l6EkaBMiwBJNPzEVLUw== 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=QyZVbia3vs6/UMqiDG5Uw6jan9+5GxOcIEB4g7FcJM8=; b=XSsbFsZT jdWYnFB2bXG+dpG+EvRltSf3iKOsFDtp/MOSI3BkkxWKQ8gfSyZkCOck9WQnCbMU YOVQmymsDSfr+D/z2XeSvXf9TkuGPduSQzrVn8kybjaEp0TJ7XzNnr1e4W90x1VJ ZtC4qVPPZl+kGnRDB+CiHET35SAEnZpoxsYCsUchnyG8Xav4OqcdRd/1xDAg0KHy ekiETIj6pkE2ERAM8J6mspjqZOdZGUJCZ2vld7v3RDXvSCupkXQKzHQuDP1eVQFF B95Fdz1IUcmo7tWkM0wCo8Zpneu96Cjh/gtO2tAz2BpzcZ4s49cZoy6+yVyO3o6l b9j+19gfv9QwLQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepudenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho 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 0E4C33280063; Thu, 29 Oct 2020 05:28:02 -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, Wenzhuo Lu , Beilei Xing , Bernard Iremonger , Matan Azrad , Shahaf Shuler Date: Thu, 29 Oct 2020 10:27:38 +0100 Message-Id: <20201029092751.3837177-4-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 03/15] ethdev: register mbuf field and flags for timestamp 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" During port configure or queue setup, the offload flags DEV_RX_OFFLOAD_TIMESTAMP and DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP trigger the registration of the related mbuf field and flags. Previously, the Tx timestamp field and flag were registered in testpmd, as described in mlx5 guide. For the general usage of Rx and Tx timestamps, managing registrations inside ethdev is simpler and properly documented. Signed-off-by: Thomas Monjalon Reviewed-by: Andrew Rybchenko --- app/test-pmd/config.c | 38 ------------------ doc/guides/nics/mlx5.rst | 5 +-- lib/librte_ethdev/rte_ethdev.c | 70 ++++++++++++++++++++++++++++++++++ lib/librte_ethdev/rte_ethdev.h | 9 ++++- lib/librte_mbuf/rte_mbuf_dyn.h | 1 + 5 files changed, 81 insertions(+), 42 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/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index b12bb3854d..7c9aadb461 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -1232,6 +1233,59 @@ eth_dev_check_lro_pkt_size(uint16_t port_id, uint32_t config_size, return ret; } +static inline int +eth_dev_timestamp_mbuf_register(uint64_t rx_offloads, uint64_t tx_offloads) +{ + static const struct rte_mbuf_dynfield field_desc = { + .name = RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, + .size = sizeof(rte_mbuf_timestamp_t), + .align = __alignof__(rte_mbuf_timestamp_t), + }; + static const struct rte_mbuf_dynflag rx_flag_desc = { + .name = RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, + }; + static const struct rte_mbuf_dynflag tx_flag_desc = { + .name = RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, + }; + static bool done_rx, done_tx; + bool todo_rx, todo_tx; + int offset; + + todo_rx = (rx_offloads & DEV_RX_OFFLOAD_TIMESTAMP) != 0 + && !done_rx; + todo_tx = (tx_offloads & DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP) != 0 + && !done_tx; + + if (todo_rx || todo_tx) { + offset = rte_mbuf_dynfield_register(&field_desc); + if (offset < 0) { + RTE_ETHDEV_LOG(ERR, + "Failed to register mbuf field for timestamp\n"); + return -rte_errno; + } + } + if (todo_rx) { + offset = rte_mbuf_dynflag_register(&rx_flag_desc); + if (offset < 0) { + RTE_ETHDEV_LOG(ERR, + "Failed to register mbuf flag for Rx timestamp\n"); + return -rte_errno; + } + done_rx = true; + } + if (todo_tx) { + offset = rte_mbuf_dynflag_register(&tx_flag_desc); + if (offset < 0) { + RTE_ETHDEV_LOG(ERR, + "Failed to register mbuf flag for Tx timestamp\n"); + return -rte_errno; + } + done_tx = true; + } + + return 0; +} + /* * Validate offloads that are requested through rte_eth_dev_configure against * the offloads successfully set by the ethernet device. @@ -1481,6 +1535,12 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q, goto rollback; } + /* Register mbuf field and flags for timestamp offloads if enabled. */ + ret = eth_dev_timestamp_mbuf_register(dev_conf->rxmode.offloads, + dev_conf->txmode.offloads); + if (ret != 0) + goto rollback; + /* * Setup new number of RX/TX queues and reconfigure device. */ @@ -2088,6 +2148,11 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, return ret; } + /* Register mbuf field and flag for Rx timestamp offload if enabled. */ + ret = eth_dev_timestamp_mbuf_register(local_conf.offloads, 0); + if (ret != 0) + return ret; + ret = (*dev->dev_ops->rx_queue_setup)(dev, rx_queue_id, nb_rx_desc, socket_id, &local_conf, mp); if (!ret) { @@ -2268,6 +2333,11 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id, return -EINVAL; } + /* Register mbuf field and flag for Tx timestamp offload if enabled. */ + ret = eth_dev_timestamp_mbuf_register(0, local_conf.offloads); + if (ret != 0) + return ret; + rte_ethdev_trace_txq_setup(port_id, tx_queue_id, nb_tx_desc, tx_conf); return eth_err(port_id, (*dev->dev_ops->tx_queue_setup)(dev, tx_queue_id, nb_tx_desc, socket_id, &local_conf)); diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index ba997f16ce..3be0050592 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1344,6 +1344,9 @@ struct rte_eth_conf { #define DEV_RX_OFFLOAD_VLAN_EXTEND 0x00000400 #define DEV_RX_OFFLOAD_JUMBO_FRAME 0x00000800 #define DEV_RX_OFFLOAD_SCATTER 0x00002000 +/** + * The mbuf field and flag are registered when the offload is configured. + */ #define DEV_RX_OFFLOAD_TIMESTAMP 0x00004000 #define DEV_RX_OFFLOAD_SECURITY 0x00008000 #define DEV_RX_OFFLOAD_KEEP_CRC 0x00010000 @@ -1408,7 +1411,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 diff --git a/lib/librte_mbuf/rte_mbuf_dyn.h b/lib/librte_mbuf/rte_mbuf_dyn.h index 5fb85c0610..d4d8f66f77 100644 --- a/lib/librte_mbuf/rte_mbuf_dyn.h +++ b/lib/librte_mbuf/rte_mbuf_dyn.h @@ -260,6 +260,7 @@ void rte_mbuf_dyn_dump(FILE *out); * used by PMD to schedule packet sending. */ #define RTE_MBUF_DYNFIELD_TIMESTAMP_NAME "rte_dynfield_timestamp" +typedef uint64_t rte_mbuf_timestamp_t; /** * Indicate that the timestamp field in the mbuf was filled by the driver. From patchwork Thu Oct 29 09:27:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82716 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 1DF2EA04DD; Thu, 29 Oct 2020 10:29:20 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0D0CBC8C8; Thu, 29 Oct 2020 10:28:14 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id 783C4C884 for ; Thu, 29 Oct 2020 10:28:09 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 19AFD71B; Thu, 29 Oct 2020 05:28:07 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:07 -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=/6iLpZ0x9cJlH 39sGii0tG4BQkFef1nNSvqD5l2mg5k=; b=Bmw5VUemX952tSq3MQUHrr3gEuzgB Y5UwXy/FFlLLI8VKI20oY3nak5kbwsxkL/33Tp2wxY6w5KVc8VmdWiOXWG5HGbrh 1fgThJZ8ocpQaht50bBiQlzrMmaAT1xb+nuqLreWuDpfVeqQZWJZBHfnI7aIJ3Oa yMz7Kwk8/rnHQoUayEudbo4ZTjvqD7TJ2bkMQVBLB5VgPwrH6KTcXPvTt86iyuIC Gz9AtfbcdcFop4AWbLDOULfRoSahjGMBmsBBX79od4r1/y1oYJpOsWTKHdeb2o36 u7itZSgc4zKI0nBctMH7Hol0akuOsHB2v/RbeArhA5anrbYpibhhBDueA== 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=/6iLpZ0x9cJlH39sGii0tG4BQkFef1nNSvqD5l2mg5k=; b=UDwT4kLf bEtj9Ap2y6FgK3tLIs8y0nGcfw1y0yLqHCnde7LNg5LS+1ym5E7Et4LjYIeXH+gf L1socnXchxxer5sXMuMhmDXnpfp8bguBBrI/Ph9aBghBKShfYtl3j3YjX1aNirLF uG9ESJFB6fTUINOWC+spY4Q1Y19U1yvImEc/vFGzzIrDyEJjIM59rh/dgqBoiOnS D5mE6i8PN4CxUQuA/mGnD6723T1R/8zgbI2/VO8gUN874gFnuJT+IPvqmO+0Exbz 4uCvaGqkX+u8WT76/ZTPTuoiPDV246XQa5q1+qAnEmoTkcBnDtLP8PA0LSNoe2Hq UD02n30grw5jkg== 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 938CB328005D; Thu, 29 Oct 2020 05:28:05 -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, Reshma Pattan Date: Thu, 29 Oct 2020 10:27:39 +0100 Message-Id: <20201029092751.3837177-5-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 04/15] latency: 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 mbuf flag is also replaced with the dynamic one. Signed-off-by: Thomas Monjalon --- lib/librte_latencystats/rte_latencystats.c | 48 +++++++++++++++++++--- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/lib/librte_latencystats/rte_latencystats.c b/lib/librte_latencystats/rte_latencystats.c index ba2fff3bcb..a21f6239d9 100644 --- a/lib/librte_latencystats/rte_latencystats.c +++ b/lib/librte_latencystats/rte_latencystats.c @@ -8,7 +8,9 @@ #include #include +#include #include +#include #include #include #include @@ -31,6 +33,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 +140,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 +173,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); @@ -204,6 +216,14 @@ int rte_latencystats_init(uint64_t app_samp_intvl, rte_latency_stats_flow_type_fn user_cb) { + static const struct rte_mbuf_dynfield timestamp_dynfield_desc = { + .name = RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, + .size = sizeof(rte_mbuf_timestamp_t), + .align = __alignof__(rte_mbuf_timestamp_t), + }; + static const struct rte_mbuf_dynflag timestamp_dynflag_desc = { + .name = RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, + }; unsigned int i; uint16_t pid; uint16_t qid; @@ -211,6 +231,7 @@ rte_latencystats_init(uint64_t app_samp_intvl, const char *ptr_strings[NUM_LATENCY_STATS] = {0}; const struct rte_memzone *mz = NULL; const unsigned int flags = 0; + int timestamp_dynflag_offset; int ret; if (rte_memzone_lookup(MZ_RTE_LATENCY_STATS)) @@ -241,6 +262,23 @@ rte_latencystats_init(uint64_t app_samp_intvl, return -1; } + /* Register mbuf field and flag for Rx timestamp */ + timestamp_dynfield_offset = + rte_mbuf_dynfield_register(×tamp_dynfield_desc); + if (timestamp_dynfield_offset < 0) { + RTE_LOG(ERR, LATENCY_STATS, + "Cannot register mbuf field for timestamp\n"); + return -rte_errno; + } + timestamp_dynflag_offset = + rte_mbuf_dynflag_register(×tamp_dynflag_desc); + if (timestamp_dynflag_offset < 0) { + RTE_LOG(ERR, LATENCY_STATS, + "Cannot register mbuf field for timestamp\n"); + return -rte_errno; + } + timestamp_dynflag = RTE_BIT64(timestamp_dynflag_offset); + /** Register Rx/Tx callbacks */ RTE_ETH_FOREACH_DEV(pid) { struct rte_eth_dev_info dev_info; 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 */ From patchwork Thu Oct 29 09:27:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82718 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 8BE6EA04DD; Thu, 29 Oct 2020 10:30:02 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 59784C8F2; Thu, 29 Oct 2020 10:28:19 +0100 (CET) Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) by dpdk.org (Postfix) with ESMTP id 5799CC8B6 for ; Thu, 29 Oct 2020 10:28:13 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id B5AB15C013E; Thu, 29 Oct 2020 05:28:11 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:11 -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=VopuAHQpDKGDL rnULTcPk7NtBvcwX/S1QrLaKk0hbDk=; b=U7SymSdGIF35qy4w3zVdZIjLMp3Bh uOfjFYJkfg4IpDlhU+6o/+RWKR1nOKILo6l5cWLc8Q/0H4jk+Qfg4uC38iBcSAJM h3Hpz1nSzM/81FTI2YCMEPoZKDKIQcwZoqGtJObdDOpnS48fRKFZptjbd+PYxk+N 4LFiDtzWIhcKx1zAsPOGDh85f2eXxTzFi1Lr9gO1kVhnoZTFNY0fgOHSj6zjUnHY aCdPNnpSqy6ez2nLuuBHgMY4XbKbC+kQOZoepl84mSAqE5QKj2i2m4DJQT8aBrPk hhtiZv5M6g+NYCd8NaSQK6HBjt/BeG383iu8TqAymH2qapzaV04QjcNDQ== 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=VopuAHQpDKGDLrnULTcPk7NtBvcwX/S1QrLaKk0hbDk=; b=CKWiKITF x405+mcleROeFRAgpaHRwburTnFc+opV6LHAUsZaspBxTrkYL1C3/07FyNHKnPoS 8io+sxA5PM4Xh8SVzmy8LpPKbOvdWBXxGKx3q9o4dGOA6fzANnedbUI29Ny23sqQ 44r7QrD6JaESk+K6f6LF6XrB81LX2Bvl6tATe3Gi7j6v/3dIwd5lqezwXDXs1CSl RLcZzPa4GWM033Zj4wERDraF4Da3DklBJqatcBG8LGjgp+Wfthw2BaPE6NB1/RBz 3wkW7hBIWKvrQuMjrADDrL6BnxA9s5O959C8L4Apr+CJ5/nJxPD0BrJdsXQ/+cEw UfHIj0xXczmX+w== 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 691E83280063; Thu, 29 Oct 2020 05:28:10 -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, Hemant Agrawal , Sachin Saxena Date: Thu, 29 Oct 2020 10:27:41 +0100 Message-Id: <20201029092751.3837177-7-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 06/15] net/dpaa2: 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 mbuf flag is also replaced. Signed-off-by: Thomas Monjalon --- drivers/net/dpaa2/dpaa2_ethdev.c | 20 ++++++++++++++++++++ drivers/net/dpaa2/dpaa2_ethdev.h | 2 ++ drivers/net/dpaa2/dpaa2_rxtx.c | 25 ++++++++++++++++++------- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 04e60c56f2..ff368174bd 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -65,6 +66,8 @@ static uint64_t dev_tx_offloads_nodis = /* enable timestamp in mbuf */ bool dpaa2_enable_ts[RTE_MAX_ETHPORTS]; +uint64_t dpaa2_timestamp_rx_dynflag; +int dpaa2_timestamp_dynfield_offset = -1; struct rte_dpaa2_xstats_name_off { char name[RTE_ETH_XSTATS_NAME_SIZE]; @@ -505,6 +508,7 @@ dpaa2_eth_dev_configure(struct rte_eth_dev *dev) struct rte_eth_conf *eth_conf = &dev->data->dev_conf; uint64_t rx_offloads = eth_conf->rxmode.offloads; uint64_t tx_offloads = eth_conf->txmode.offloads; + int timestamp_rx_dynflag_offset; int rx_l3_csum_offload = false; int rx_l4_csum_offload = false; int tx_l3_csum_offload = false; @@ -587,7 +591,23 @@ dpaa2_eth_dev_configure(struct rte_eth_dev *dev) #if !defined(RTE_LIBRTE_IEEE1588) if (rx_offloads & DEV_RX_OFFLOAD_TIMESTAMP) #endif + { + dpaa2_timestamp_dynfield_offset = rte_mbuf_dynfield_lookup( + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); + if (dpaa2_timestamp_dynfield_offset < 0) { + DPAA2_PMD_ERR("Error 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) { + DPAA2_PMD_ERR("Error to lookup Rx timestamp flag"); + return -rte_errno; + } + dpaa2_timestamp_rx_dynflag = + RTE_BIT64(timestamp_rx_dynflag_offset); dpaa2_enable_ts[dev->data->port_id] = true; + } if (tx_offloads & DEV_TX_OFFLOAD_IPV4_CKSUM) tx_l3_csum_offload = true; diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h index 94cf253827..8d82f74684 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.h +++ b/drivers/net/dpaa2/dpaa2_ethdev.h @@ -92,6 +92,8 @@ /* enable timestamp in mbuf*/ extern bool dpaa2_enable_ts[]; +extern uint64_t dpaa2_timestamp_rx_dynflag; +extern int dpaa2_timestamp_dynfield_offset; #define DPAA2_QOS_TABLE_RECONFIGURE 1 #define DPAA2_FS_TABLE_RECONFIGURE 2 diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index 4dd1d5f578..cef70bfabe 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -31,6 +31,13 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf, static void enable_tx_tstamp(struct qbman_fd *fd) __rte_unused; +static inline rte_mbuf_timestamp_t * +dpaa2_timestamp_dynfield(struct rte_mbuf *mbuf) +{ + return RTE_MBUF_DYNFIELD(mbuf, + dpaa2_timestamp_dynfield_offset, rte_mbuf_timestamp_t *); +} + #define DPAA2_MBUF_TO_CONTIG_FD(_mbuf, _fd, _bpid) do { \ DPAA2_SET_FD_ADDR(_fd, DPAA2_MBUF_VADDR_TO_IOVA(_mbuf)); \ DPAA2_SET_FD_LEN(_fd, _mbuf->data_len); \ @@ -109,9 +116,10 @@ dpaa2_dev_rx_parse_new(struct rte_mbuf *m, const struct qbman_fd *fd, m->ol_flags |= PKT_RX_RSS_HASH; if (dpaa2_enable_ts[m->port]) { - m->timestamp = annotation->word2; - m->ol_flags |= PKT_RX_TIMESTAMP; - DPAA2_PMD_DP_DEBUG("pkt timestamp:0x%" PRIx64 "", m->timestamp); + *dpaa2_timestamp_dynfield(m) = annotation->word2; + m->ol_flags |= dpaa2_timestamp_rx_dynflag; + DPAA2_PMD_DP_DEBUG("pkt timestamp:0x%" PRIx64 "", + *dpaa2_timestamp_dynfield(m)); } DPAA2_PMD_DP_DEBUG("HW frc = 0x%x\t packet type =0x%x " @@ -223,9 +231,12 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_annot_addr) else if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE)) mbuf->ol_flags |= PKT_RX_L4_CKSUM_BAD; - mbuf->ol_flags |= PKT_RX_TIMESTAMP; - mbuf->timestamp = annotation->word2; - DPAA2_PMD_DP_DEBUG("pkt timestamp: 0x%" PRIx64 "", mbuf->timestamp); + if (dpaa2_enable_ts[mbuf->port]) { + *dpaa2_timestamp_dynfield(mbuf) = annotation->word2; + mbuf->ol_flags |= dpaa2_timestamp_rx_dynflag; + DPAA2_PMD_DP_DEBUG("pkt timestamp: 0x%" PRIx64 "", + *dpaa2_timestamp_dynfield(mbuf)); + } /* Check detailed parsing requirement */ if (annotation->word3 & 0x7FFFFC3FFFF) @@ -629,7 +640,7 @@ dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) else bufs[num_rx] = eth_fd_to_mbuf(fd, eth_data->port_id); #if defined(RTE_LIBRTE_IEEE1588) - priv->rx_timestamp = bufs[num_rx]->timestamp; + priv->rx_timestamp = *dpaa2_timestamp_dynfield(bufs[num_rx]); #endif if (eth_data->dev_conf.rxmode.offloads & From patchwork Thu Oct 29 09:27:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82719 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 0E4F3A04DD; Thu, 29 Oct 2020 10:30:31 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DF447C918; Thu, 29 Oct 2020 10:28:24 +0100 (CET) Received: from new3-smtp.messagingengine.com (new3-smtp.messagingengine.com [66.111.4.229]) by dpdk.org (Postfix) with ESMTP id E1F43C8DA; Thu, 29 Oct 2020 10:28:15 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.nyi.internal (Postfix) with ESMTP id 4996B5803C9; Thu, 29 Oct 2020 05:28:14 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:14 -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=/Y5/EqEdDQ0Db PZpnSB+FUPG32EN2onxRQIoXMDga+A=; b=FqajuA+TJWra686rTLNdq1Vc9NwgZ CsGdb7n2SCOdoOuX0ugDCwhHiiVoTClGoMwhLD5LCzkOeLEXH9IhlzBBp+d+eF4K ig5kVT3yv/pwoOOVQTu6cC7lrjbD+DZirBbIrev/PMwVLr0HwtK5WI4GZ377m53r fBSQQp1kel278e5f/ro5VBwLKT6TGiAjPQbe818iHHGm7Kv0TYRkNAmW+eVbrfKi gWdgi8eIlxH2aLN347qGpmkKmrYROKw4uh+qjl8BB2KpZWtrFXDLbC8fsN0YzMAE 0z+LPHTBn4rQOzFBwAZBcK+FPW3jVGCIZaFmgFTUz8wd/RYqblsV6wKOA== 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=/Y5/EqEdDQ0DbPZpnSB+FUPG32EN2onxRQIoXMDga+A=; b=YWKuPE6E SxWViwd62dgRrDfx+RQLO9qlJeu7DfK6hwjbmuR0KErtCtTlEg0100c3odeCjkvr MFyE0MGPFVTruXBx1bLHretNr527pvNxZeE5uP0YhpdW7UeJFKpTZLxlDBe+0xsd wFRO/f3n5kHcmMYU+laQNM+hBZMPa2Ly8/cQhggQYtaYnfewUc4dqsv/UsnbjDFz 4ucPUsfDa0Qe+PYIKgsc/7n5U6cZVqOxwKiKCUbwyhrs9eS/P+04uikTKy6n0YGZ HS+QGw/2zsGeI5pcm+pgequMiw8WAm+o+RFkUu0Zb132LcMRW5DbQ1lin97lqFb8 XPM0dRGpEF4qUw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepieenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho 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 D86A1328005E; Thu, 29 Oct 2020 05:28:12 -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, stable@dpdk.org, Matan Azrad , Shahaf Shuler , Ori Kam Date: Thu, 29 Oct 2020 10:27:42 +0100 Message-Id: <20201029092751.3837177-8-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 07/15] net/mlx5: fix dynamic mbuf offset lookup check 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 functions rte_mbuf_dynfield_lookup() and rte_mbuf_dynflag_lookup() can return an offset starting with 0 or a negative error code. In reality the first offsets are probably reserved forever, but for the sake of strict API compliance, the checks which considered 0 as an error are fixed. Fixes: efa79e68c8cd ("net/mlx5: support fine grain dynamic flag") Fixes: 3172c471b86f ("net/mlx5: prepare Tx queue structures to support timestamp") Fixes: 0febfcce3693 ("net/mlx5: prepare Tx to support scheduling") Cc: stable@dpdk.org Signed-off-by: Thomas Monjalon --- drivers/net/mlx5/mlx5_rxtx.c | 4 ++-- drivers/net/mlx5/mlx5_trigger.c | 2 +- drivers/net/mlx5/mlx5_txq.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index b530ff421f..e86468b67a 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -5661,9 +5661,9 @@ mlx5_select_tx_function(struct rte_eth_dev *dev) } if (tx_offloads & DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP && rte_mbuf_dynflag_lookup - (RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, NULL) > 0 && + (RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, NULL) >= 0 && rte_mbuf_dynfield_lookup - (RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL) > 0) { + (RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL) >= 0) { /* Offload configured, dynamic entities registered. */ olx |= MLX5_TXOFF_CONFIG_TXPP; } diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index 7735f022a3..917b433c4a 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -302,7 +302,7 @@ mlx5_dev_start(struct rte_eth_dev *dev) DRV_LOG(DEBUG, "port %u starting device", dev->data->port_id); fine_inline = rte_mbuf_dynflag_lookup (RTE_PMD_MLX5_FINE_GRANULARITY_INLINE, NULL); - if (fine_inline > 0) + if (fine_inline >= 0) rte_net_mlx5_dynf_inline_mask = 1UL << fine_inline; else rte_net_mlx5_dynf_inline_mask = 0; diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index af84f5f72b..8ed2bcff7b 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -1305,7 +1305,7 @@ mlx5_txq_dynf_timestamp_set(struct rte_eth_dev *dev) (RTE_MBUF_DYNFLAG_TX_TIMESTAMP_NAME, NULL); off = rte_mbuf_dynfield_lookup (RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); - if (nbit > 0 && off >= 0 && sh->txpp.refcnt) + if (nbit >= 0 && off >= 0 && sh->txpp.refcnt) mask = 1ULL << nbit; for (i = 0; i != priv->txqs_n; ++i) { data = (*priv->txqs)[i]; From patchwork Thu Oct 29 09:27:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82720 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 D775DA04DD; Thu, 29 Oct 2020 10:30:49 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 67260C92E; Thu, 29 Oct 2020 10:28:26 +0100 (CET) Received: from new3-smtp.messagingengine.com (new3-smtp.messagingengine.com [66.111.4.229]) by dpdk.org (Postfix) with ESMTP id CFDAFC8FA for ; Thu, 29 Oct 2020 10:28:18 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.nyi.internal (Postfix) with ESMTP id 808025803F7; Thu, 29 Oct 2020 05:28:17 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:17 -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=A4wHXNsm5WX49 SFqU7wCXBLM3kuKPCm8Rw1pf2MHpnc=; b=NCsIcp9V8eb1MY1qtAfVzYDQuL5S2 YWlSW6Iqtc2Fsf2wLu+zb7i3qlypwQLEPrIr24ediN+zZngcMbBKYYL0KNl+Fm/q 4v788HBHF62FGmscW9aRqRhtZLo+w2WMoZNsMAH4OAvKXF2iFXVlLCakAP/eu7M7 Uh3rzGs4mFAsCSAIDpDdvfww7qCEo3Qf08kKz2FUmgqEbNGY6Zhe0oVGasqh3vJo IPJ6GUMDjK5/K0uwoly0ZiIu6AECvC4rqsAngJ632VJ80WVYrnumcnE4RUgS28sB pdOr9EKSNEc8YYz/B1LfdgSTYeABe8iOUHiZKmYN8YKOwkDpZ0T8hb9uA== 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=A4wHXNsm5WX49SFqU7wCXBLM3kuKPCm8Rw1pf2MHpnc=; b=M/gMwxnN H9bvjWcSIitjTpoNoBdvSfXxFQlUTmlEkYUggTmyvtJTRmReFfVwor53WEr5VL7l C4v/0z5zwjdlCUDE60eA6qM12A/zth3MxutR8/vhwrAajT0o1OopP65t5bYGzuzr p9HPqhxoGF0kSNtbLd9frDamMcLWieuzwR6hu92o+xT/hjaAImhhV/hqmgzctK8k APHdxA+cIwMEl8W6FZ6H5lED3pMzRB2tJ8hGmFAbnNilkK+iPjqmk+QvqywIqiqq QMx4DYj6IEvMvvp/Kg/JyWTq30lXfyeHrsprCKA1qkr0O2Fx05l4A/caCXBKM441 MkW5tSHA4NLi2w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepieenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho 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 8C2A8328005E; Thu, 29 Oct 2020 05:28:15 -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, Matan Azrad , Shahaf Shuler , David Christensen , Ruifeng Wang , Konstantin Ananyev Date: Thu, 29 Oct 2020 10:27:43 +0100 Message-Id: <20201029092751.3837177-9-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 08/15] net/mlx5: 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 mbuf flag is also replaced. Signed-off-by: Thomas Monjalon --- drivers/net/mlx5/mlx5_rxq.c | 36 ++++++++++++++++++++ drivers/net/mlx5/mlx5_rxtx.c | 4 +-- drivers/net/mlx5/mlx5_rxtx.h | 19 +++++++++++ drivers/net/mlx5/mlx5_rxtx_vec_altivec.h | 41 +++++++++++----------- drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 43 ++++++++++++------------ drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 35 +++++++++---------- 6 files changed, 118 insertions(+), 60 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index f1d8373079..877aa24a18 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -1310,6 +1310,39 @@ mlx5_max_lro_msg_size_adjust(struct rte_eth_dev *dev, uint16_t idx, priv->max_lro_msg_size * MLX5_LRO_SEG_CHUNK_SIZE); } +/** + * Lookup mbuf field and flag for Rx timestamp if offload requested. + * + * @param rxq_data + * Datapath struct where field offset and flag mask are stored. + * + * @return + * 0 on success or offload disabled, negative errno otherwise. + */ +static int +mlx5_rx_timestamp_setup(struct mlx5_rxq_data *rxq_data) +{ + int timestamp_rx_dynflag_offset; + + rxq_data->timestamp_rx_flag = 0; + if (rxq_data->hw_timestamp == 0) + return 0; + rxq_data->timestamp_offset = rte_mbuf_dynfield_lookup( + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); + if (rxq_data->timestamp_offset < 0) { + DRV_LOG(ERR, "Cannot lookup timestamp field\n"); + return -rte_errno; + } + timestamp_rx_dynflag_offset = rte_mbuf_dynflag_lookup( + RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, NULL); + if (timestamp_rx_dynflag_offset < 0) { + DRV_LOG(ERR, "Cannot lookup Rx timestamp flag\n"); + return -rte_errno; + } + rxq_data->timestamp_rx_flag = RTE_BIT64(timestamp_rx_dynflag_offset); + return 0; +} + /** * Create a DPDK Rx queue. * @@ -1492,7 +1525,10 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, mlx5_max_lro_msg_size_adjust(dev, idx, max_lro_size); /* Toggle RX checksum offload if hardware supports it. */ tmpl->rxq.csum = !!(offloads & DEV_RX_OFFLOAD_CHECKSUM); + /* Configure Rx timestamp. */ tmpl->rxq.hw_timestamp = !!(offloads & DEV_RX_OFFLOAD_TIMESTAMP); + if (mlx5_rx_timestamp_setup(&tmpl->rxq) != 0) + goto error; /* Configure VLAN stripping. */ tmpl->rxq.vlan_strip = !!(offloads & DEV_RX_OFFLOAD_VLAN_STRIP); /* By default, FCS (CRC) is stripped by hardware. */ diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index e86468b67a..b577aab00b 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -1287,8 +1287,8 @@ rxq_cq_to_mbuf(struct mlx5_rxq_data *rxq, struct rte_mbuf *pkt, if (rxq->rt_timestamp) ts = mlx5_txpp_convert_rx_ts(rxq->sh, ts); - pkt->timestamp = ts; - pkt->ol_flags |= PKT_RX_TIMESTAMP; + mlx5_timestamp_set(pkt, rxq->timestamp_offset, ts); + pkt->ol_flags |= rxq->timestamp_rx_flag; } } diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h index 674296ee98..e9eca36b40 100644 --- a/drivers/net/mlx5/mlx5_rxtx.h +++ b/drivers/net/mlx5/mlx5_rxtx.h @@ -151,6 +151,8 @@ struct mlx5_rxq_data { /* CQ (UAR) access lock required for 32bit implementations */ #endif uint32_t tunnel; /* Tunnel information. */ + int timestamp_offset; /* Dynamic mbuf field for timestamp. */ + uint64_t timestamp_rx_flag; /* Dynamic mbuf flag for timestamp. */ uint64_t flow_meta_mask; int32_t flow_meta_offset; } __rte_cache_aligned; @@ -681,4 +683,21 @@ mlx5_txpp_convert_tx_ts(struct mlx5_dev_ctx_shared *sh, uint64_t mts) return ci; } +/** + * Set timestamp in mbuf dynamic field. + * + * @param mbuf + * Structure to write into. + * @param offset + * Dynamic field offset in mbuf structure. + * @param timestamp + * Value to write. + */ +static __rte_always_inline void +mlx5_timestamp_set(struct rte_mbuf *mbuf, int offset, + rte_mbuf_timestamp_t timestamp) +{ + *RTE_MBUF_DYNFIELD(mbuf, offset, rte_mbuf_timestamp_t *) = timestamp; +} + #endif /* RTE_PMD_MLX5_RXTX_H_ */ diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h index 6bf0c9b540..171d7bb0f8 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_altivec.h @@ -330,13 +330,13 @@ rxq_cq_to_ptype_oflags_v(struct mlx5_rxq_data *rxq, vector unsigned char ol_flags = (vector unsigned char) (vector unsigned int){ rxq->rss_hash * PKT_RX_RSS_HASH | - rxq->hw_timestamp * PKT_RX_TIMESTAMP, + rxq->hw_timestamp * rxq->timestamp_rx_flag, rxq->rss_hash * PKT_RX_RSS_HASH | - rxq->hw_timestamp * PKT_RX_TIMESTAMP, + rxq->hw_timestamp * rxq->timestamp_rx_flag, rxq->rss_hash * PKT_RX_RSS_HASH | - rxq->hw_timestamp * PKT_RX_TIMESTAMP, + rxq->hw_timestamp * rxq->timestamp_rx_flag, rxq->rss_hash * PKT_RX_RSS_HASH | - rxq->hw_timestamp * PKT_RX_TIMESTAMP}; + rxq->hw_timestamp * rxq->timestamp_rx_flag}; vector unsigned char cv_flags; const vector unsigned char zero = (vector unsigned char){0}; const vector unsigned char ptype_mask = @@ -1025,31 +1025,32 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n, /* D.5 fill in mbuf - rearm_data and packet_type. */ rxq_cq_to_ptype_oflags_v(rxq, cqes, opcode, &pkts[pos]); if (rxq->hw_timestamp) { + int offset = rxq->timestamp_offset; if (rxq->rt_timestamp) { struct mlx5_dev_ctx_shared *sh = rxq->sh; uint64_t ts; ts = rte_be_to_cpu_64(cq[pos].timestamp); - pkts[pos]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64(cq[pos + p1].timestamp); - pkts[pos + 1]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos + 1], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64(cq[pos + p2].timestamp); - pkts[pos + 2]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos + 2], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64(cq[pos + p3].timestamp); - pkts[pos + 3]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos + 3], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); } else { - pkts[pos]->timestamp = rte_be_to_cpu_64 - (cq[pos].timestamp); - pkts[pos + 1]->timestamp = rte_be_to_cpu_64 - (cq[pos + p1].timestamp); - pkts[pos + 2]->timestamp = rte_be_to_cpu_64 - (cq[pos + p2].timestamp); - pkts[pos + 3]->timestamp = rte_be_to_cpu_64 - (cq[pos + p3].timestamp); + mlx5_timestamp_set(pkts[pos], offset, + rte_be_to_cpu_64(cq[pos].timestamp)); + mlx5_timestamp_set(pkts[pos + 1], offset, + rte_be_to_cpu_64(cq[pos + p1].timestamp)); + mlx5_timestamp_set(pkts[pos + 2], offset, + rte_be_to_cpu_64(cq[pos + p2].timestamp)); + mlx5_timestamp_set(pkts[pos + 3], offset, + rte_be_to_cpu_64(cq[pos + p3].timestamp)); } } if (rxq->dynf_meta) { diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h index d122dad4fe..436b247ade 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h @@ -271,7 +271,7 @@ rxq_cq_to_ptype_oflags_v(struct mlx5_rxq_data *rxq, uint32x4_t pinfo, cv_flags; uint32x4_t ol_flags = vdupq_n_u32(rxq->rss_hash * PKT_RX_RSS_HASH | - rxq->hw_timestamp * PKT_RX_TIMESTAMP); + rxq->hw_timestamp * rxq->timestamp_rx_flag); const uint32x4_t ptype_ol_mask = { 0x106, 0x106, 0x106, 0x106 }; const uint8x16_t cv_flag_sel = { 0, @@ -697,6 +697,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n, rxq_cq_to_ptype_oflags_v(rxq, ptype_info, flow_tag, opcode, &elts[pos]); if (rxq->hw_timestamp) { + int offset = rxq->timestamp_offset; if (rxq->rt_timestamp) { struct mlx5_dev_ctx_shared *sh = rxq->sh; uint64_t ts; @@ -704,36 +705,36 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n, ts = rte_be_to_cpu_64 (container_of(p0, struct mlx5_cqe, pkt_info)->timestamp); - elts[pos]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(elts[pos], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64 (container_of(p1, struct mlx5_cqe, pkt_info)->timestamp); - elts[pos + 1]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(elts[pos + 1], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64 (container_of(p2, struct mlx5_cqe, pkt_info)->timestamp); - elts[pos + 2]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(elts[pos + 2], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64 (container_of(p3, struct mlx5_cqe, pkt_info)->timestamp); - elts[pos + 3]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(elts[pos + 3], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); } else { - elts[pos]->timestamp = rte_be_to_cpu_64 - (container_of(p0, struct mlx5_cqe, - pkt_info)->timestamp); - elts[pos + 1]->timestamp = rte_be_to_cpu_64 - (container_of(p1, struct mlx5_cqe, - pkt_info)->timestamp); - elts[pos + 2]->timestamp = rte_be_to_cpu_64 - (container_of(p2, struct mlx5_cqe, - pkt_info)->timestamp); - elts[pos + 3]->timestamp = rte_be_to_cpu_64 - (container_of(p3, struct mlx5_cqe, - pkt_info)->timestamp); + mlx5_timestamp_set(elts[pos], offset, + rte_be_to_cpu_64(container_of(p0, + struct mlx5_cqe, pkt_info)->timestamp)); + mlx5_timestamp_set(elts[pos + 1], offset, + rte_be_to_cpu_64(container_of(p1, + struct mlx5_cqe, pkt_info)->timestamp)); + mlx5_timestamp_set(elts[pos + 2], offset, + rte_be_to_cpu_64(container_of(p2, + struct mlx5_cqe, pkt_info)->timestamp)); + mlx5_timestamp_set(elts[pos + 3], offset, + rte_be_to_cpu_64(container_of(p3, + struct mlx5_cqe, pkt_info)->timestamp)); } } if (rxq->dynf_meta) { diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h index 0bbcbeefff..ae4439efc7 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h @@ -251,7 +251,7 @@ rxq_cq_to_ptype_oflags_v(struct mlx5_rxq_data *rxq, __m128i cqes[4], __m128i pinfo0, pinfo1; __m128i pinfo, ptype; __m128i ol_flags = _mm_set1_epi32(rxq->rss_hash * PKT_RX_RSS_HASH | - rxq->hw_timestamp * PKT_RX_TIMESTAMP); + rxq->hw_timestamp * rxq->timestamp_rx_flag); __m128i cv_flags; const __m128i zero = _mm_setzero_si128(); const __m128i ptype_mask = @@ -656,31 +656,32 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n, /* D.5 fill in mbuf - rearm_data and packet_type. */ rxq_cq_to_ptype_oflags_v(rxq, cqes, opcode, &pkts[pos]); if (rxq->hw_timestamp) { + int offset = rxq->timestamp_offset; if (rxq->rt_timestamp) { struct mlx5_dev_ctx_shared *sh = rxq->sh; uint64_t ts; ts = rte_be_to_cpu_64(cq[pos].timestamp); - pkts[pos]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64(cq[pos + p1].timestamp); - pkts[pos + 1]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos + 1], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64(cq[pos + p2].timestamp); - pkts[pos + 2]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos + 2], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); ts = rte_be_to_cpu_64(cq[pos + p3].timestamp); - pkts[pos + 3]->timestamp = - mlx5_txpp_convert_rx_ts(sh, ts); + mlx5_timestamp_set(pkts[pos + 3], offset, + mlx5_txpp_convert_rx_ts(sh, ts)); } else { - pkts[pos]->timestamp = rte_be_to_cpu_64 - (cq[pos].timestamp); - pkts[pos + 1]->timestamp = rte_be_to_cpu_64 - (cq[pos + p1].timestamp); - pkts[pos + 2]->timestamp = rte_be_to_cpu_64 - (cq[pos + p2].timestamp); - pkts[pos + 3]->timestamp = rte_be_to_cpu_64 - (cq[pos + p3].timestamp); + mlx5_timestamp_set(pkts[pos], offset, + rte_be_to_cpu_64(cq[pos].timestamp)); + mlx5_timestamp_set(pkts[pos + 1], offset, + rte_be_to_cpu_64(cq[pos + p1].timestamp)); + mlx5_timestamp_set(pkts[pos + 2], offset, + rte_be_to_cpu_64(cq[pos + p2].timestamp)); + mlx5_timestamp_set(pkts[pos + 3], offset, + rte_be_to_cpu_64(cq[pos + p3].timestamp)); } } if (rxq->dynf_meta) { From patchwork Thu Oct 29 09:27:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82721 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 AA75BA04DD; Thu, 29 Oct 2020 10:31:12 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3DB2FC942; Thu, 29 Oct 2020 10:28:28 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id 3533FC904 for ; Thu, 29 Oct 2020 10:28:21 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id DF8E09EF; Thu, 29 Oct 2020 05:28:19 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:20 -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=gBQ3EENVoHp7n Z+5f/s4THoJvHHh3lJew6ghBdkyeM8=; b=vaGLA6ILk0V75KYc33KSC2r/Q/MAE wV10SCK6qG9ftOq8n1+TmQWAea79f0qiL/VYh8oeEwmgr2mrDCh9eI1CotO7M/dL 28hp7WsNbKRDTklaCZNyFqwUuOjaBc1HXydOBySdsp5iLS+9xgPQLBC6klf+z5ny 93KBJxI4oeCUN2w72UzF9iLE++8Z962P6wEIf2tW4M4G4kdxB7Gbp1JqA3ASJKTl 7Q7dpcDEwi0zH7uS5rgP0YIvBJoXUySQcvAFxJUrOJIj/aq/YL7uvU6SaE4u8G9r nYbxEca3tDh3gdAbhvCd5tJl6DgZriqv5IZkoRKP9PN0940MbtpMh9rcw== 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=gBQ3EENVoHp7nZ+5f/s4THoJvHHh3lJew6ghBdkyeM8=; b=OdNQOcLK sq9MTc4lgmt7TMNqJEER2J38oMbeoKmonZ3XRxmN0PkRFc8zYbhkQMxLq/DhHlPO 7/CSSJEqHE/fkjPsWhrjQx842JtADJUbNBYH06LfZxyXBTsI4+HDpcCJ3dHpvt0c 6zNJ4WL5p5GRTZycCdMBfBMbS/pKlLiiIKPg3O2AVvdvQpBQvD0xpH1W7yEczCCC TnZ3xuVFkBOfZPTqBVfXCR137VJhq0ABP/1b9rZzRT97uiwB3djRuhAPtG+WclSP uEBpJ7x4DRLD4IG43PRs7toTT2hRd3Ux6cTiF3v8KD/XVUXgj0/rboeM+C1cOH8d VVH1Hl6VkIwKSA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepkeenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho 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 46EED328005A; Thu, 29 Oct 2020 05:28:18 -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, Martin Spinler Date: Thu, 29 Oct 2020 10:27:44 +0100 Message-Id: <20201029092751.3837177-10-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 09/15] net/nfb: 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 mbuf flag is also replaced. Signed-off-by: Thomas Monjalon --- drivers/net/nfb/nfb_rx.c | 23 ++++++++++++++++++++++- drivers/net/nfb/nfb_rx.h | 18 ++++++++++++++---- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/net/nfb/nfb_rx.c b/drivers/net/nfb/nfb_rx.c index d97179f818..1f90357522 100644 --- a/drivers/net/nfb/nfb_rx.c +++ b/drivers/net/nfb/nfb_rx.c @@ -5,10 +5,14 @@ */ #include +#include #include "nfb_rx.h" #include "nfb.h" +uint64_t nfb_timestamp_rx_dynflag; +int nfb_timestamp_dynfield_offset = -1; + static int timestamp_check_handler(__rte_unused const char *key, const char *value, __rte_unused void *opaque) @@ -23,6 +27,7 @@ timestamp_check_handler(__rte_unused const char *key, static int nfb_check_timestamp(struct rte_devargs *devargs) { + int timestamp_rx_dynflag_offset; struct rte_kvargs *kvlist; if (devargs == NULL) @@ -38,6 +43,7 @@ nfb_check_timestamp(struct rte_devargs *devargs) } /* Timestamps are enabled when there is * key-value pair: enable_timestamp=1 + * TODO: timestamp should be enabled with DEV_RX_OFFLOAD_TIMESTAMP */ if (rte_kvargs_process(kvlist, TIMESTAMP_ARG, timestamp_check_handler, NULL) < 0) { @@ -46,6 +52,21 @@ nfb_check_timestamp(struct rte_devargs *devargs) } rte_kvargs_free(kvlist); + nfb_timestamp_dynfield_offset = rte_mbuf_dynfield_lookup( + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); + if (nfb_timestamp_dynfield_offset < 0) { + RTE_LOG(ERR, PMD, "Cannot lookup timestamp field\n"); + return -rte_errno; + } + timestamp_rx_dynflag_offset = rte_mbuf_dynflag_lookup( + RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, NULL); + if (timestamp_rx_dynflag_offset < 0) { + RTE_LOG(ERR, PMD, "Cannot lookup Rx timestamp flag\n"); + return -rte_errno; + } + nfb_timestamp_rx_dynflag = + RTE_BIT64(timestamp_rx_dynflag_offset); + return 1; } @@ -125,7 +146,7 @@ nfb_eth_rx_queue_setup(struct rte_eth_dev *dev, else rte_free(rxq); - if (nfb_check_timestamp(dev->device->devargs)) + if (nfb_check_timestamp(dev->device->devargs) > 0) rxq->flags |= NFB_TIMESTAMP_FLAG; return ret; diff --git a/drivers/net/nfb/nfb_rx.h b/drivers/net/nfb/nfb_rx.h index cf3899b2fb..e548226e0f 100644 --- a/drivers/net/nfb/nfb_rx.h +++ b/drivers/net/nfb/nfb_rx.h @@ -15,6 +15,16 @@ #define NFB_TIMESTAMP_FLAG (1 << 0) +extern uint64_t nfb_timestamp_rx_dynflag; +extern int nfb_timestamp_dynfield_offset; + +static inline rte_mbuf_timestamp_t * +nfb_timestamp_dynfield(struct rte_mbuf *mbuf) +{ + return RTE_MBUF_DYNFIELD(mbuf, + nfb_timestamp_dynfield_offset, rte_mbuf_timestamp_t *); +} + struct ndp_rx_queue { struct nfb_device *nfb; /* nfb dev structure */ struct ndp_queue *queue; /* rx queue */ @@ -191,15 +201,15 @@ nfb_eth_ndp_rx(void *queue, if (timestamping_enabled) { /* nanoseconds */ - mbuf->timestamp = + *nfb_timestamp_dynfield(mbuf) = rte_le_to_cpu_32(*((uint32_t *) (packets[i].header + 4))); - mbuf->timestamp <<= 32; + *nfb_timestamp_dynfield(mbuf) <<= 32; /* seconds */ - mbuf->timestamp |= + *nfb_timestamp_dynfield(mbuf) |= rte_le_to_cpu_32(*((uint32_t *) (packets[i].header + 8))); - mbuf->ol_flags |= PKT_RX_TIMESTAMP; + mbuf->ol_flags |= nfb_timestamp_rx_dynflag; } bufs[num_rx++] = mbuf; From patchwork Thu Oct 29 09:27:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82722 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 B6DD8A04DD; Thu, 29 Oct 2020 10:31:35 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 70C57C90E; Thu, 29 Oct 2020 10:28:33 +0100 (CET) Received: from wnew3-smtp.messagingengine.com (wnew3-smtp.messagingengine.com [64.147.123.17]) by dpdk.org (Postfix) with ESMTP id 66C9FC92C for ; Thu, 29 Oct 2020 10:28:25 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.west.internal (Postfix) with ESMTP id E33909FE; Thu, 29 Oct 2020 05:28:23 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:24 -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=DOn1l1u2vwZ2n GbtpoeDWnpnD0GrfJWR9l+cCrsJ/Ds=; b=ZHOdn1WoRETRNHm9qJj1jq6zxNJxy zUHMnv1kLI46nXcpmO6HIUGUfJpod1z2nabMAQoOOK6ADJYP18pzkk84oY+m4G7w kajnUT8FeP2vOZVBEyuizD4LZj3YltTRs33O8FYdnKDEiLYGPSbebFEeL9V9IA9Y fPUR6JA0fCesL3hK8MU2KWVYhmcAR/4SW7h4U6Fxjt9EZOOYItTBCXWb6rNyAW5t 1zr5u83ar4YA2sdSSFqfFipe3I5jjmq+fJkG73Sq70tMcdiRbUeS7FVid8/KpVco rdNV2+PB/94onPqoYQRbk2y82gaNlqJEszcdTGCA3czVLf2COO6orOaKQ== 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=DOn1l1u2vwZ2nGbtpoeDWnpnD0GrfJWR9l+cCrsJ/Ds=; b=jv7VC7ui MjzPJfyOpdUGfm55R97fnWwoQ6/wewLgCwG4+hRFpGnBF1346zlWdz99Wcf1Owe3 Ha5VgCvRAl6OauYyaWyAuLtuHd6r9JS4izYO+Y2qMfIwveS1NT7cxhC8s7M2SEDm 0GxQGd2F5YstosVS9CqkFyv8CQhYRk2KOJBZTG5gzgiUEvJrfAzixyh9xRn4mvPq 8Pj0im1/jEMksudFpa+/z7wVOUw6pk5ckpuVP+wqW7eXhjAGl2ArU+SSS18WDxBb YdIjOmcqbhbomkdunHEuvU7Agq56qcXWFpafGZYGa3A/L2UQi9U15Kfk2mz6kkuI ePxnSrHdMRl+CA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepkeenucfrrghrrghmpehmrghilhhfrhhomhepthhhohhmrghssehmohhnjhgrlhho 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 A0471328005D; Thu, 29 Oct 2020 05:28:21 -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, Nithin Dabilpuram , Kiran Kumar K , Ray Kinsella , Neil Horman Date: Thu, 29 Oct 2020 10:27:45 +0100 Message-Id: <20201029092751.3837177-11-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 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" 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 *); +} + static __rte_always_inline void otx2_nix_mbuf_to_tstamp(struct rte_mbuf *mbuf, struct otx2_timesync_info *tstamp, const uint16_t flag, @@ -77,15 +89,16 @@ otx2_nix_mbuf_to_tstamp(struct rte_mbuf *mbuf, /* Reading the rx timestamp inserted by CGX, viz at * starting of the packet data. */ - mbuf->timestamp = rte_be_to_cpu_64(*tstamp_ptr); + *otx2_timestamp_dynfield(mbuf) = rte_be_to_cpu_64(*tstamp_ptr); /* PKT_RX_IEEE1588_TMST flag needs to be set only in case * PTP packets are received. */ if (mbuf->packet_type == RTE_PTYPE_L2_ETHER_TIMESYNC) { - tstamp->rx_tstamp = mbuf->timestamp; + tstamp->rx_tstamp = *otx2_timestamp_dynfield(mbuf); tstamp->rx_ready = 1; mbuf->ol_flags |= PKT_RX_IEEE1588_PTP | - PKT_RX_IEEE1588_TMST | PKT_RX_TIMESTAMP; + PKT_RX_IEEE1588_TMST | + rte_pmd_octeontx2_timestamp_rx_dynflag; } } } diff --git a/drivers/net/octeontx2/version.map b/drivers/net/octeontx2/version.map index 4a76d1d52d..d4f4784bcd 100644 --- a/drivers/net/octeontx2/version.map +++ b/drivers/net/octeontx2/version.map @@ -1,3 +1,10 @@ DPDK_21 { local: *; }; + +INTERNAL { + global: + + rte_pmd_octeontx2_timestamp_dynfield_offset; + rte_pmd_octeontx2_timestamp_rx_dynflag; +}; From patchwork Thu Oct 29 09:27:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82723 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 2E283A04DD; Thu, 29 Oct 2020 10:31:54 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E2C9DC972; Thu, 29 Oct 2020 10:28:34 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id CB49EC93A for ; Thu, 29 Oct 2020 10:28:27 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 86EBA9F3; Thu, 29 Oct 2020 05:28:25 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:26 -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=zreLXuW/VQbq1 G/2toaLV/kjXG9nHBevfn/tWKO5IWE=; b=eujxcvGKzMqkH0XaVc4sJqU5ZFbpr 27FcxJkkm2eGFrZFa0JCTMYlB5ED5hr3eNnK8gi3baAEMDem9Z8yLZxx/8EnpWbd pxSO8pqqj5wnZ02XN3wYItOo3NjlvkD5IXrEo3jU2KlMsdZIfaA5sld4haqPUN+Q 4irWzUaMsIL9IjQoQj7dtKrOH+R6m//It/CFOqM5Xy6bhMD5yKvZXsAqEl40ceA7 ZjVu2dB0KjOxgdqWJi0koe/wHuWeMmRqZJGbCEBwYNtTbV9Gfmw6K0Jl1tVW7qGz w1zw915JInEu7AFy9NMUPqqYoIb3AjmGDALYNg0MWWgDVav3IY53bvZLw== 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=zreLXuW/VQbq1G/2toaLV/kjXG9nHBevfn/tWKO5IWE=; b=Lku3PtUG dcm/eQWMrHTN3ctjDXrhcqwjJOs5EsJBMkfBc8NhDq1GzgPRmdQbhnODWtPpK5Y3 JcvrdHP2DlQfX5JATMGnICClUuGjYvhvkaRwnuFN8XByghp8NHrBq4krBTWOj1ot +IKDJBBEaI4WhqKokNRoooqwezrBTwcrnvcxcC32CrL84UNH1kabVAzi7sU8mSIk BK6PzBnOksy5IZFeHb62Ic8BiA+EHpUB2lyNUeW/ALlJt2KEGOM/dTjknG/chQws vO6GFBjkBKr6tYOCTHNjDrQp1x9gSpNoF9OkDx6F++DqViasl9lVaqUU85IZZkwJ ZgdvDu/AeXqBTA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhephffvufffkffojghfggfgsedtkeertd ertddtnecuhfhrohhmpefvhhhomhgrshcuofhonhhjrghlohhnuceothhhohhmrghssehm ohhnjhgrlhhonhdrnhgvtheqnecuggftrfgrthhtvghrnhepleevudelgeeguddvveeute euheffgeeiudevuddvffdtveetuddthedtieetgfelnecuffhomhgrihhnpehtshdrthhv necukfhppeejjedrudefgedrvddtfedrudekgeenucevlhhushhtvghrufhiiigvpedtne curfgrrhgrmhepmhgrihhlfhhrohhmpehthhhomhgrshesmhhonhhjrghlohhnrdhnvght 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 21283328005E; Thu, 29 Oct 2020 05:28:24 -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 Date: Thu, 29 Oct 2020 10:27:46 +0100 Message-Id: <20201029092751.3837177-12-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 11/15] net/pcap: 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 mbuf flag is also replaced. Signed-off-by: Thomas Monjalon --- drivers/net/pcap/rte_eth_pcap.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 34e82317b1..b4b7a1839b 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -18,6 +18,7 @@ #include +#include #include #include #include @@ -51,6 +52,9 @@ static uint64_t start_cycles; static uint64_t hz; static uint8_t iface_idx; +static uint64_t timestamp_rx_dynflag; +static int timestamp_dynfield_offset = -1; + struct queue_stat { volatile unsigned long pkts; volatile unsigned long bytes; @@ -265,9 +269,11 @@ eth_pcap_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) } mbuf->pkt_len = (uint16_t)header.caplen; - mbuf->timestamp = (uint64_t)header.ts.tv_sec * 1000000 - + header.ts.tv_usec; - mbuf->ol_flags |= PKT_RX_TIMESTAMP; + *RTE_MBUF_DYNFIELD(mbuf, timestamp_dynfield_offset, + rte_mbuf_timestamp_t *) = + (uint64_t)header.ts.tv_sec * 1000000 + + header.ts.tv_usec; + mbuf->ol_flags |= timestamp_rx_dynflag; mbuf->port = pcap_q->port_id; bufs[num_rx] = mbuf; num_rx++; @@ -656,6 +662,23 @@ eth_dev_stop(struct rte_eth_dev *dev) static int eth_dev_configure(struct rte_eth_dev *dev __rte_unused) { + int timestamp_rx_dynflag_offset; + + timestamp_dynfield_offset = rte_mbuf_dynfield_lookup( + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); + if (timestamp_dynfield_offset < 0) { + PMD_LOG(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) { + PMD_LOG(ERR, "Failed lookup Rx timestamp flag"); + return -rte_errno; + } + timestamp_rx_dynflag = + RTE_BIT64(timestamp_rx_dynflag_offset); + return 0; } From patchwork Thu Oct 29 09:27:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82724 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 0ADDDA04DD; Thu, 29 Oct 2020 10:32:10 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9BE01C99C; Thu, 29 Oct 2020 10:28:36 +0100 (CET) Received: from wnew3-smtp.messagingengine.com (wnew3-smtp.messagingengine.com [64.147.123.17]) by dpdk.org (Postfix) with ESMTP id 733A1C900 for ; Thu, 29 Oct 2020 10:28:30 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.west.internal (Postfix) with ESMTP id 06B03952; Thu, 29 Oct 2020 05:28:27 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:28 -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=Ov0I/SIS+DHYz 5Y9S4XZq7X4a/eTgLt/knF0/zSbz0E=; b=vuw9zYJZ5wGCPrREgE3k34kFga7fH u4c0LesGdoePsTmnyYCHVLbbAQa5uHsVC+axT1pSYjSSVoVhrE3CgFiZoN6/InRn 0Mz2BWqp177cfKqnLapg3Pon2vHN9LT6f0YOaCh84BYviD5cTGJJlgvs929uh7cF 4k+dn7wHymfbh0l5cMGF1TfgDVGqebnyq13pbZ1p117hW/pLVSOKcrQU/77SXkty R4z27NdL6S5g2khQfktKoPEZTkoNE76qxSjjnZZR40jxszfPz99PoSJKWvXSPb/x IGCi18nMTDs6giNxwa8qjt8uKhSXVYs/8YKaNOhrtA2vrFnVmnmPhhgXA== 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=Ov0I/SIS+DHYz5Y9S4XZq7X4a/eTgLt/knF0/zSbz0E=; b=Bf/KN0I3 Fm6lPf8GWh8XZuwX2xoWYUsv+q7gggZckuYmQ2pApEJHNiMSeF9qzcdIpJ+Rk5a6 zFrLIV5ZGoY0cig5CEoJOr5kLSvwsF/mT94d7qAYcTMpQqBmFj/N0KWc02nMpwyK 7PIg+jIoo/rPp8ODPZruNyV2CejfrBm+IKcWBR2pw0DeSCtMW1MnIyq8jP00FYwP w2CWUPR6Ar68qAzST8Cjs1FtPeb6717IXd/lMjMxt2fXovxGuAtFBQVsYr5KSTah DP/9FMzXCduop1+yu84PU5P73+F5bjw2IIPDa2+UBYZwP2hfTdHULMDsPtMWLeQO F2kf/YCrxNUA1A== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpeehgfejgefgueevgfevvdekgefffedtkeehgeffjeeigeefueffudff hfelffffudenucffohhmrghinhepfhguihhrrdhiugenucfkphepjeejrddufeegrddvtd efrddukeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho mhepthhhohhmrghssehmohhnjhgrlhhonhdrnhgvth 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 556CF328005A; Thu, 29 Oct 2020 05:28:26 -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, Wenzhuo Lu , Beilei Xing , Bernard Iremonger Date: Thu, 29 Oct 2020 10:27:47 +0100 Message-Id: <20201029092751.3837177-13-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 12/15] app/testpmd: 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 mbuf flag is also replaced. Signed-off-by: Thomas Monjalon --- app/test-pmd/util.c | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/util.c b/app/test-pmd/util.c index 781a813759..eebb5166ad 100644 --- a/app/test-pmd/util.c +++ b/app/test-pmd/util.c @@ -5,6 +5,7 @@ #include +#include #include #include #include @@ -22,6 +23,40 @@ print_ether_addr(const char *what, const struct rte_ether_addr *eth_addr) printf("%s%s", what, buf); } +static inline bool +is_timestamp_enabled(const struct rte_mbuf *mbuf) +{ + static uint64_t timestamp_rx_dynflag; + + int timestamp_rx_dynflag_offset; + + if (timestamp_rx_dynflag == 0) { + timestamp_rx_dynflag_offset = rte_mbuf_dynflag_lookup( + RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, NULL); + if (timestamp_rx_dynflag_offset < 0) + return false; + timestamp_rx_dynflag = RTE_BIT64(timestamp_rx_dynflag_offset); + } + + return (mbuf->ol_flags & timestamp_rx_dynflag) != 0; +} + +static inline rte_mbuf_timestamp_t +get_timestamp(const struct rte_mbuf *mbuf) +{ + static int timestamp_dynfield_offset = -1; + + if (timestamp_dynfield_offset < 0) { + timestamp_dynfield_offset = rte_mbuf_dynfield_lookup( + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); + if (timestamp_dynfield_offset < 0) + return 0; + } + + return *RTE_MBUF_DYNFIELD(mbuf, + timestamp_dynfield_offset, rte_mbuf_timestamp_t *); +} + static inline void dump_pkt_burst(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[], uint16_t nb_pkts, int is_rx) @@ -107,8 +142,8 @@ dump_pkt_burst(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[], printf("hash=0x%x ID=0x%x ", mb->hash.fdir.hash, mb->hash.fdir.id); } - if (ol_flags & PKT_RX_TIMESTAMP) - printf(" - timestamp %"PRIu64" ", mb->timestamp); + if (is_timestamp_enabled(mb)) + printf(" - timestamp %"PRIu64" ", get_timestamp(mb)); if (ol_flags & PKT_RX_QINQ) printf(" - QinQ VLAN tci=0x%x, VLAN tci outer=0x%x", mb->vlan_tci, mb->vlan_tci_outer); From patchwork Thu Oct 29 09:27:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82725 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 E2DD9A04DD; Thu, 29 Oct 2020 10:32:34 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2CB0EC9A6; Thu, 29 Oct 2020 10:28:43 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id 9BB99C8DA for ; Thu, 29 Oct 2020 10:28:31 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 530C59EF; Thu, 29 Oct 2020 05:28:30 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:31 -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=dulWPH/DmlCVG ZCSUvrFCQUsLYQiwt6mMne8sZbrQoU=; b=XLJbBjVhbnaqjc7/4Zn3IjbViCnfG q0mWZHJbBKtj1buZpz9on9mxaiRQ7TMGr5/19zfhy20N5erkYQSAlkINxmlyyRyR bYLG3OeqhYU7bNWPp8WDwB/xIYFNm85StKV7Hgz06KOLYb7gqAwZNTf3wo/tctEl JUZh9yzaCA9vURM+5wkT+noJgWl/CdnlBEq8uGQula/zoXQNHoEzXEDEHszREEqW CdhiLsW34cxiYrU4i9rEBLTTOpLabBv0LZmgglZPJpCFvXCle2FGfDC/PrBoRY8k +B7X+A/ST0rQgK3Jm9aDkNdQl80cAXYF2bYD3LQls1K3l42uBzxLp5V7w== 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=dulWPH/DmlCVGZCSUvrFCQUsLYQiwt6mMne8sZbrQoU=; b=gNfOWa3/ 7LAwpsWJ7gQuJ19X3EtTPBhwzoRM5LhAZqXhKWrc2mGc0Y+i8Vo07uoGuLPZgu2P Nh3xjcoVi2Os0iDpTPop3VLtBmOb1yQeJ/B9neRp7CJrApClvrhzL4OD4kS91xki zr2/YqIDyVq+sZUPLlonkFIzKrBbZCODbv30RWwrmud2io4tbDlxAn6xYerDzxVY 9PZ2XNOiZ8FwoE+/n14weOLfkuN51bUbpwcXBaXMxNXVEEiPIQaOwzMDSpGbZLt2 DZwgVmIfK0HinNsrhpIeF0nLwiFebhzKW9Xd37sRw5jp3G4Df72n+Uk/GRKz9Vpw rb2Xby+K63N4ow== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepuddtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhomhgrshesmhhonhhjrghl ohhnrdhnvght 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 DCF5B3280065; Thu, 29 Oct 2020 05:28:28 -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, John McNamara Date: Thu, 29 Oct 2020 10:27:48 +0100 Message-Id: <20201029092751.3837177-14-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 13/15] examples/rxtx_callbacks: switch timestamp to dynamic 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. Signed-off-by: Thomas Monjalon --- examples/rxtx_callbacks/main.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/examples/rxtx_callbacks/main.c b/examples/rxtx_callbacks/main.c index b9a98ceddc..4798e0962c 100644 --- a/examples/rxtx_callbacks/main.c +++ b/examples/rxtx_callbacks/main.c @@ -19,6 +19,10 @@ #define MBUF_CACHE_SIZE 250 #define BURST_SIZE 32 +static int hwts_dynfield_offset = -1; +#define HWTS_FIELD(mbuf) (*RTE_MBUF_DYNFIELD(mbuf, \ + hwts_dynfield_offset, rte_mbuf_timestamp_t *)) + typedef uint64_t tsc_t; static int tsc_dynfield_offset = -1; #define TSC_FIELD(mbuf) (*RTE_MBUF_DYNFIELD(mbuf, \ @@ -73,7 +77,7 @@ calc_latency(uint16_t port, uint16_t qidx __rte_unused, for (i = 0; i < nb_pkts; i++) { cycles += now - TSC_FIELD(pkts[i]); if (hw_timestamping) - queue_ticks += ticks - pkts[i]->timestamp; + queue_ticks += ticks - HWTS_FIELD(pkts[i]); } latency_numbers.total_cycles += cycles; @@ -137,6 +141,12 @@ port_init(uint16_t port, struct rte_mempool *mbuf_pool) return -1; } port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_TIMESTAMP; + hwts_dynfield_offset = rte_mbuf_dynfield_lookup( + RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL); + if (hwts_dynfield_offset < 0) { + printf("ERROR: Failed to lookup timestamp field\n"); + return -rte_errno; + } } retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf); From patchwork Thu Oct 29 09:27:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82726 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 D4EF3A04DD; Thu, 29 Oct 2020 10:32:54 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DE238C9B8; Thu, 29 Oct 2020 10:28:44 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id DF597C982 for ; Thu, 29 Oct 2020 10:28:34 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 7A9809AF; Thu, 29 Oct 2020 05:28:33 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:34 -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=/cJnSntVqxa0J 7ypHZNu9kvnNPEXCJFFlmjkfnotOro=; b=IqIhUcgWS15meI+Z0q/REJOG0+NRi QM7iCFY2qU9kYdR5ixM7iCoOXpN1L9Yw9tisUufcsxVsRnoYR8CpV4ftMpmSUWFA 7xQrY6QlDua7R/7UNEAvs5R8IwK/H+lAofQFIXKkPEQSitubq0Nzo4YDSnSACezR brJRBJVje5gsq5CRosdE89XUqkemqIpT9tlr+NZXeZK3sPRneH2NlZwfhM6GfVUE ucw8+XBw8GFWAseq7/iaN4Jn0St44jRINe6C60K2u6UgVqixXnwNsY4hDo7SyEFg AEEna2CS/rUnf7BTwLW5W41TKq0MtHsdqcaPKXMmtZJhB5ulDvR+TFSDw== 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=/cJnSntVqxa0J7ypHZNu9kvnNPEXCJFFlmjkfnotOro=; b=WwcLCwJU 8Y3FP9kH/w3aaD1Xc2CvYDItbGkdK05fKjqlgiRUSVJp9/q4gzMoaG9CoIAeStF2 mw/WpppM6GRytOdr3OH1ciV2k3Y2wpFJjZ5r8pH79o56ks8/67zmJAQUohIuH04t wOrWA1hiOnnRFuz0X+KDWpmYChhqBHND9rq6mDugrjvFCengHjItX5jdjG0BoSyE uIZ6DVrumrhikPgSPHhRy1CeUHKOPPa0gOZb7+OK99ijijbc+RANBWFrFzLg2xmG SzUU6kSvGQkZKoxRgYfAyHg/CoWknn9UnBzLjY8MfPDowB9ZfNDN3+khldR+uajJ Sxzq1bPRqoCtDg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpefhudeigefgvdekgfehgeejleeifffhtdetffffudevgfdtfefghfet tddujeehieenucffohhmrghinhephihouhhtuhgsvgdrtghomhenucfkphepjeejrddufe egrddvtdefrddukeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghi lhhfrhhomhepthhhohhmrghssehmohhnjhgrlhhonhdrnhgvth 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 C3B173280063; Thu, 29 Oct 2020 05:28:31 -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, Ray Kinsella , Neil Horman Date: Thu, 29 Oct 2020 10:27:49 +0100 Message-Id: <20201029092751.3837177-15-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 14/15] mbuf: remove deprecated timestamp 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" As announced in the deprecation note, the field timestamp is removed to allow giving more space to the dynamic fields. The related offload flag PKT_RX_TIMESTAMP is also removed. Signed-off-by: Thomas Monjalon Reviewed-by: Andrew Rybchenko Acked-by: Ray Kinsella Acked-by: Ajit Khaparde --- app/test/test_mbuf.c | 1 - doc/guides/rel_notes/deprecation.rst | 1 - doc/guides/rel_notes/release_20_11.rst | 4 ++++ lib/librte_ethdev/rte_ethdev.h | 4 +++- lib/librte_mbuf/rte_mbuf.c | 2 -- lib/librte_mbuf/rte_mbuf.h | 1 - lib/librte_mbuf/rte_mbuf_core.h | 12 +----------- 7 files changed, 8 insertions(+), 17 deletions(-) diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index 80d1850da9..85c150d843 100644 --- a/app/test/test_mbuf.c +++ b/app/test/test_mbuf.c @@ -1621,7 +1621,6 @@ test_get_rx_ol_flag_name(void) VAL_NAME(PKT_RX_FDIR_FLX), VAL_NAME(PKT_RX_QINQ_STRIPPED), VAL_NAME(PKT_RX_LRO), - VAL_NAME(PKT_RX_TIMESTAMP), VAL_NAME(PKT_RX_SEC_OFFLOAD), VAL_NAME(PKT_RX_SEC_OFFLOAD_FAILED), VAL_NAME(PKT_RX_OUTER_L4_CKSUM_BAD), diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 0f6f1df12a..72dbb25b83 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -86,7 +86,6 @@ Deprecation Notices `this presentation `_. The following static fields will be moved as dynamic: - - ``timestamp`` - ``seqn`` As a consequence, the layout of the ``struct rte_mbuf`` will be re-arranged, diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index 3cec526b6a..deb99d6d98 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -429,6 +429,10 @@ API Changes * mbuf: Removed the unioned fields ``userdata`` and ``udata64`` from the structure ``rte_mbuf``. It is replaced with dynamic fields. +* mbuf: Removed the field ``timestamp`` from the structure ``rte_mbuf``. + It is replaced with the dynamic field RTE_MBUF_DYNFIELD_TIMESTAMP_NAME + which was previously used only for Tx. + * pci: Removed the ``rte_kernel_driver`` enum defined in rte_dev.h and replaced with a private enum in the PCI subsystem. diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 3be0050592..619cbe521e 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1345,6 +1345,8 @@ struct rte_eth_conf { #define DEV_RX_OFFLOAD_JUMBO_FRAME 0x00000800 #define DEV_RX_OFFLOAD_SCATTER 0x00002000 /** + * Timestamp is set by the driver in RTE_MBUF_DYNFIELD_TIMESTAMP_NAME + * and RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME is set in ol_flags. * The mbuf field and flag are registered when the offload is configured. */ #define DEV_RX_OFFLOAD_TIMESTAMP 0x00004000 @@ -4654,7 +4656,7 @@ int rte_eth_timesync_write_time(uint16_t port_id, const struct timespec *time); * rte_eth_read_clock(port, base_clock); * * Then, convert the raw mbuf timestamp with: - * base_time_sec + (double)(mbuf->timestamp - base_clock) / freq; + * base_time_sec + (double)(*timestamp_dynfield(mbuf) - base_clock) / freq; * * This simple example will not provide a very good accuracy. One must * at least measure multiple times the frequency and do a regression. diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index 8a456e5e64..09d93e6899 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -764,7 +764,6 @@ const char *rte_get_rx_ol_flag_name(uint64_t mask) case PKT_RX_QINQ_STRIPPED: return "PKT_RX_QINQ_STRIPPED"; case PKT_RX_QINQ: return "PKT_RX_QINQ"; case PKT_RX_LRO: return "PKT_RX_LRO"; - case PKT_RX_TIMESTAMP: return "PKT_RX_TIMESTAMP"; case PKT_RX_SEC_OFFLOAD: return "PKT_RX_SEC_OFFLOAD"; case PKT_RX_SEC_OFFLOAD_FAILED: return "PKT_RX_SEC_OFFLOAD_FAILED"; case PKT_RX_OUTER_L4_CKSUM_BAD: return "PKT_RX_OUTER_L4_CKSUM_BAD"; @@ -808,7 +807,6 @@ rte_get_rx_ol_flag_list(uint64_t mask, char *buf, size_t buflen) { PKT_RX_FDIR_FLX, PKT_RX_FDIR_FLX, NULL }, { PKT_RX_QINQ_STRIPPED, PKT_RX_QINQ_STRIPPED, NULL }, { PKT_RX_LRO, PKT_RX_LRO, NULL }, - { PKT_RX_TIMESTAMP, PKT_RX_TIMESTAMP, NULL }, { PKT_RX_SEC_OFFLOAD, PKT_RX_SEC_OFFLOAD, NULL }, { PKT_RX_SEC_OFFLOAD_FAILED, PKT_RX_SEC_OFFLOAD_FAILED, NULL }, { PKT_RX_QINQ, PKT_RX_QINQ, NULL }, diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index a1414ed7cd..6774c6281b 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -1108,7 +1108,6 @@ __rte_pktmbuf_copy_hdr(struct rte_mbuf *mdst, const struct rte_mbuf *msrc) mdst->tx_offload = msrc->tx_offload; mdst->hash = msrc->hash; mdst->packet_type = msrc->packet_type; - mdst->timestamp = msrc->timestamp; rte_mbuf_dynfield_copy(mdst, msrc); } diff --git a/lib/librte_mbuf/rte_mbuf_core.h b/lib/librte_mbuf/rte_mbuf_core.h index a65eaaf692..52ca1c842f 100644 --- a/lib/librte_mbuf/rte_mbuf_core.h +++ b/lib/librte_mbuf/rte_mbuf_core.h @@ -149,11 +149,6 @@ extern "C" { */ #define PKT_RX_LRO (1ULL << 16) -/** - * Indicate that the timestamp field in the mbuf is valid. - */ -#define PKT_RX_TIMESTAMP (1ULL << 17) - /** * Indicate that security offload processing was applied on the RX packet. */ @@ -589,12 +584,7 @@ struct rte_mbuf { uint16_t buf_len; /**< Length of segment buffer. */ - /** Valid if PKT_RX_TIMESTAMP is set. The unit and time reference - * are not normalized but are always the same for a given port. - * Some devices allow to query rte_eth_read_clock that will return the - * current device timestamp. - */ - uint64_t timestamp; + uint64_t unused; /* second cache line - fields only used in slow path or on TX */ RTE_MARKER cacheline1 __rte_cache_min_aligned; From patchwork Thu Oct 29 09:27:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 82727 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 4F463A04DD; Thu, 29 Oct 2020 10:33:12 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 64A49C9C8; Thu, 29 Oct 2020 10:28:46 +0100 (CET) Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by dpdk.org (Postfix) with ESMTP id D1F6CC910 for ; Thu, 29 Oct 2020 10:28:37 +0100 (CET) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 7063B952; Thu, 29 Oct 2020 05:28:36 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Thu, 29 Oct 2020 05:28:37 -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=wMX/E93HyuTvM uXvClkOlIfUAvqlLOyLGjVKvtFHR3c=; b=jCOT3Xe057Tc8rTAmPS1xHjtgakho Sh8jmeBfdwcCMHg0MUxTA+Fb4GZesCwjPAF3P9pGhKXHPokRkFcTt9lLx8kQWGxU 6+iiLIUbXmi/J4oTTlHOf6bhaAfCJ7CkzdZLXZpOOj0gODPIyUiYSanbxBgjHaH/ aOrfdW7eg5R9UWghxquzAXS6A2xq4rOYOSocBXs1ytX8muR5UY4FMzpyQwI6cTPy 5EO3oGCivaKhN+jTvx3Zp3JzgbwGKeYH1zgzSrOV6YB0+5OwLV7zt+cgo/jDwihh ZZc5D5LL2y61iNMd91cmr96kIJZW1gSzAh/LXTLzMREe1/vHLViBdNnng== 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=wMX/E93HyuTvMuXvClkOlIfUAvqlLOyLGjVKvtFHR3c=; b=F8mG2ttQ Yn9KfNrYTMYooERjHTfLCwJmRth82IH3eIo4s63DVFU+/tI5QfP1DOQZNhjMY3Qx O7F3vmOMRoUWS7smJRmJzM4662VPX/Q0qj648dW3Dv5aVJiJexrVsHpNglWkHY9h T8AqeWvHMfSH++EzLEHA+9muNCtfcFYhNZJppJKyeac9S/Vn1Z4DGUnZOFYGuq00 qyg5yrmjMTeFkY7YZi3m4aLwppzsTzLwxMarwtZhQQARvOg5O66Hw0oTeEXIyrnK wfTmh0K5oYCEK/9aGPZyWifam5xCXvmig+A3Sy6f0uzzMZqs1GL2A9qBYzUFt0i1 6+xH+AIY040Vqw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrleefgddthecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghs ucfoohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucggtf frrghtthgvrhhnpedvhefgiedvjeegtdevheefhfetleefgfeivefgffevfeejgedtgfeu tdehtdegveenucfkphepjeejrddufeegrddvtdefrddukeegnecuvehluhhsthgvrhfuih iivgepuddunecurfgrrhgrmhepmhgrihhlfhhrohhmpehthhhomhgrshesmhhonhhjrghl ohhnrdhnvght 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 D0ABB3280063; Thu, 29 Oct 2020 05:28:34 -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, Ray Kinsella , Neil Horman Date: Thu, 29 Oct 2020 10:27:50 +0100 Message-Id: <20201029092751.3837177-16-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 15/15] mbuf: move pool pointer in hotter first half 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 mempool pointer in the mbuf struct is moved from the second to the first half. It should increase performance on most systems having 64-byte cache line, i.e. mbuf is split in two cache lines. On such system, the first half (also called first cache line) is hotter than the second one where the pool pointer was. Moving this field gives more space to dynfield1. This is how the mbuf layout looks like (pahole-style): word type name byte size 0 void * buf_addr; /* 0 + 8 */ 1 rte_iova_t buf_iova /* 8 + 8 */ /* --- RTE_MARKER64 rearm_data; */ 2 uint16_t data_off; /* 16 + 2 */ uint16_t refcnt; /* 18 + 2 */ uint16_t nb_segs; /* 20 + 2 */ uint16_t port; /* 22 + 2 */ 3 uint64_t ol_flags; /* 24 + 8 */ /* --- RTE_MARKER rx_descriptor_fields1; */ 4 uint32_t union packet_type; /* 32 + 4 */ uint32_t pkt_len; /* 36 + 4 */ 5 uint16_t data_len; /* 40 + 2 */ uint16_t vlan_tci; /* 42 + 2 */ 5.5 uint64_t union hash; /* 44 + 8 */ 6.5 uint16_t vlan_tci_outer; /* 52 + 2 */ uint16_t buf_len; /* 54 + 2 */ 7 struct rte_mempool * pool; /* 56 + 8 */ /* --- RTE_MARKER cacheline1; */ 8 struct rte_mbuf * next; /* 64 + 8 */ 9 uint64_t union tx_offload; /* 72 + 8 */ 10 uint16_t priv_size; /* 80 + 2 */ uint16_t timesync; /* 82 + 2 */ uint32_t seqn; /* 84 + 4 */ 11 struct rte_mbuf_ext_shared_info * shinfo; /* 88 + 8 */ 12 uint64_t dynfield1[4]; /* 96 + 32 */ 16 /* --- END 128 */ Signed-off-by: Thomas Monjalon --- doc/guides/rel_notes/deprecation.rst | 5 ----- lib/librte_kni/rte_kni_common.h | 3 ++- lib/librte_mbuf/rte_mbuf_core.h | 5 ++--- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 72dbb25b83..07ca1dcbb2 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -88,11 +88,6 @@ Deprecation Notices - ``seqn`` - As a consequence, the layout of the ``struct rte_mbuf`` will be re-arranged, - avoiding impact on vectorized implementation of the driver datapaths, - while evaluating performance gains of a better use of the first cache line. - - * ethdev: the legacy filter API, including ``rte_eth_dev_filter_supported()``, ``rte_eth_dev_filter_ctrl()`` as well as filter types MACVLAN, ETHERTYPE, FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, diff --git a/lib/librte_kni/rte_kni_common.h b/lib/librte_kni/rte_kni_common.h index 36d66e2ffa..ffb3182731 100644 --- a/lib/librte_kni/rte_kni_common.h +++ b/lib/librte_kni/rte_kni_common.h @@ -84,10 +84,11 @@ struct rte_kni_mbuf { char pad2[4]; uint32_t pkt_len; /**< Total pkt len: sum of all segment data_len. */ uint16_t data_len; /**< Amount of data in segment buffer. */ + char pad3[14]; + void *pool; /* fields on second cache line */ __attribute__((__aligned__(RTE_CACHE_LINE_MIN_SIZE))) - void *pool; void *next; /**< Physical address of next mbuf in kernel. */ }; diff --git a/lib/librte_mbuf/rte_mbuf_core.h b/lib/librte_mbuf/rte_mbuf_core.h index 52ca1c842f..ee185fa32b 100644 --- a/lib/librte_mbuf/rte_mbuf_core.h +++ b/lib/librte_mbuf/rte_mbuf_core.h @@ -584,12 +584,11 @@ struct rte_mbuf { uint16_t buf_len; /**< Length of segment buffer. */ - uint64_t unused; + struct rte_mempool *pool; /**< Pool from which mbuf was allocated. */ /* second cache line - fields only used in slow path or on TX */ RTE_MARKER cacheline1 __rte_cache_min_aligned; - struct rte_mempool *pool; /**< Pool from which mbuf was allocated. */ struct rte_mbuf *next; /**< Next segment of scattered packet. */ /* fields to support TX offloads */ @@ -646,7 +645,7 @@ struct rte_mbuf { */ struct rte_mbuf_ext_shared_info *shinfo; - uint64_t dynfield1[3]; /**< Reserved for dynamic fields. */ + uint64_t dynfield1[4]; /**< Reserved for dynamic fields. */ } __rte_cache_aligned; /**