From patchwork Tue Oct 3 11:00: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: 29530 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 BEAE11B32A; Tue, 3 Oct 2017 13:00:48 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40068.outbound.protection.outlook.com [40.107.4.68]) by dpdk.org (Postfix) with ESMTP id 3F28C1B32A for ; Tue, 3 Oct 2017 13:00:45 +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=bU8xRnjiKKVIRJNtRmpzWwkuZ1zWcuDrEcccBI8Qs6E=; b=PlXkzNL2fYhvOxYaTeLAAhNeB9kzUtQZ21wIMuidMz9SaoY1KcNdu6U2V5cfREaaIx6WddiNxgdyVmS29JHqr0GtuAoalznwKI2rUmuA0l6JltRGJUnugHvsM0rgCxopmMxKChCh8xA8/VsurxnMQfJE/lNLXoKKqgFS9yy4KQ8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rasland@mellanox.com; Received: from mellanox.com (37.142.13.130) by AM2PR05MB1220.eurprd05.prod.outlook.com (2a01:111:e400:8450::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Tue, 3 Oct 2017 11:00:42 +0000 From: Raslan Darawsheh To: dev@dpdk.org Cc: yskoh@mellanox.com, shahafs@mellanox.com, ferruh.yigit@intel.com Date: Tue, 3 Oct 2017 14:00:29 +0300 Message-Id: <1507028429-23944-3-git-send-email-rasland@mellanox.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507028429-23944-1-git-send-email-rasland@mellanox.com> References: <1506617303-32509-1-git-send-email-rasland@mellanox.com> <1507028429-23944-1-git-send-email-rasland@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: AM5PR0602CA0002.eurprd06.prod.outlook.com (2603:10a6:203:a3::12) To AM2PR05MB1220.eurprd05.prod.outlook.com (2a01:111:e400:8450::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 31caf029-5c59-42b1-be46-08d50a4dfe1f X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:AM2PR05MB1220; X-Microsoft-Exchange-Diagnostics: 1; AM2PR05MB1220; 3:MhQe03xcjJDkO7PbLqRZ7j15/OBK9kYXjLERBss87nJczTs3Lo5npqhPsHhBvWoWC2kl5xUXnCPO2osEgu/CcRZjLXaFkZ3EB+nPHJzPGtWPuw1Icu6mCV7ublYa34vDZkx/ML0dTUTfCupE+/feDV0hjSXtOu45jHoN2jPZ+UyvvEMeWAd0GXUXvN/xFElOuWEJ107L4vq4nbyGmYKyeINwFb0HBRaVqCrOu2JoCpQOySako2+UDFQGBki8ewNu; 25:3bemlqcP6KIwpyDvAGwyMEowKbdXHsWFjo7gXgtC4JkgD3Lb2ZNzKDGO5FIL3oHJS9kGFPS/FSBgdEwsP+wUd1hSczuCdM0JJfgppWHT91xUN87RxFDN7hEHcdfQ7Ayzwdprn4qcYSdtEVTP2R9UoVheMxOrxiAcGu4t/OSHMpC+8yMfnFrO3ohjeOlb0BtCXzZjC8RdfekDiueTyfX6J84BAYG5d+gsV6Cq3u4+3SayUCfnPGEJyDM8MbD+Ni3f0cQ9W9XepqoG81vFfxYNT872HpyhFqMiR+nrMvaZBSxo+nNpUVWCU3Fu1nylnsbJrCqIu1umBLuC98pHCFo3fxBKCHhgjcW61tg7vlP4dt0=; 31:gAiQX85rT2TxZp5JtF/gjIMBXcXkP8nUPEWtqDXILFTbzzEACWjUNoK323H2DrL7zEnzrvZdLTPij1mNzbMf3zmKCQofSLd8kIGafLIPHsT3R+OXY+ri7mPQujGp+lHJGl8gU29rmBGlDGxbEkt/57O0+6czQnc8CniFZi0m0vytbIP9mu0hiPD/hchbfF0Z1q4ibEm8NTTK9+CFfhfGQhLWUVgRwqtwxyRha6cbgVk= X-MS-TrafficTypeDiagnostic: AM2PR05MB1220: X-Microsoft-Exchange-Diagnostics: 1; AM2PR05MB1220; 20:ezXp6KlgbeC7QGP/OB7LlHK8fUDucYqWhkGYatv5MiNyEUy9fdYa5SIemAWS4FYjAW1lWSkcUe4heOgei07hvZZUBKPmdjKSG6zZjjC1zD0fnq1dD8eebHgp3+jAMbNs46HGeAII316SIGfdTsV7RJmttnJt9DjlmbXza/BnNLUZI5lrLLlXwcZFZwH6SffQhj5xld5PzyPadOmE80u6uh2H0xDNNs/jwx26Q7LCahWeRASO8vah7qc0gbcW8jV0+8RWbyMi33xqZTIAMNfq+sR8EJ2mUVpfxHVAx0zn/rfYwyCCR7p3FiSYuliw2n0p0WD+6krXxUsEYxgKK7wYDyhKWsqJtPT0m2zqZxCz5DQofL0qiFI59u77yBFln/15uOxQObmGeN5p4QhWhSdnSJDr26zSP23aZ83t8PfYNO1kO7Pl4IawT7LWXP/OHThmHdIkmaIH33yOInfzIvvx4a/D/1Js37aYkP7g0bLSq+mdpFeUhtI1H24NcMCNb0g5; 4:mT+U3pQEiHzNMI9Hvk+WVxHw9GuruwuH3BST4ofKZN9xWtjlNyIzx1RQ/dOAVPzwk/gsduEmYN2oeVWkRyL7Dx9MQqxNo6sCl/YVX8Cn2wriV3ChZ5vbafJOPAcqpM56VJvhwvauovyH/JCnbz/on0BzeaXIxjxfpAR4XpliCGMdIEUTncM21pGRBqKlfjnhzhdGA0Z7E6EH7oznho/XXrgaUStb+jXBbh6HyUDaIJf2N27Wzu605Xvei0ipKICO 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)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123558100)(20161123564025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM2PR05MB1220; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM2PR05MB1220; X-Forefront-PRVS: 044968D9E1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(39860400002)(199003)(189002)(101416001)(97736004)(36756003)(4326008)(2351001)(2361001)(106356001)(48376002)(33646002)(6116002)(3846002)(2950100002)(76176999)(53936002)(55016002)(47776003)(50986999)(50466002)(66066001)(6666003)(6916009)(105586002)(305945005)(68736007)(5660300001)(5003940100001)(7736002)(16586007)(2906002)(8936002)(189998001)(81156014)(8676002)(69596002)(316002)(21086003)(33026002)(81166006)(50226002)(86362001)(478600001)(16526017)(25786009)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM2PR05MB1220; 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; AM2PR05MB1220; 23:G58YBPNxzG4LPKXw2u+7dbh4wVMKMPDrcbAxanLL8?= IVKYXNSp1iEpcNjxoacLrrugb09s4RHbBdUclm1f7wGTaU017BGTHVb41XdvOkM9GZrVsIm97A6B7qntxdCDTjW3XIQ6UvnzPh0Cxr3GCT//1zjhovBCq7xrfkq184y1iX0fn1uG+oetA2HZ90CrqdcUnDz5zLij1WNclPbhAz+8Rjk2RfG5rcV91iL3Ewoe1Plnwo5RjBtFV9LI7gdmDVv+fkmzrsBtQz18+4vcCitGK9dKx+eRjgSv/dWomNMkvFa1/o0XcPQZGu+P0YlZLcSvtOySXsz8txQRQMIgm3JtTm+kIZ5n/5OGN891ShVPTJxgnndd3inxdEGp2zzua1VB+19L2tALimkDjQrWIwg/NBbM1aHfNo0W9riKXOtQu2iN0NWumZUoNK8pKRNiiTz35iSjpFTpLHDOV1Ss+OEFXiRK6pdxYlfhTBRW4oaRdCmfoHp7Vc30grHUVkxi5/ceIFH/hVv1BNOCpisbB/tJdkYzO7oK520RV6PI8utv7CYvK7dMSSRylfE6r7Ad8s9Cu/UketBpbLk0bnMNjoGY7EqyLnp4k70Ewor1oQKd30/715pqZWZgPl00V4MEto5iILFAEtMZH0OJBpPbaCBaHOsQkSttr8o9lJdBRm61DOT7LgQOAt8hl5yAvn+pHVJhGdvi5U00yFwvRDfvt/3AKwz0HXycXtn4wwWGOOK+cV57zRHc3wq08rzCQg+zhDk1dHiviBwPMHBAG9ZT+QEFw4/i+LrxswDd8oCJoDUuhgo/vBVHuf+LuOu/4hImVanLn7RtD/wvp6yolcvEbiThTZrtll9b2fe50mSu0wZSd+dt0qj/VyEWTgxnlHXsBChndcsBl6gKgGn/lH4yOFtHsVN5d36fVp2IETRHaEXsEtbni1lFq9JX7TIMJ/NTTXwu2GK9LYab+Ev7L+p6Nmkc8BSh4b/QaiA+fbZCsxJiGYSSXgqio1G5xrDC3CO7hNtA/NlSWBymAgOmkeNCOib/6CRzwHEYqbFhG9dcKXoBlP9IINiPIS+JCW9CQUeZdGJP8uaupWQ09qOLAw2tzxBshS9JzOIeJs88+snUpeLL4OK6lNyHiABdTUM9ZZufMU30mGhORtZIEKnBb3plJdgWwoMqSkQjGo6J5D56SPysOk= X-Microsoft-Exchange-Diagnostics: 1; AM2PR05MB1220; 6:GJHC7zB9xIUlI2OFBMEmHZhQTdOMZIui9wpg6jFzeS1nDE6mBK9wABW6Cs4RaD0sGR+knrOqRBMYssP9wDP/hzU71DC9FdVQ71hV5Irpk+BLdlkFra0ceAT9G/LVUxumAGCFOV0R8NGZrVOAm5q4WuOLCFHD4v9MxHemwNo4cGTZ2+3xl6v1mOy+Vwk5zsm3DAeJY2vD3tkRIo4gMfDpu6LwrdGW2w895Jgd+M4cRcoCWREbhNkhdMbKVIcK0ZwKJdRU0ixRMErwk/6pfqD0geUihi37WQVtAFOuBNGORm5qoTbguTYK2fRZhrTxAqBLywaY4/YuGjhkx34oUpXTYQ==; 5:A2dHTnSHyHjcWjxkz86BwvuNrsqEPrc3rpZGggD+uyATXHoPX0g9sYWBFZHdGssLcYdRZ4m1HIUAMLcb5Na4zdDqbM1LbC0apTW30n+E9PfCnuNoUTOmu7htNXifds7CcVzfjQTptKRQbiOBggPoG4XsqziNHr9/ANRCvdd3AbA=; 24:HzoQqYJX7dGrbeSlbFtAXVVd7wOK1Jam5qASUdcdVNIebOMhNi+EgVqV62AXfi/re5C2mUtUgwgJp8kc7KgyUvorFzi85B7/whjxA3AC1l4=; 7:gj/FGaHbDt2qec87MKZHLpV+BzL855wJsmfK1j53vwIqNpTRc8vwJ0u8OwI1u1yGEB3IsxOk0f32fGwuKXG6VaFoQa8aFVssA0boVG+vzU724WOB+so9DWwftHFDdMTTtHweIuv1oANf4L6rEJ18NZFmGd7TawlGrAnf3g9GcncIhCDPealonbc/PbAQUaq6IP/MlhCa8voyuOy3vowRF9JhkMQAy6E/V7rOwwcJ+6A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2017 11:00:42.8483 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR05MB1220 Subject: [dpdk-dev] [PATCH v6 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 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_sse.h | 13 ++++++++++++- 5 files changed, 26 insertions(+), 4 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_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);