From patchwork Thu Jun 13 12:05:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rastislav Cernay X-Patchwork-Id: 54766 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 372241D405; Thu, 13 Jun 2019 14:05:22 +0200 (CEST) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by dpdk.org (Postfix) with ESMTP id 492C61D403 for ; Thu, 13 Jun 2019 14:05:20 +0200 (CEST) Received: by mail-wm1-f67.google.com with SMTP id z23so9837621wma.4 for ; Thu, 13 Jun 2019 05:05:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netcope.com; s=google; h=from:to:cc:subject:date:message-id; bh=7JZtK1E1wsFiFiWS6Tyd6yYEZP4uBqr2ktD5nRyNMsE=; b=n03FixLCEU8sz6vLrC5cUBIpBPK8xO7uAc6c3BReANVWWxzp4tvn7xhlJLGkqjC7m5 yhJ6RSS0KI/26pKsn7DcJiziUS+2sntnR7OUeq3BgiEip8/EST2n+NrAk3ljbRoGkXdF CW3RL3Yb0IGHOwapEdz2FsHxajyYDEEHMtR0FiO6YlQDD4iDIU+LfOS14Yex4NY0DKmt r1cwMePiPlCeyluQbhFOsdrAcJU3SaoQ1Ej1JaS3gX9N0BFJo31dO0nJ4RrHEtlP70bR PGmGU54F2emtU8QxuojoHDFnyzYFsPXaUzCZEA6xP6fRyHKZWu6i+3rylNW3bAOnApCw E9tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=7JZtK1E1wsFiFiWS6Tyd6yYEZP4uBqr2ktD5nRyNMsE=; b=gp4HwDW0QYhMjR3Z1bGsYPgjPewIu2lmXKFj8JIm6IhP1XzRTXNz60+rKSfHjwGOdS BwQR2L5EGyx/y9zIHI1ZF/CGC5NCkMKiyHWyVd0HsWNWXMbEmCx/AkoSJb8p1nonRRyq 1YSo3k8JdLBbbgnqunGq/hcA0Z4l0qtIwx7SOTnoNTPBw1NuqHo46KDz7w4qgfzYPjJ8 xkNdbbJK8CKsJfnoWsZcpJ/qKMLjzY8eD/vlHqEASoTH12v9iskBRg/Y1PUhDlZNOim5 Ha/uOAAmy/vm37RIv7N7u8HbYwexeVVLbnafyr3RkV7kgo9915uod1ojT8RRnakQ7SCW 0yQQ== X-Gm-Message-State: APjAAAV7fbw2fau78eoZr8fhqhwESB6MQiOrekQubdTxtsGIXYMfY4K0 ce7LKE+w5ZCLANwsNuPS6/C7I6VT2Bw= X-Google-Smtp-Source: APXvYqw+Rvkq6PNZZDQzqokYVHFN9Tm0MP5iuV31J1K9GTGtLdDMvWguJcExb1IAiMRKEyXA3Ws8zw== X-Received: by 2002:a7b:c7c2:: with SMTP id z2mr3231732wmk.147.1560427519680; Thu, 13 Jun 2019 05:05:19 -0700 (PDT) Received: from ruprecht.int.netcope.com ([185.24.237.70]) by smtp.gmail.com with ESMTPSA id b8sm1704087wrr.88.2019.06.13.05.05.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Jun 2019 05:05:19 -0700 (PDT) From: Rastislav Cernay X-Google-Original-From: Rastislav Cernay To: dev@dpdk.org Cc: cernay@netcope.com, remes@netcope.com Date: Thu, 13 Jun 2019 14:05:09 +0200 Message-Id: <1560427509-56164-1-git-send-email-cernay@netcope.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-dev] [PATCH] drivers/net/nfb: add timestamp support 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" From: Rastislav Cernay This patch adds timestamping support to nfb driver. Signed-off-by: Rastislav Cernay --- config/common_base | 1 + doc/guides/nics/nfb.rst | 22 ++++++++++++++++++++++ drivers/net/nfb/Makefile | 5 +++++ drivers/net/nfb/meson.build | 4 ++++ drivers/net/nfb/nfb_rx.h | 13 +++++++++++++ 5 files changed, 45 insertions(+) diff --git a/config/common_base b/config/common_base index 6f19ad5..f533136 100644 --- a/config/common_base +++ b/config/common_base @@ -383,6 +383,7 @@ CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # Compile software PMD backed by NFB device # CONFIG_RTE_LIBRTE_NFB_PMD=n +CONFIG_RTE_LIBRTE_NFB_HW_TIMESTAMP=n # # Compile burst-oriented Cavium Thunderx NICVF PMD driver diff --git a/doc/guides/nics/nfb.rst b/doc/guides/nics/nfb.rst index 8df76c0..a172f9a 100644 --- a/doc/guides/nics/nfb.rst +++ b/doc/guides/nics/nfb.rst @@ -69,6 +69,10 @@ These configuration options can be modified before compilation in the Value **y** enables compilation of nfb PMD. +* ``CONFIG_RTE_LIBRTE_NFB_HW_TIMESTAMP`` default value: **n** + + Value **y** enables HW packet timestamping. + Using the NFB PMD ---------------------- @@ -142,3 +146,21 @@ Example output: TX threshold registers: pthresh=0 hthresh=0 wthresh=0 TX RS bit threshold=0 - TXQ flags=0x0 testpmd> + +Timestamp +---------------- + +Timestamping needs to be enabled during compile time, as there is no way +to check whether a timestamping unit is runnig during run time. + +While enabled, a validity flag of a timestamp is set and a timestamp data is inserted into a rte_mbuf struct. +The timestamping unit still needs to be enabled separately according to the documentation of NFB products. + +Timestamp is in uint64_t field where upper 32 bits represents nanoseconds and lower 32 bits seconds. + +Nanoseconds contains the nanosecond part of the timestamp representing the +time of frame receipt on physical network interface. It is the number of nanoseconds elapsed +since the beginning of the second in Timestamp (seconds) field. + +Seconds contains the second part of the timestamp representing the time of frame +receipt on physical network interface. \ No newline at end of file diff --git a/drivers/net/nfb/Makefile b/drivers/net/nfb/Makefile index a84b423..a9c4607 100644 --- a/drivers/net/nfb/Makefile +++ b/drivers/net/nfb/Makefile @@ -16,6 +16,11 @@ INCLUDES :=-I$(SRCDIR) CFLAGS += -O3 CFLAGS += $(WERROR_FLAGS) CFLAGS += $(shell command -v pkg-config > /dev/null 2>&1 && pkg-config --cflags netcope-common) + +ifeq ($(CONFIG_RTE_LIBRTE_NFB_HW_TIMESTAMP),y) + CFLAGS += -DNFB_HW_TIMESTAMP +endif + LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool LDLIBS += -lrte_ethdev -lrte_net LDLIBS += -lrte_bus_pci diff --git a/drivers/net/nfb/meson.build b/drivers/net/nfb/meson.build index 457955d..c39007a 100644 --- a/drivers/net/nfb/meson.build +++ b/drivers/net/nfb/meson.build @@ -13,3 +13,7 @@ ext_deps += dep ext_deps += nc sources = files('nfb_rx.c', 'nfb_tx.c', 'nfb_stats.c', 'nfb_ethdev.c', 'nfb_rxmode.c') + +if dpdk_conf.has('RTE_LIBRTE_NFB_HW_TIMESTAMP') + cflags += [ '-DNFB_HW_TIMESTAMP' ] +endif diff --git a/drivers/net/nfb/nfb_rx.h b/drivers/net/nfb/nfb_rx.h index 88a0307..1178917 100644 --- a/drivers/net/nfb/nfb_rx.h +++ b/drivers/net/nfb/nfb_rx.h @@ -181,6 +181,19 @@ struct ndp_rx_queue { mbuf->pkt_len = packet_size; mbuf->port = ndp->in_port; + mbuf->ol_flags = 0; + +#ifdef NFB_HW_TIMESTAMP + /* nanoseconds */ + mbuf->timestamp = rte_le_to_cpu_32(*((uint32_t *) + (packets[i].header + 4))); + mbuf->timestamp <<= 32; + /* seconds */ + mbuf->timestamp |= rte_le_to_cpu_32(*((uint32_t *) + (packets[i].header + 8))); + mbuf->ol_flags |= PKT_RX_TIMESTAMP; +#endif /* NFB_HW_TIMESTAMP */ + bufs[num_rx++] = mbuf; num_bytes += packet_size; } else {