From patchwork Sun Oct 8 08:24:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Raslan Darawsheh X-Patchwork-Id: 29882 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 D8F421AEE8; Sun, 8 Oct 2017 10:24:49 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0059.outbound.protection.outlook.com [104.47.0.59]) by dpdk.org (Postfix) with ESMTP id B2D591AEEB for ; Sun, 8 Oct 2017 10:24:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=VIHnkCuomYz9/UgLXcfb+7TBVOtc+MvhFfYHRIh/jzI=; b=ZuEcN2aelaUnuFCiHb9v6g4NrpswGwIZQ9Ag8XRuBWTvDLKeDhcaBhZygwOuEaQ1nrdy9XH+PpamuAki4EgtQi9xYECUl5LKkLtespIUoUf+aak7TyQVE6876krZDmgUAPxeVDjIBqPjOll/P+jdpFuZvwNZUpIxqnDTVxXOFMw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rasland@mellanox.com; Received: from mellanox.com (37.142.13.130) by VI1PR05MB1230.eurprd05.prod.outlook.com (2a01:111:e400:582e::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Sun, 8 Oct 2017 08:24:40 +0000 From: Raslan Darawsheh To: dev@dpdk.org Cc: shahafs@mellanox.com, yskoh@mellanox.com, ferruh.yigit@intel.com Date: Sun, 8 Oct 2017 11:24:29 +0300 Message-Id: <1507451069-29590-3-git-send-email-rasland@mellanox.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507451069-29590-1-git-send-email-rasland@mellanox.com> References: <1507028429-23944-3-git-send-email-rasland@mellanox.com> <1507451069-29590-1-git-send-email-rasland@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR0701CA0065.eurprd07.prod.outlook.com (2603:10a6:800:5f::27) To VI1PR05MB1230.eurprd05.prod.outlook.com (2a01:111:e400:582e::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c7fd852a-9d1d-4250-1b22-08d50e2605c5 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:VI1PR05MB1230; X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1230; 3:7cWp/7wpqm4pHAmfXncaSKf8egxqQMlCfQSEPOvGgOsb2S3FBNS8K9ikl2sSapcq89kwYax0/8whLGfqAhEXF7W7mPhbkSWndsuaZKD+l1d9KjPxZ0DCNPifT5uSkq2tO76XURm2ixOocY4mehN98XOG0vJDhhWa7+er3We7yE1VRcl7AaMgVuytSO+Ah8Sa3RUsq1xbPTxU61+e79RaUllOOAY4GN/wkzQC+D979KySU4ILEGp8WvSQXxgwOGmh; 25:6+GPoaHFVHk8A+UTIsMj0h7KY6IHRsL79dnq+MZ2K885jUX4qFCbsU9vWl3Jr7mxDp8zVg39Gov6jb9mzoehJ5Nhvqxx+JsovKMhH9kS69KRqmxYq1Q9HfvH0tsJ3gFlKQyHwT28EiHwQ9C9Ei4fwQXYi/MqgMEq/QG9WPCreP8YuwC6pFcOwCRQ7SmrhpIhyrPZP1vUjvV1M2uKvJJi53d19UO7GPqIp2Nkua5kQ/rf7x0wpNrFsyReNCOR9DYogJENHJg81rShwiSnfz8qdssMTxiTFcaNrxiBdopM9KV8cSE0P0/WZt4ISL64tnKlg81pekJj7x8XddEffKsd+w==; 31:NJf5L+Mbwddu5y0SPiL/qxS1BmCtwIOZ1zibcQNS6my+Pg4YkwDUMPjoM3JtiqAEWoJbLJHzU/JRfDm5DOZmXnsyg2SgnLIi5YYky9An7at601+PV4BLAedKN8LzhBVG56GcxhWcrRsOgd4a9y1xeFsQrMSGmw4Bf6/w1Ibb/OcXRWBaf5ST46wPl5nA0pF8ciQxfmg0V1OzWtVCUUTNNfhhe4vvjw/OCIErMdnD7L0= X-MS-TrafficTypeDiagnostic: VI1PR05MB1230: X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1230; 20:yMxs1uxXr1GnwNH2iHvMqssPFwi3ud8JsHFekGcaUn8Jtv0gKSvu3tGTIa8kTzxm8oLdIS1tOJVRb4X8b1buxAzPIOttAfnFxx/wryeUo27AvGSBady1f0G5u4E3vaYf31ZInrQ1DDczG5zANLu2mt16sd0X6UtnzKRrhhARbWXoqxmKJp4aeLeUR0ABMNK3B1mJzkQKYpFBoHhrz8fVj5fsl+EWio4uStln9BmR+9j+sOMdtj6IktjvxUJntgeKKBV9jq/dSiwAuRESV0wxVAqwWLdCbHCX/I2OK336OM6S3E/ZuhWMr+Gf3f2SKPaUKfdMyk32X2GYKq9iNkyenJHdhim1EyPwkU2hbNM/eRnBCzo0+8EwUkwnv2/rK7euMbNwuIzyngpfcSFVnT4cTSuodDhbR3BMXNdF+BkZIXEs3J9HRxm6KtJ07y6Npksofv0Zf2VBTgrDJYJJOSQq9JeNiFKV/bQ4yQruwhfRZulipF2ESM3ol1FyipniHhsw; 4:/tCs3xvoNcZde90DqUh+cOj+Aq52jwPEOCJPl2vIWrMXdKG3VYlB4q7EUO6Yo39gua80cAjuRA4wJwMNvXEK9UpxBPwttUC1i/zoy+uEjEajnfZ2mZtXjgND0H3EbFvMMBwE/+bb1KZSMVAXyTIi79GKnOO+hTfllhiEyLDu8fqsc/IDQ9nDw2z+UII+KdM8iq1E4kyRuwUnkLOXPhK9vX92J0ONRdX+p1mykV/oddlVUAtmgHULeHtKcAzyqunR X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041248)(20161123560025)(20161123558100)(20161123564025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR05MB1230; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR05MB1230; X-Forefront-PRVS: 0454444834 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(39860400002)(376002)(189002)(199003)(6666003)(50986999)(68736007)(50466002)(47776003)(66066001)(55016002)(76176999)(101416001)(97736004)(478600001)(2950100002)(5660300001)(6916009)(48376002)(16586007)(316002)(69596002)(16526018)(21086003)(36756003)(305945005)(7736002)(50226002)(86362001)(2906002)(25786009)(5003940100001)(189998001)(53936002)(33026002)(106356001)(6116002)(3846002)(2351001)(4326008)(105586002)(2361001)(8936002)(81166006)(81156014)(33646002)(8676002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB1230; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR05MB1230; 23:nQQqK/lXu2MKJtF3Q36Jg6Sc+2pHJl6cnxx1o89SP?= gkgHUjBn/GLGB6ZIjSbQTrLu4ySwG1lRNJWY/2SCEJci6YunBz9VrE4aDZk/Bsebgt4FD1ZMp1BdrWZEXaf2WQqgBkdxUwXnnLuCiX6Ty9ny9VDckp8x1uyzKOfI/AcMWyoB/ln4F51s2vi8Ineb6CIOINqD+UXowiFAlkPd7FbDJ4K1l/0/xgfV72PVFt2P+yFL9kKRJ7dDSUzgbpSvPBIAO3s4Yb28ppFptjj9ekR4wLi1GCzOYglEUWzRSj7+GeV5zQrJYJgB2rNeLiluzABdIoXli5GC3eCFC57uO1fQwo3Vhxfz5CSljqf5YR4q3dIkARE7n16LPkp2aovRcDnHxk8SjbDiIE4tVAxtWTLpbVae9uqnO74SnOZYiqEZMylvbWm1oU+6ECyw0E5+LlpsrpeiODLrX88rAd3tMURgg0+5skn2/3xUI62e/tc4BYp5MPQjirI1gl3vJawiUaeFJB6zZkyLbhMnwGrSTZxcuPBXnX2jvZjZ2x2lyPu2lBigy/Du0kVfolxBkezNEqpu6jn9VGgrdylznKEXKm5s5MGgjmmt5gbD4emjdavAotds2L3eGh5sZi4g57ejc7eJ4A4rkI5/Tg68YqISSryJp6RAo5ugrYtNN6Y7jnCe0u7GYHmkJoyFVRwOYzakAQhiE9z8WzP+pDXFy5ePHgkoHkR+9OIiQ99PXi5QEdqd6yMTfCo1/sBeGOgEaZhIdV1j6uMOewqzdHyBPCZbQNu9EA7VmlIXL5aOAHL5QrpRp+uQ3vNZviQrLFle9yBoUiTVuVdlxqs/FntH8OhZd1cKIuGJhdwD/6vA8AyTY6EQDeCwr3tZoUTrpgN9BZ4vfljdnvlgBpQGZX3S3JlBCvI1mtyQ/fpZH56dHwxBA/MrCeZ8uC2XECXnO09J192sF6votZvFIKEg3sBL/C7xlogDzP6Z+hPpfSOsgAoY0GSCyuRsAGkCb/oyRaMbig4mxrSXkCN1L4CuXGG8lKe4GR12BEFT3YiLnBd4oAX+PvQgrE/D0kGgOdD0MRoYoNlVHv9GkLd9fPu746PFvracQivOFgyYJWd+N+7F4sxrEaBh8Weuo0gxtoLo7g2H4nBlxyshgXGNKuYCjsbzsYiI9ZjvYlXg8ooGlaSIXO01+Q0FrM= X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1230; 6:CK0rp695Iu65RIrETl9ABBxTTm1A/Qnej7M31d2vwHQE5WoULMJh2WrSk/4ZYW2xal/KRRk6ceI1fuloh1aFRKLuicj3MJ2v7MnB/nbYg5mABDj+xJ10UGllSxkpBafu6GAM8ULVjgAlMmYA6BX3FPswigHWR1KKNPU1CGx0U//MPY5Zdnw1gxYuBVgUkYNzIE2b/A5hmoZ1JclK0zS7hchFXNaIqKyHugcz+md+PUqJPuWNxX6TmdOvAJ/e8AtBh0CbBJ4/pir1mj6dDqIMfnAhlJFkQQHDDqeYl4OyPs4PLjL9SvuW4eom3Fxz/1CjTRksHh/+FihpkLF5SYz+hQ==; 5:dkj7Cbb+Y2g6xut83+SwohwFF8xR+NsCxbkpefaEi2rUUNwNLWwzDwswbQO9fEuekaK+9OxxYg5rG8yL0bq8lDDg+AYTSkSpA+R9OXVdBYqjo44w9P+kbgVuPMgNvNGfxxZwcb489cfR4W9GO7vkpw==; 24:UFkieVgViqLZawWnJZ6GCvKabwbaK1W2ZVCmtXodp57wwl7GZBayVijXDNo4sf88AwxVnSJg7SjgMkxV4MilB0YfHSumiQja1Z6rb/0YDaE=; 7:vChcccjsGu+R0+IPA79fNqA4PJl9DLdUSkrRdZDzZc65+X89dllWX0iGq30OmpBRxxYszNHjuxJSkJO/w8JBy/jt+TZEzPmWBe2P0BkqQeWRyTNQghiL46tMKQaPwPZrHErRYeIGU3cMG1PWnpYPTQc/v9RPgwNdud0LKmfw60eg0P/on2mPJH6ywbX+NKtEZoqV4p2fZEgw4PZjxuLx+Lt0yPoxAztaA+drbbBY5rE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2017 08:24:40.4267 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB1230 Subject: [dpdk-dev] [PATCH v7 3/3] net/mlx5: add Rx HW 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" Expose Rx HW timestamp to packet mbufs. Signed-off-by: Raslan Darawsheh --- Changes in v7: - Rebasing the work on top ot c814b93b ("net/mlx5: add vectorized Rx/Tx burst for ARM") - Adding the timestamp code for ARM NEON Changes in v6: - Rebasing the work on top of 217b1421 ("net/mlx5: separate DPDK from Verbs Rx queue objects") --- drivers/net/mlx5/mlx5_ethdev.c | 3 ++- drivers/net/mlx5/mlx5_rxq.c | 6 +++++- drivers/net/mlx5/mlx5_rxtx.c | 5 +++++ drivers/net/mlx5/mlx5_rxtx.h | 3 ++- drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 14 +++++++++++++- drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 13 ++++++++++++- 6 files changed, 39 insertions(+), 5 deletions(-) diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index d8bcef4..892c2cc 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -686,7 +686,8 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM) : 0) | - (priv->hw_vlan_strip ? DEV_RX_OFFLOAD_VLAN_STRIP : 0); + (priv->hw_vlan_strip ? DEV_RX_OFFLOAD_VLAN_STRIP : 0) | + DEV_RX_OFFLOAD_TIMESTAMP; if (!priv->mps) info->tx_offload_capa = DEV_TX_OFFLOAD_VLAN_INSERT; if (priv->hw_csum) diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 9bb6a29..e48e240 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -609,7 +609,7 @@ mlx5_priv_rxq_ibv_new(struct priv *priv, uint16_t idx) attr.cq.mlx5 = (struct mlx5dv_cq_init_attr){ .comp_mask = 0, }; - if (priv->cqe_comp) { + if (priv->cqe_comp && !rxq_data->hw_timestamp) { attr.cq.ibv.comp_mask |= IBV_CQ_INIT_ATTR_MASK_FLAGS; attr.cq.mlx5.comp_mask |= MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE; @@ -620,6 +620,8 @@ mlx5_priv_rxq_ibv_new(struct priv *priv, uint16_t idx) */ if (rxq_check_vec_support(rxq_data) < 0) cqe_n *= 2; + } else if (priv->cqe_comp && rxq_data->hw_timestamp) { + DEBUG("Rx CQE compression is disabled for HW timestamp"); } tmpl->cq = ibv_cq_ex_to_cq(mlx5dv_create_cq(priv->ctx, &attr.cq.ibv, &attr.cq.mlx5)); @@ -936,6 +938,8 @@ mlx5_priv_rxq_new(struct priv *priv, uint16_t idx, uint16_t desc, if (priv->hw_csum_l2tun) tmpl->rxq.csum_l2tun = !!dev->data->dev_conf.rxmode.hw_ip_checksum; + tmpl->rxq.hw_timestamp = + !!dev->data->dev_conf.rxmode.hw_timestamp; /* Configure VLAN stripping. */ tmpl->rxq.vlan_strip = (priv->hw_vlan_strip && !!dev->data->dev_conf.rxmode.hw_vlan_strip); diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 275cd6a..961967b 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -1887,6 +1887,11 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) pkt->vlan_tci = rte_be_to_cpu_16(cqe->vlan_info); } + if (rxq->hw_timestamp) { + pkt->timestamp = + rte_be_to_cpu_64(cqe->timestamp); + pkt->ol_flags |= PKT_RX_TIMESTAMP; + } if (rxq->crc_present) len -= ETHER_CRC_LEN; PKT_LEN(pkt) = len; diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h index 8470a55..c207a8b 100644 --- a/drivers/net/mlx5/mlx5_rxtx.h +++ b/drivers/net/mlx5/mlx5_rxtx.h @@ -106,6 +106,7 @@ struct rxq_zip { struct mlx5_rxq_data { unsigned int csum:1; /* Enable checksum offloading. */ unsigned int csum_l2tun:1; /* Same for L2 tunnels. */ + unsigned int hw_timestamp:1; /* Enable HW timestamp. */ unsigned int vlan_strip:1; /* Enable VLAN stripping. */ unsigned int crc_present:1; /* CRC must be subtracted. */ unsigned int sges_n:2; /* Log 2 of SGEs (max buffers per packet). */ @@ -115,7 +116,7 @@ struct mlx5_rxq_data { unsigned int rss_hash:1; /* RSS hash result is enabled. */ unsigned int mark:1; /* Marked flow available on the queue. */ unsigned int pending_err:1; /* CQE error needs to be handled. */ - unsigned int :7; /* Remaining bits. */ + unsigned int :6; /* Remaining bits. */ volatile uint32_t *rq_db; volatile uint32_t *cq_db; uint16_t rq_ci; diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h index 86b37d5..c8d8d64 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h @@ -566,7 +566,9 @@ rxq_cq_to_ptype_oflags_v(struct mlx5_rxq_data *rxq, { uint16x4_t ptype; uint32x4_t pinfo, cv_flags; - uint32x4_t ol_flags = vdupq_n_u32(rxq->rss_hash * PKT_RX_RSS_HASH); + uint32x4_t ol_flags = + vdupq_n_u32(rxq->rss_hash * PKT_RX_RSS_HASH | + rxq->hw_timestamp * PKT_RX_TIMESTAMP); const uint32x4_t ptype_ol_mask = { 0x106, 0x106, 0x106, 0x106 }; const uint8x16_t cv_flag_sel = { 0, @@ -973,6 +975,16 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n) /* C.4 fill in mbuf - rearm_data and packet_type. */ rxq_cq_to_ptype_oflags_v(rxq, ptype_info, flow_tag, opcode, &elts[pos]); + if (rxq->hw_timestamp) { + pkts[pos]->timestamp = + rte_be_to_cpu_64(cq[pos].timestamp); + pkts[pos + 1]->timestamp = + rte_be_to_cpu_64(cq[pos + 1].timestamp); + pkts[pos + 2]->timestamp = + rte_be_to_cpu_64(cq[pos + 2].timestamp); + pkts[pos + 3]->timestamp = + rte_be_to_cpu_64(cq[pos + 3].timestamp); + } #ifdef MLX5_PMD_SOFT_COUNTERS /* Add up received bytes count. */ byte_cnt = vbic_u16(byte_cnt, invalid_mask); diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h index c2142d7..e9819b7 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h @@ -545,7 +545,8 @@ 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); + __m128i ol_flags = _mm_set1_epi32(rxq->rss_hash * PKT_RX_RSS_HASH | + rxq->hw_timestamp * PKT_RX_TIMESTAMP); __m128i cv_flags; const __m128i zero = _mm_setzero_si128(); const __m128i ptype_mask = @@ -938,6 +939,16 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n) rxq->pending_err |= !!_mm_cvtsi128_si64(opcode); /* 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) { + 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); + } #ifdef MLX5_PMD_SOFT_COUNTERS /* Add up received bytes count. */ byte_cnt = _mm_shuffle_epi8(op_own, len_shuf_mask);