From patchwork Tue Oct 10 07:45:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Raslan Darawsheh X-Patchwork-Id: 30027 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 A1FBC1B287; Tue, 10 Oct 2017 09:45:26 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40051.outbound.protection.outlook.com [40.107.4.51]) by dpdk.org (Postfix) with ESMTP id D233C1B24A for ; Tue, 10 Oct 2017 09:45:19 +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=3MG4KU/2UIER0cQSjf9kURxgKfgvp4xaYKTOXyiRCCA=; b=s53pEZbXUmbUk5Voxi8Gc1nSTEnnqzkQBj9I+QLR8eXN04rYc8F0LAG37gGT4m4tz0+ZzMFZvojGHTt+PMKLYlAF0A00FkseNt/HUSYuRZis+lyKva4OlkQ6EVv2erFKdpmLTCZu/YzTGdGj1KSUs9BvG4F7xAXBQR3UbV0L9hc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rasland@mellanox.com; Received: from mellanox.com (37.142.13.130) by VI1PR05MB1229.eurprd05.prod.outlook.com (2a01:111:e400:582e::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Tue, 10 Oct 2017 07:45:17 +0000 From: Raslan Darawsheh To: dev@dpdk.org Cc: shahafs@mellanox.com, yskoh@mellanox.com, ferruh.yigit@intel.com Date: Tue, 10 Oct 2017 10:45:05 +0300 Message-Id: <1507621505-10714-3-git-send-email-rasland@mellanox.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507621505-10714-1-git-send-email-rasland@mellanox.com> References: <1507028429-23944-3-git-send-email-rasland@mellanox.com> <1507621505-10714-1-git-send-email-rasland@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: LO2P265CA0054.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:60::18) To VI1PR05MB1229.eurprd05.prod.outlook.com (2a01:111:e400:582e::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 85f76adf-c53a-41e7-e808-08d50fb2da28 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:VI1PR05MB1229; X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1229; 3:hWkG0Wr8OR8dRE+bQewZ0CipzLsIq5p4mPIAiGEufV3aqFuGb8aVCpWEtn9dJOOi/0F3U755ocI3oVl7845JCx8KWTY8T6T4U1kwsC7JZ4FYO2DQlhttN9g3nOyKkB4FvOkF1aJWJugfkCGX2We4Qf8otGg8ZAccuuLTYnnlgcTkbQVLTmfXIOWYD4MEvOJABZADgnRr3N0cXO1YNIQ51pMlpdvjGqCu3ra15rxV+3XlaRHo5ATbRUoYeJeavKu1; 25:RN+d6oQOBqZC3TerY56WOrF1uYf5f1KuewWinrJC6vAeY3nHDA6b++CUD0alLMf+1IPpmfkWxiUzz/tiBGnSEQttztRB0iA6DAL3YgXzHBH5+eyruxD1RQgVRZw95oXIPL5d2mFEM1zcV5PceZXUpliwYMYSPnf7nwdXHtP8oGiQ9GwSCc3Z3cn/AyoWD24UqxxStOZUlFzjdk8mw5LvIj7cBaL73+NhjOABIB6pam5CimtVVfZxUIwmBWuQLI00T2TTnQpzOGJcLnBMY39bCRjRKHbGMO9vVQ+mmw46e+B8Sti5WOdu5yfZg0sTubDztyUD7gd4mYRZRKuJNNdT1a9k/TFEqBxmYukx5h2aEGk=; 31:QkfVCZrbOTjOrSarmU3fR2b8Ce6nFoehOpcpd5DGv2KcmYg673cF6vU0Q/K9X4nKzW65tyJCMCpf6g6E4k1BPvoeMEaraOM6zq6bJHrb2Oq7CAqJVmdhadDpzyLYUH3+9P+tUHmUsldNHC+tb5b1M6o/WTlLIX+oz/Jzde/A2aV4NSB62lzSJcY/TPEI7heeNYcFvRmQyo+yWFaTpsacSvWHcwIL5q3NG1rcbhR0YlU= X-MS-TrafficTypeDiagnostic: VI1PR05MB1229: X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1229; 20:JIyRLPc356GIDjK1jM5PwbSOi2NEJhRVjc7HMLUu146nc++2nOyyz2St6i57FfYkCJo5W6nDKVrZ9jES+qc3UHtkThC28LCFK+zZXZKi1NLU02LWFf1YDiDZXdhal0nzRXliN+Sb6E/i8ge71wULBAFnj6ketbME19AZVlsof1Lus1GM0G7hRHrUmS3SJtUcZPIC2PiiN2JnM+5gRfEtwxyD65udqAuQEbo7P0mEuUvxIMvUCfyFgx9fYls5+jIFqbj0gQK8SAgGbA6cIgTaYdfzWiDauhWxM+j3OvBsrZk7tdnr6OxEzw2TD6mlq6R0rPdfdsvfLL1HyUXiYRgBzAMZFjwMyVHjnXXZUve31hMReerduBA9xABYLpMgaLEfqt/Qi3NRErLZ4GS07ES1vN8lqwAI0Zg180CXU3vbqEdIB2crA9illpTyFV5YmPf/umUdib6xdXev954vA+e3TaKOjSQ11HOqDF+g2vVm7z2Px6jR9mXOjB0AzqWUBGN5; 4:OaWi3hDADQFIvTlvnCofj0zWnU0ld+uUm/fxzwWLgD3BdzBcBJ8cnZzMgXns4A3GO1s4d1lIoWyOJzpNh2fkJ7VcjIoH6pAXInXeNxWd3/Bbb0e2eH9oy8jw8SLxYJxWOy2EoyoN2YLs+eHOy1A2/RH/29gAin2Nrm/lBJZttuZoS65qTPAKrGKNm4URQ8NtRFosrknxDj4IiTVyIwBg9CdQven2UK6GT4tBG2trbxbWKUYCsbimPVlduihR2CM9 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)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR05MB1229; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR05MB1229; X-Forefront-PRVS: 04569283F9 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(39860400002)(199003)(189002)(86362001)(25786009)(2361001)(6666003)(101416001)(6916009)(2950100002)(50466002)(5003940100001)(97736004)(478600001)(50986999)(36756003)(21086003)(76176999)(66066001)(189998001)(48376002)(68736007)(47776003)(5660300001)(16586007)(69596002)(53936002)(7736002)(6116002)(3846002)(33026002)(2906002)(305945005)(8676002)(81166006)(81156014)(8936002)(316002)(50226002)(4326008)(55016002)(2351001)(16526018)(106356001)(33646002)(105586002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB1229; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; VI1PR05MB1229; 23:MsEpDRg55htA9Xtoo2pR+jOag1Wj2Br6Z1hCbmLEV?= qLeLBYd284P79P8qZzoT9J1plbrcIwWaXdv2jzYn9JHyHQevEsnSmSHWsBtRT54DfG+ij7s+9/80DiY+LhcozAMYRbHJIfRjrN5d+F8AuCnGKCmGBVFunNJ0MOIHMWmzdDntgmES//vv9PGI9/nUKcfXoqgUATSdYhLDDMl0iBIcCuYBa24Dx/NUq2+JXvVQJ936tDulvBYneSBH4jJOmDh7AZ/DUB/UcztIId+KzjToecGNphEPVyPJkJZ8Qu1HEDykVkGm+nYv0mLZtE1OCL0z+ce8h2/hAyb+6RDHDZDY2jbjPD5XzdhNK948H3SX2JDdCZHqIOghshFOU/t0Nh7ZEbhfluynu0HifBfmfzs9Q6wfe9dGUSzQ8kVnwBkYSNs0+l6iU+VJTb6HBza/qiZcp3bJnrNYy0aByScnVkxxq2lj5zDoCin7Ytidu03FZM6JBtNULxP5o0YNofWfObBoEVwooiA2b7q9m8GdDcI8EjY4uJ0iTa3pJCW3wSqV1gLHfapFQwl08j+frr41aJVBzh5PZf857fGnxKDCnSffJLby15Xme/BDG5hKjZqsgEFA4zbVbnhgNPtEQxnZ8Qr517xUNF17o3qzYWjsmT5jI1mXc+RixXUjB/ve21Yrm8431k4m9Su6Qj/ykLGhlPOuTaWrT7CFf/V8qEnpz+JsFzpr3LCVLvKMFW+yOetfGU4pqiK6Q5Zps3JGwpRWXaN3K95vBA/zSwRAEp1jNbR5tWNSTHlhaIYz+vEQnCw08tqyJiIYCpVbGP9cSj3dKZVJzaA6OE01anVYyPVax9oAB/e8IqTd0LqcsPvvQCILLrttsQml3dCEZ0Gr7Jr+oAk+bY1ZawcMpcl2h4kWtCLxCNdbkkrTbOP6kdU/P+zjamLdD2lkI3c/Jd5ZhTelLzeGT89R+xNJY+qnjrcw6F2T/ey5P/3NSPrBI34cy847Es0septvNI1VndMFTrVsSwFLnF6LMHSc+MZHTuOumr07usf2MutNy01fWIGnoBpkT4/LVmJZqp9jvnc/s3aLo9uIyMD0x5WqDj+Ww38lPqyT7p6HG26CAqLb8MXQRFnBa5OO39dmVs410NWrOKW5ElUc+f1wx3xb6IWwoX4Nzf/Kgai+Ast9fjbEGlv3Epz4Q8= X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1229; 6:MHWlmJjSlq8G2ZHc30r76+dL1lo5r7XYW96dalZ1h/HnioaQ/g8n/J68Y+Yif//coynOO4OyK3wHlmqwGmdx12r4VedK9xr02AUEeVwqQF8azbTcnf2XsSMFZwAJHWjrLvhoCGsYPTJfxwmYsducx69fpF7NLsVXgF48O1u8IOIyxtfbrwRPoO1G7ZqPEh8SGm7C8f20F1sIH/rqwJv0b9mU/aR4lgqBF77V2JQnjWiQlZ7AovL2uzrjiB6XHaeDCTy1Pf0lDGDKE/cmceCxmQhgZopmITSrj92ZGD7QVtjdq4dzgJV4s5DA/lAuNFydHvxQ/gnhQQwlT2XbHDTboA==; 5:skFKQDE2H2TPaQWQd5iyK5zCPzNkMwFpZHw0H2+5FnYJkP0OjqY0WGg31aFaw1HQpJRBHgPvDZIKhWUNZ5SpCHTJOSBMLUwfzzNpNucT9zE6I5Pe7zCk6fMT78hBZBTOv4GcXkHWdMD6V2Z9iVxya+2SrC8kpUTXjYwg6XWUD50=; 24:SamIt4hqa78SQEXh9D7ute3C39e3nuTOFBwa9gUsSiWKSIPqB68xuhuW8Po8SQDDtO2BJ6er0w5JVxil4jVQgtORue5e2lBaXUKEWQr9FK8=; 7:iu5DfolqUMqZrteqL7Jnd2k5egVEPj0bpl4iY/YZ12WDtWAHwUtONpHh/Rb4AupvV894aQBSh0Oepxn/veapDw3ucFDIxClTaQYqaFOBSqiJLLGycxfjy/T+gCZu6NAJw4e2aMVCKVAHu2AqwuBvhAF7nPg+FTc4xVSrGhytF4FqlX9QRsZwBeBjQvrdrDVxkaFDULco7QPSWK40emOSJBidOjJ6ncypgfWSFUxY9mc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2017 07:45:17.3846 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB1229 Subject: [dpdk-dev] [PATCH v8 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 V8: - Rebasing the work on top of next-net 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 | 4 +++- 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 | 22 +++++++++++++++++++++- drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 13 ++++++++++++- 6 files changed, 48 insertions(+), 5 deletions(-) diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 9f5b489..e06dce3 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -697,7 +697,9 @@ 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 e1867cb..632d451 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -608,7 +608,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.mlx5.comp_mask |= MLX5DV_CQ_INIT_ATTR_MASK_COMPRESSED_CQE; attr.cq.mlx5.cqe_comp_res_format = MLX5DV_CQE_RES_FORMAT_HASH; @@ -618,6 +618,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)); @@ -939,6 +941,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 827cb3c..ea03742 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). */ @@ -114,7 +115,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 :15; /* Remaining bits. */ + unsigned int :14; /* Remaining bits. */ volatile uint32_t *rq_db; volatile uint32_t *cq_db; uint16_t port_id; diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h index 6dd18b6..ee8ecfa 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h @@ -573,7 +573,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, @@ -982,6 +984,24 @@ 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) { + 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); + } #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 88c5d75..ab2d05b 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h @@ -552,7 +552,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 = @@ -947,6 +948,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);