From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140053.outbound.protection.outlook.com [40.107.14.53]) by dpdk.org (Postfix) with ESMTP id A9CD45681 for ; Thu, 27 Dec 2018 07:23:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cJ7YG24b+2Ze8JACRCDpwNnDrKbqx2gzNABKrH83naM=; b=spUCVoSThuFCVzOSKYaKr19LTDR+XBuvTEu6iCSTP7VU2I4NPg3SYz/0oJi4//R06FzqqpzW/3Wj2ndPtEVH5DZpyVjylFjDp2pKl1/yJNI28EijluxXHVr1o42LDXttrx6OX2R2BWoj7IlpF5a4RSaaeOV4LL2/PN9CYux7irQ= Received: from VI1PR0401MB2541.eurprd04.prod.outlook.com (10.168.65.19) by VI1PR0401MB2382.eurprd04.prod.outlook.com (10.169.134.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1471.20; Thu, 27 Dec 2018 06:23:03 +0000 Received: from VI1PR0401MB2541.eurprd04.prod.outlook.com ([fe80::555e:164:f8f0:dbb4]) by VI1PR0401MB2541.eurprd04.prod.outlook.com ([fe80::555e:164:f8f0:dbb4%2]) with mapi id 15.20.1471.019; Thu, 27 Dec 2018 06:23:03 +0000 From: Hemant Agrawal To: "dev@dpdk.org" CC: "ferruh.yigit@intel.com" , Shreyansh Jain , Akhil Goyal Thread-Topic: [PATCH 08/20] net/dpaa2: enable optional timestamp in mbuf Thread-Index: AQHUnayfnI9sjf1yC0CfM0Y9d7Jj4Q== Date: Thu, 27 Dec 2018 06:23:03 +0000 Message-ID: <20181227062233.30781-9-hemant.agrawal@nxp.com> References: <20181227062233.30781-1-hemant.agrawal@nxp.com> In-Reply-To: <20181227062233.30781-1-hemant.agrawal@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [14.143.30.134] x-mailer: git-send-email 2.17.1 x-clientproxiedby: BM1PR01CA0120.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:40::14) To VI1PR0401MB2541.eurprd04.prod.outlook.com (2603:10a6:800:56::19) authentication-results: spf=none (sender IP is ) smtp.mailfrom=hemant.agrawal@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR0401MB2382; 6:xq+HNEVdxQCoAsD2bgCysG74F84ROZC+YO3iQbgQZQzeasPAIC1R1KXlTlnQhk9q4DAZGo9PREkMMhQSRVcscmIbtbv1kdXo6ouOPGnYFkcPqFvZXH6plLsyGHZrzgqAKYtn5y1ahKFdpBhhwmWAML5DfYRgMQzfI/U4M+Sb2IKNrqcUfJDX3VAIDYRv2DsDxEH0LBknZtTg9shuRB7byHr2tRMLT2gnMx3DebIPcI1YJi4lRjLodMrWRoDbq7Jy6VvIFd20Wzx2/+cMnJbPaOanusFe/qRZU5aqYyoKbXK/3mDM9qbLsC44Vb9ry8H176fOTi+ycZ+ZUiggwOhAew+oSiEosTSrJHZBajHJwvvg0mDBUMk3vwXXctQnuTXy64QfDSKrf0QS/UBlvGNSyaX3C3lZ6zKnxnP1MgMC25c77sEpYfw6tmyOdfh4zsXfZqKGFUBQW4Sxvy2jaKs8Mg==; 5:JRcO63CrVeqaJAre8agmNgHb/L8YMuvnVUU2eg0tesDHDCvUEroaKDcT21fminNe3nFU9JODKagTZZvyydxJEOVsU/lGD+TBoGP/ngPoDe05r0jJGTBr8ikOWlg/l5GtGLOxk+vmrKkHyHr5FxdmGjOWjuRftSQ4O80PG3oukk8=; 7:epVEYv9/3ZjR7SXakns2bLwOtrgBL550+H+KBXXzL192Fl9QE2rLIktSNeFDvcTowjRaXdfmrRHKJmVB8fkhpVAIMcEQSAbj3LjL9QofvmOxbSE8+KOqSPcneiEvSbzz124gJe7qvIZjlTlhl32EnA== x-ms-office365-filtering-correlation-id: 9a168d21-2d9b-439f-6d42-08d66bc3c1a5 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0401MB2382; x-ms-traffictypediagnostic: VI1PR0401MB2382: x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(908002)(999002)(5005026)(6040522)(2401047)(8121501046)(10201501046)(3002001)(93006095)(93001095)(3231475)(944501520)(52105112)(6055026)(6041310)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:VI1PR0401MB2382; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0401MB2382; x-forefront-prvs: 0899B47777 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(396003)(366004)(376002)(39860400002)(346002)(199004)(189003)(5660300001)(1076003)(26005)(76176011)(186003)(71200400001)(256004)(25786009)(105586002)(4326008)(6436002)(305945005)(11346002)(106356001)(14444005)(446003)(44832011)(476003)(5024004)(7736002)(55236004)(102836004)(78486014)(486006)(386003)(68736007)(52116002)(86362001)(6506007)(2616005)(71190400001)(66066001)(316002)(54906003)(6116002)(3846002)(2906002)(14454004)(36756003)(99286004)(50226002)(8936002)(1730700003)(81156014)(81166006)(8676002)(6512007)(53936002)(478600001)(97736004)(6486002)(6916009)(5640700003)(2351001)(2501003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0401MB2382; H:VI1PR0401MB2541.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: b52ajO5qsrg3lOQLTOnNvVn6Eq0nVeFO7ve4fLi5+pTBf7MEhGqZTEaD5unRwck9JaQjBraxNW33vQfTewb2PiFDaYlg5I2TikYfhpDXOJYpLYjOqBKi4AwerwnA45P0IBbGBag1ndvyqYLFPXNHBmuiDw9DNP1J6dDuPPNFUJLbZv04wXQfcMZmZL/np8IxiBVyM3TQm9PDa/M2Wped14+hZJt1ysgtEpyIHGeVTE+1fi0goBjKjutcbbUbNP8Qx61UwfJ44nB/utdRVh310btkWwl53IgXc+b5y6T7mXlZaf3TH1dO+7/eI5o5iLqm spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a168d21-2d9b-439f-6d42-08d66bc3c1a5 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Dec 2018 06:23:03.4423 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2382 Subject: [dpdk-dev] [PATCH 08/20] net/dpaa2: enable optional timestamp in mbuf 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: , X-List-Received-Date: Thu, 27 Dec 2018 06:23:05 -0000 From: Akhil Goyal This patch enables the population of timestamp field in mbuf on packet receive. It may give performance impact on LX2xxx platforms. So, it has been made optional for Lx2xxx platform. One shall call, rte_dpaa2_enable_ts() to enable it. Nothing is required for LS2 and LS1088 platforms. Signed-off-by: Akhil Goyal --- doc/api/doxy-api-index.md | 1 + doc/api/doxy-api.conf.in | 1 + drivers/net/dpaa2/Makefile | 2 ++ drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 2 ++ drivers/net/dpaa2/dpaa2_ethdev.c | 9 +++++ drivers/net/dpaa2/dpaa2_ethdev.h | 4 +++ drivers/net/dpaa2/dpaa2_rxtx.c | 18 ++++++++++ drivers/net/dpaa2/meson.build | 2 ++ drivers/net/dpaa2/rte_pmd_dpaa2.h | 39 +++++++++++++++++++++ drivers/net/dpaa2/rte_pmd_dpaa2_version.map | 6 ++++ 10 files changed, 84 insertions(+) create mode 100644 drivers/net/dpaa2/rte_pmd_dpaa2.h diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md index e27874c5a..d95ad566c 100644 --- a/doc/api/doxy-api-index.md +++ b/doc/api/doxy-api-index.md @@ -43,6 +43,7 @@ The public API headers are grouped by topics: [i40e] (@ref rte_pmd_i40e.h), [bnxt] (@ref rte_pmd_bnxt.h), [dpaa] (@ref rte_pmd_dpaa.h), + [dpaa2] (@ref rte_pmd_dpaa2.h), [dpaa2_mempool] (@ref rte_dpaa2_mempool.h), [dpaa2_cmdif] (@ref rte_pmd_dpaa2_cmdif.h), [dpaa2_qdma] (@ref rte_pmd_dpaa2_qdma.h), diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in index 77ba327a8..bef9320c0 100644 --- a/doc/api/doxy-api.conf.in +++ b/doc/api/doxy-api.conf.in @@ -9,6 +9,7 @@ INPUT =3D @TOPDIR@/doc/api/doxy-api-index= .md \ @TOPDIR@/drivers/net/bnxt \ @TOPDIR@/drivers/net/bonding \ @TOPDIR@/drivers/net/dpaa \ + @TOPDIR@/drivers/net/dpaa2 \ @TOPDIR@/drivers/net/i40e \ @TOPDIR@/drivers/net/ixgbe \ @TOPDIR@/drivers/net/softnic \ diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile index ca5f7a336..2b9c011d6 100644 --- a/drivers/net/dpaa2/Makefile +++ b/drivers/net/dpaa2/Makefile @@ -42,4 +42,6 @@ LDLIBS +=3D -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS +=3D -lrte_ethdev -lrte_net -lrte_kvargs LDLIBS +=3D -lrte_common_dpaax =20 +# install this header file +SYMLINK-$(CONFIG_RTE_LIBRTE_DPAA2_PMD)-include :=3D rte_pmd_dpaa2.h include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/bas= e/dpaa2_hw_dpni.c index 713a41bf3..a6f86df8c 100644 --- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c +++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c @@ -296,8 +296,10 @@ dpaa2_attach_bp_list(struct dpaa2_dev_priv *priv, DPNI_BUF_LAYOUT_OPT_FRAME_STATUS | DPNI_BUF_LAYOUT_OPT_PARSER_RESULT | DPNI_BUF_LAYOUT_OPT_DATA_ALIGN | + DPNI_BUF_LAYOUT_OPT_TIMESTAMP | DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE; =20 + layout.pass_timestamp =3D true; layout.pass_frame_status =3D 1; layout.private_data_size =3D DPAA2_FD_PTA_SIZE; layout.pass_parser_result =3D 1; diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_eth= dev.c index 39f85ae7b..861fbcd90 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -56,6 +56,9 @@ static uint64_t dev_tx_offloads_nodis =3D DEV_TX_OFFLOAD_MT_LOCKFREE | DEV_TX_OFFLOAD_MBUF_FAST_FREE; =20 +/* enable timestamp in mbuf */ +enum pmd_dpaa2_ts dpaa2_enable_ts; + struct rte_dpaa2_xstats_name_off { char name[RTE_ETH_XSTATS_NAME_SIZE]; uint8_t page_id; /* dpni statistics page id */ @@ -88,6 +91,12 @@ static int dpaa2_dev_mtu_set(struct rte_eth_dev *dev, ui= nt16_t mtu); =20 int dpaa2_logtype_pmd; =20 +__rte_experimental void +rte_pmd_dpaa2_set_timestamp(enum pmd_dpaa2_ts enable) +{ + dpaa2_enable_ts =3D enable; +} + static int dpaa2_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) { diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_eth= dev.h index bd69f523d..7cf6e4191 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.h +++ b/drivers/net/dpaa2/dpaa2_ethdev.h @@ -9,6 +9,7 @@ #define _DPAA2_ETHDEV_H =20 #include +#include =20 #include #include @@ -83,6 +84,9 @@ #define DPAA2_PKT_TYPE_VLAN_1 0x0160 #define DPAA2_PKT_TYPE_VLAN_2 0x0260 =20 +/* enable timestamp in mbuf*/ +extern enum pmd_dpaa2_ts dpaa2_enable_ts; + struct dpaa2_dev_priv { void *hw; int32_t hw_id; diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.= c index eab943dcf..816ea00fd 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -42,6 +42,7 @@ dpaa2_dev_rx_parse_slow(struct rte_mbuf *mbuf, static inline void __attribute__((hot)) dpaa2_dev_rx_parse_new(struct rte_mbuf *m, const struct qbman_fd *fd) { + struct dpaa2_annot_hdr *annotation; uint16_t frc =3D DPAA2_GET_FD_FRC_PARSE_SUM(fd); =20 m->packet_type =3D RTE_PTYPE_UNKNOWN; @@ -104,6 +105,19 @@ dpaa2_dev_rx_parse_new(struct rte_mbuf *m, const struc= t qbman_fd *fd) } m->hash.rss =3D fd->simple.flc_hi; m->ol_flags |=3D PKT_RX_RSS_HASH; + + if (dpaa2_enable_ts =3D=3D PMD_DPAA2_ENABLE_TS) { + annotation =3D (struct dpaa2_annot_hdr *) + ((size_t)DPAA2_IOVA_TO_VADDR( + DPAA2_GET_FD_ADDR(fd)) + DPAA2_FD_PTA_SIZE); + m->timestamp =3D annotation->word2; + m->ol_flags |=3D PKT_RX_TIMESTAMP; + DPAA2_PMD_DP_DEBUG("pkt timestamp:0x%" PRIx64 "", m->timestamp); + } + + DPAA2_PMD_DP_DEBUG("HW frc =3D 0x%x\t packet type =3D0x%x " + "ol_flags =3D0x%" PRIx64 "", + frc, m->packet_type, m->ol_flags); } =20 static inline uint32_t __attribute__((hot)) @@ -205,6 +219,10 @@ dpaa2_dev_rx_parse(struct rte_mbuf *mbuf, void *hw_ann= ot_addr) else if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE)) mbuf->ol_flags |=3D PKT_RX_L4_CKSUM_BAD; =20 + mbuf->ol_flags |=3D PKT_RX_TIMESTAMP; + mbuf->timestamp =3D annotation->word2; + DPAA2_PMD_DP_DEBUG("pkt timestamp: 0x%" PRIx64 "", mbuf->timestamp); + /* Check detailed parsing requirement */ if (annotation->word3 & 0x7FFFFC3FFFF) return dpaa2_dev_rx_parse_slow(mbuf, annotation); diff --git a/drivers/net/dpaa2/meson.build b/drivers/net/dpaa2/meson.build index b34595258..07aada87c 100644 --- a/drivers/net/dpaa2/meson.build +++ b/drivers/net/dpaa2/meson.build @@ -18,3 +18,5 @@ includes +=3D include_directories('base', 'mc') =20 # depends on fslmc bus which uses experimental API allow_experimental_apis =3D true + +install_headers('rte_pmd_dpaa2.h') diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2.h b/drivers/net/dpaa2/rte_pmd_= dpaa2.h new file mode 100644 index 000000000..f9303acad --- /dev/null +++ b/drivers/net/dpaa2/rte_pmd_dpaa2.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2018 NXP + */ + +#ifndef _RTE_PMD_DPAA2_H +#define _RTE_PMD_DPAA2_H + +/** + * @file rte_pmd_dpaa2.h + * + * NXP dpaa2 PMD specific functions. + * + * @warning + * @b EXPERIMENTAL: this API may change, or be removed, without prior noti= ce + * + */ + +#include + +enum pmd_dpaa2_ts { + PMD_DPAA2_DISABLE_TS, + PMD_DPAA2_ENABLE_TS +}; + +/** + * @warning + * @b EXPERIMENTAL: this API may change, or be removed, without prior noti= ce + * + * Enable/Disable timestamping update in mbuf for LX2160 kind of devices. + * For LS2088/LS1088 devices, timestamping will be updated in mbuf without + * calling this API. + * + * @param pmd_dpaa2_ts + * Enum to enable/disable timestamp update in mbuf for LX2160 devices. + */ +__rte_experimental +void rte_pmd_dpaa2_set_timestamp(enum pmd_dpaa2_ts); + +#endif /* _RTE_PMD_DPAA2_H */ diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa= 2/rte_pmd_dpaa2_version.map index 09f4364bc..de95a03cd 100644 --- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map +++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map @@ -10,3 +10,9 @@ DPDK_17.11 { dpaa2_eth_eventq_detach; =20 } DPDK_17.05; + +EXPERIMENTAL { + global: + + rte_pmd_dpaa2_set_timestamp; +} DPDK_17.11; --=20 2.17.1