From patchwork Tue Oct 10 14:37:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Raslan Darawsheh X-Patchwork-Id: 30071 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 233651B324; Tue, 10 Oct 2017 16:37:28 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20054.outbound.protection.outlook.com [40.107.2.54]) by dpdk.org (Postfix) with ESMTP id 7BC371B31A for ; Tue, 10 Oct 2017 16:37:23 +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=w1jcvwm0VNHIAV5/Xj+s+RiboUGgTw4kkal24QGihLY=; b=E8WGYKgP0ufjnqCgWxcXKb103roGVXYR9qSnFoeBKrFhdua4j8F/57jbvxhFWbdjapMpPEuayHFWTk2iPQGt/hT8XwQpuQalxr9hxLfuprpHwZhQNtzaokoM+EnXq6Dkek7i5sqGQJiZ130g4zw8x7f39eaYbP+thPNJGIY1Qkk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rasland@mellanox.com; Received: from mellanox.com (37.142.13.130) by DB5PR05MB1223.eurprd05.prod.outlook.com (2a01:111:e400:5139::28) 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 14:37:20 +0000 From: Raslan Darawsheh To: dev@dpdk.org Cc: shahafs@mellanox.com, yskoh@mellanox.com, ferruh.yigit@intel.com Date: Tue, 10 Oct 2017 17:37:07 +0300 Message-Id: <1507646227-12338-3-git-send-email-rasland@mellanox.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507646227-12338-1-git-send-email-rasland@mellanox.com> References: <1507028429-23944-3-git-send-email-rasland@mellanox.com> <1507646227-12338-1-git-send-email-rasland@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR0501CA0040.eurprd05.prod.outlook.com (2603:10a6:800:60::26) To DB5PR05MB1223.eurprd05.prod.outlook.com (2a01:111:e400:5139::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 52e07676-e671-41f4-44a9-08d50fec6aa4 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:DB5PR05MB1223; X-Microsoft-Exchange-Diagnostics: 1; DB5PR05MB1223; 3:4S7PY5pz3iRm2BJW0DJ6Mej7xAumPZFTGKEyF+p2BYandym0+gTeKXFe7JnRjQKmZKITN6WCz/TxnPgD3pjjKhAs3/A7YiC+LUt4Hhnz86+UvXRAWT3docToBEg/wnlofE9G0jvxsYl7OilS7OJhTGuM1oGFQtAUA9gI+B/rAyM/nDixfpqcngfCVwEUya+BIVH84OVES2gdY0oWUPjuZfxmmiisKNC1wkaQsmYLDdog7J0RIrRAn//YFXwliosG; 25:THjJvV/Wcy70TOTv7/9PMGxR4fi3Oihq0yWqWwpATGjj/zr7lLCBZDp2WXUpQoFtqpgUmUXJHp/3+cTnjFwYOvd4XjqL3KPm0CS7xAmHHvMbnEa6U40FrEDz71NgNA2Gm4Dkh+Txmn5KJiNLiMtU4fycv+8RfzKxsdMlFDLLqaC0nZv3VD5O/j0LR/fccSxVkB46XzCAxBetQlgZ3QmW9qd/qCw0Quk6PeM5vghwmtZIS5w0ykqUpwYyeVsMX2cszdWeHF7Xmw1HvSwwEKnjocDEtIKtpHOgF7SnFlQxrmqPUqEswutrfiv69TH4w0QnTnkIWrJCP9jvF8R1dWVsKOJshi/e9/eNHuVj590qQIA=; 31:FeXj/wgxJyAwOvL1pGX/BPMXp9vB8LC5g+cRI8/ZYb0n0I0KAw3N9kUaWFH9PUtWYBr7yD3DnfIuH+8043LsJAzJTNn5OZuhRxVHecbPGCe2dKbcCINdt30ALVWHfW72K+bHCb50blybkbSkDE7O6alIumSXCvlYraDSmKgeo/ZJS0TeHaCgHTeP0eAFo3qFyqNaxkKIuAcGdDWPbgVe4T9mz57P4PS1vCg40SXRtFk= X-MS-TrafficTypeDiagnostic: DB5PR05MB1223: X-Microsoft-Exchange-Diagnostics: 1; DB5PR05MB1223; 20:/HIdYHszmr3FqTs8GB5I4aLY73zTGIYf23zyCD3YkmJNQ8fUNv9I/oz539NHY7+t1bymBI1cbmnDivTlsoSBaIF70JUsMFb1k5N5oBSkBfqNi/5dgaHYnvfYeh+wGKljJbg1kPTVRKWFVGIxN6oOaxkIOjreLk7GJ3v/08myvNAWdbTWOMJN8OGpghpCnCHA8wDpV4RWuXqVI00Bb5p3uDQZMNULcg5rgLfj+/XoIMvYKI7lBu5Tb3EsW2SHskgSYxeFz9SOIGKj+CnYspjrtYM+qxMpLdS71+wViFJr5DmK3hPo0K/rLWSKoipyM6YmgncVlJj2uZtQWKIBDxtiLQwkGBUrEtOLWkrnFgHn9ClT2AFKi2ouom+r2GkclcM017LdGFfulCVVmpcBxO3c+QLrenbeZc1kbBJUSU225kir6mbnqaS5+tq85nlnC4DuDPF+bPKplZLyWovcJVCJU83rBweC6yJMjt9onZAdgH2+O0aiq2q1UdWPGa2EY2Ik; 4:DQCeK+nvfDwhEL2yUDhebNk6GO41s6dfhnZoPkV4+fp0M/QrClHwVPUojaLplrkHKBg26T4dbjRzACOKUdM9DWb63IJAzlUhtkIpOMwoP48KPz5xwmlmHK4KMOjRuH6ZdH2lWpq2Kp2Ss1qsbiRRiwLk+Sb6Nq4wt0JpZexe0C5/M6mcpBL7qTksK5rmnqoXvtaYP6a2SfNdFeblP4j2iJgDckB0zw2Rdxt2Crb17R/mTISQG8TxsWqXEU6NlqGy 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)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB5PR05MB1223; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB5PR05MB1223; X-Forefront-PRVS: 04569283F9 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(39860400002)(189002)(199003)(33026002)(76176999)(21086003)(36756003)(25786009)(101416001)(6666003)(47776003)(86362001)(316002)(2950100002)(50466002)(16586007)(3846002)(16526018)(6116002)(6916009)(48376002)(5660300001)(50986999)(55016002)(189998001)(305945005)(7736002)(5003940100001)(97736004)(53936002)(2906002)(66066001)(2361001)(69596002)(50226002)(2351001)(33646002)(68736007)(106356001)(478600001)(81156014)(8936002)(8676002)(4326008)(81166006)(105586002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR05MB1223; 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; DB5PR05MB1223; 23:zTiSD0yC6+nD4shIxojFwVfuF6vt5s42FS4x4CMH4?= IRLbTcL2z9qPDnyivGrUfDBXaTg5jPhg6Hgi6lnwjdPkRs+MvgfQ0fcXCjGCgzw7tuWu644FIkRAayNlAJkkoX/XlJ3JsMyk4ZHYDo3KG9a4uwDsDzfbt1uePpQdW3Fk2zs0X6eN98OpMcygTepUYBLi3WVfTqeK2ePl3LkYCxjsq+z3B37Ow1/eu+1Tdxey4FzsRadWC9WGiGQ+Th99vGypub6yDuJfnRYT5MJe7L46a0MQLnnUquytYfnFWQpgP8b263inFteMTwRbvMePR69Asg4hVAP6yM2OorbY/PtQSI5L/CzdSJOA85iT1c7+z84tdNrOyQTQAgnenKvw0pkqCC+m37Y0Ei2jMPUFALfNZxPi6r2MWKSjp/viAwdurAEk+K92UVhwAjaAaYcAAHV7r1prjmIFSLBY/ljfiOwfsWbfFudYi6ECGYO2P5m9LsuDvkm60dNad+m50EZTSuzAy+xotWv3Fxf/coxHnco7vkNQwqjMDg0wlzbKDlNAetEXug4ALw6TlBxL3c3ejg5mlSKGgkOxGyFAh7WDmLrf24riP7g8+/w1MVR1Qi/6cmv9GdoLkafAzxwSnaPt6TOjXI8Ylxk6X9L45MYYAjkb5ctdp6068tKo6Jp9fWihduq5iPSLXZMRBMz3L31N8NFi/ww19QO8H5ykB/sGCgMIid5j9TEU4PA2Fg9h9BIKJOrfz+u2Ss5F68xHlBxYdsoUrs/YNvDAjwp6lKPRSsXBGsk7SQPUiAciFAVWFW7Sn8LjlzhqmqQ6hro1nGqEmzS9GByn1fiUvxIS3Bi65NiId/+1Fm3fJWGqJB61TIWwLm98R47mbMNMOclsXlxOKWyWyXriQZutaJQJFQ13JUpM0Am078YxOIU1iQfzC3r/DVrFfm5ayqx+3j2VQd7ilnrk2fa5ZrxSHFS4lo4I5q6f9sluowVvoojDhOYAoyFHgSsBMp2Fcf9gYrzWswm6iiY57obr88Aoz9sq4uDf/HnkMsR1mXu7x3NzdnS2jk2PV+nyRcHhwm9exFUMjs2khNuXUYv4TYC4DqHRyNMPVJfGv+bhVmCDJJv+r8uhfKlRBr8G5AroLEhHUMn/wlOA17hFvBI9L6IH7JAQDWNgTHOmVxxS0Vs5IHUak/UbLkivmI= X-Microsoft-Exchange-Diagnostics: 1; DB5PR05MB1223; 6:OR7u2Y7mv3jsr94QAgQh+v4XYFUTym4RNSiOdWfUuCdUq7foepiATaRJAYSGQ5iMZVJYhYgj3hijOoY5v98JyjSJSx8EdXUMnOHQJWFzFa0NfTXg8EqiM5gr1rgaF9zYSNeBvbg1wzsFMMxdsRSX5nD3aTT3jhkEacfekkpKPhzToJ5GEMxHPuAd33aNspZKuC33s75FCke5Jg5Ra0a2gMetrVts0koLz+YpxPgonvHKtE25xfwTX5hhO4gD2rf7BxY1R+1nq5pJV77x8McUxF3vxJq/csK+caGiUzMEYS4pTo79g5h6D1EcJGJUXe4fEe4GOuREqeM8WhONBD2OKA==; 5:4SPtLfPy7r36nVzri30cb5F/jXq+lmadk8KCxTp8+Ythsujyx/VPGCfLIksHhQv7f0ftpmOc4Xjf1epS4MNN/XaFTrZ9R6R5hHLkJPbr5aXB/QvlVdd6tPQxlxoOQnVEioCn9w0ODFzUW3SBftNlbA==; 24:1ZgcKTjXxshWupPA/nlg+naYtxoCKWxCUf6sYVrVEJ01rQFXgVI3hHgy7IRBrr0Gc0IGdwGlFebAMMZGtEKFxgBcM1pRxrOdi4NaTbnoxP8=; 7:TOMiuU197ErrZ6nQPirUL2PHVLG7Vfahd2474S7mP8SzSTKpa8eDcfFtzyIhVQAlUII0yXT3TZn45Mq8qAdB5ZAb0uSTnWH2j0JuHSxbemaKTD/B0TXCKumflNAmyv3mfKX/VnU/sVCRHAj0WZDJnfdOevfiHhcZ8GzUO0O/+sBRjgMie61FRoslpCJh+Urp25rHcXTyhgLTLO08gYMdFHjAefQDmGIA+YkqAjlraZU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2017 14:37:20.9423 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR05MB1223 Subject: [dpdk-dev] [PATCH v9 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 Acked-by: Yongseok Koh --- Changes in v9: - Fix indentation issue in mlx5_rxtx_vec_neon.h 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..eb17a63 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);