From patchwork Tue Jan 17 02:09:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yongseok Koh X-Patchwork-Id: 19462 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 [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id C79E92BF3; Tue, 17 Jan 2017 03:10:14 +0100 (CET) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10078.outbound.protection.outlook.com [40.107.1.78]) by dpdk.org (Postfix) with ESMTP id 6BC2A2B83 for ; Tue, 17 Jan 2017 03:10:13 +0100 (CET) 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=c6utVeMwafjWfr1V7edTlLEj2tVEgjC1te7+t2iIxG0=; b=xnKv4HpMmVdorf433aXf9m/w1bX4bqdQbOiU3OHuFDnsMGvi3z/JgCI7UC1MUKWpjMI5gc4cJAQ8XeoqMmgHXP6inL/G+o+zzHdHxkke9lnYjObV3UvV7iLDVMmtBh4nnMasG5BKXgjTT5DNWNeyWYwwd+mayxNeXB42ktIgEaA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (12.250.235.110) by HE1PR0501MB2457.eurprd05.prod.outlook.com (10.168.126.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Tue, 17 Jan 2017 02:10:10 +0000 From: Yongseok Koh To: CC: , , Yongseok Koh Date: Mon, 16 Jan 2017 18:09:40 -0800 Message-ID: <20170117020940.37453-1-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 X-Originating-IP: [12.250.235.110] X-ClientProxiedBy: MWHPR10CA0063.namprd10.prod.outlook.com (10.169.238.25) To HE1PR0501MB2457.eurprd05.prod.outlook.com (10.168.126.13) X-MS-Office365-Filtering-Correlation-Id: cf928d54-0996-4e04-33d9-08d43e7df7ab X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:HE1PR0501MB2457; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2457; 3:CBhqx+i6yBD9MITEcIWilWKWnC/PXJByVb9ZKaie12LfhE7BTiXndzEcIDhCRq7tlynEfmd/GeA63mZvoIOcTI1dpNytrBcwY5ToSUIgIBxEn1LJMMsIcXsLKPSlzQIb+QhlK14gsCAcs5rHKHRbL9m4UeghpsyfnUq5LWNrdJtuvq56JHYcaKEXveFdx6eF7FZX4jFQtq1YAML8z3Z52aggclzWt9ShPCWpT58ue6sliDKwqY32OW+P2TZoOCHPpfYTX/wpp6utgayTC8GzDg==; 25:cWpWeEMf6fM10Hll98HuuMxfDgCDdqD1Urj55++s73o8FHm6xnMw5fVCQUnas98v1gpOcueJuu7s/Yz8vM6G3kitfbtIGpaIc7VTYEYv2hGEq2dUVYmxWC/JHEShwljPFp2nEWKeLYSTPWz9rZhJ7oReTsJpQRKkHdzJz1vfFjzFribx7UuRMqwoVdSwc8smANpe4xYgWAyQJK6EgTo0wlu789bniW51QeOf53e1iJPtEHqMaz2NCG/99qcyh04sjY/JzC5ZoFSSwGODiBDQxUpTFO2tckvzSIubIU/q9IzHM7r+aj1riZGzmG4d7o+tJpNTXiEGTEOo7lfij4EEMzg0bp04GwqvM7Pz1DBG+w3EtQf4wQqFY7hap/0tGuI50em/F5q1bPWw93j5cCeFxIbfZVTRL9p9q3XqAI1crhZmQ2ghPiPlcLZWwnw9sc1PKsO/2JSyclz1vUIDlHC3DQ== X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2457; 31:vZXigGcK/JmIGCgC+STBxhfzraw+ig9kcRwWjGjP6LlUp/WvMAnne6s55n+zMb8frZF0teYOhf1CYp0oXRb0qrLHuzVHHY3a4vQHd39LZ39fDt9HLJkGGZAMQlFNOKuoLZZEFBCqKmns9n4NbY2ExdV3+4Il+G7GwF3o7Y/tAgHJpIrZiowGBZT25quLk/8O1UGqiWBqyYcSvDEAoNxGK3gz3gFPalZsHAKmNTcL4El1JP5qrb2KtCXe7G3iwKuZ; 20:ur1mOYdP2eLHq6aSaLwWL1olU27Kq1C33FauivAcSJVF0v7IGezYG//alKPrRiLQ/ZEFW5BJPEc9kzCN0lweCmjxBOUaz0o2Jkr04LSeFAYQrTd2/mmdc0KmZZMWFfN6H8yTjFY/D3+uzIUHu4e/XzHPx1t1AlBw8KZdNx5da4Yu5pUzB79Fpq8yhL+zXld4tcRaN0Gmr9XKP+YZi6W3ncDF4uNqLFe0Bb2rfqyID08i6wrZe/yABDG+qBruUsK/wvZ4+zh1FvOrgLNs8xCSwHFsaqJdglgizkwGJGEuY09bk55lLrDFWe/NQxQLKUt2039buU7ifrA9XnV/rKUeRKI9SfM+Ky6BNNAqy9WAyP/kbAej/+UX6OhBYEvcUO8ILE864ockOCG0itKewPhOulal+X0tmvkRAhIM2rzM8MsZfxgd58cvoNElwyU0gqErymH15/wIAccnzHGCCvcWAytjbtU7XuyRpyYAye7pQJplH5QE6LxLguAlaYHriiBG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148); SRVR:HE1PR0501MB2457; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0501MB2457; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2457; 4:jU75rULMp1VGjw40uOu5ftrsowXCW8w8c6oBZz+ewcs7YofZbmjY7y+eSJBaeUuATzyIqSe6aiOBD6VXddiBzUQSKMkts8w9GTbsnX22Nxxyl5hgEImOm7tX/3XtQDyv8L+irIm+nO6WBIlPbBCww5Rrr7BgrO7kg0k+7Nu1cJdeGQJaa9N5RCNSssO5l7frBr03d1CD+Ejiyuai61H8hJev/kaPz76TuhdwzYjysTH5vELKaeqCOQPKf7R5q3cidEJWMuQDGM/5Y7fo2Ik65s4DWpp70mztWFwPijTr9qH3yQ6aCZedQ1IL21W3+v1l6SjZewXfy9JT2TolroEnh1Oaemu8rEm0jLSRc/Byp3/EjRWGHsQl0+gNmjpdL8JzJUhfVvikaOOICSJ+dpjfE3ODU9yPLdIRIUroRjnQezKmNnmxaFWsFKkl1ZFjm1PaqAMnhAdVK+w57gjSI+vk6RCUJ75I94u8Ezw5nMiXqZBI3gNLE2x8zdsRJW/M/lcWxIiLZeIUhh/zfMUuHEU5Xmapefq25cVAAhoif0LCZxt8FQVivAh6ECV9l6A8Um7l6dy95PwC/mQCsOSpB8GQeNu9y3GM6JuexgUnEuOkYmk= X-Forefront-PRVS: 01901B3451 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39860400002)(39850400002)(39410400002)(39840400002)(39450400003)(199003)(189002)(86362001)(5003940100001)(4001430100002)(81156014)(66066001)(81166006)(106356001)(105586002)(2906002)(189998001)(42186005)(21086003)(2351001)(4326007)(107886002)(50226002)(97736004)(92566002)(69596002)(47776003)(50466002)(33646002)(3846002)(7736002)(110136003)(68736007)(305945005)(6116002)(8676002)(6916009)(33026002)(36756003)(1076002)(55016002)(54906002)(6666003)(25786008)(38730400001)(5660300001)(101416001)(48376002)(50986999)(30001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2457; 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; HE1PR0501MB2457; 23:Ai4hrwUq80lI8rfVMSX5HFYYxgAMPlgbIFUDLzq?= Ujo13cSZV6Rd/y9BdaYydcgMAMHoyWfbOI6Ll2JoU3OgAaSAyR/ZxvlgMrsvSW7IGLt1GC6uOS/5FeKcPQhUXTFQGlohlOxLUlqahIgL2o9soAug8oA4QQ8JJ5TlNFEyAaTXHP4SLLj4+tSZz1zPHPk6DqSGqsA8nZaYHrKJSioX4ZXOlrFF5Pi0v8FIqVepuXqbvyHg+fYKDPlV6MWYP1EpwNPMch6DFzvbpgkUcuOIELD6dmJaL2//fcRcHkoeqgxqFNQSr6Zh784wjYafYkzFqkzOt/ZSy5qSqZkiqP63eiy0Q1NqRCSM0lbB5khJkX9Ksrw09L1JtTvSNrhUv8p6T83Ni7aigQeL3+bN/AajB0ViI/MjrvwO/z4k45Raakb4I4oFk8iz2kDvwu3iw6Tqu9c4oNgjtNFHzjl9D6UWQWflIrTo+ypfHYblrgKbcrBXw2QDmyZAwVr6ecGXe026ZmxAAx80jEQH9Hz2ZUQv0wKt4N3ZfMCLhRy22MmzKxLLckbiLmGJR9sDlwzZxhYNhBAqGVV0y46HUuTwjMrRALKG2lQ4m/jsyt8KnIcZJN0Hwj/9Fx89qGE0Zevkni0+y/GqQhjayzNQMOVBNY7VJJEOain0YbSMIpXkjbx2MdFVZKbBaGmTdF7mJqDbPp9dyNL9+OuAnpBZchQqZyYy1vqNKRqZg4kksITl+HwtqE0NWB6ZXUxx6jYC4fkDB0xw4apupOaJ+ZD54edZVddxg7LIeLh3/BOxQ3zyIDsKj7Wy9HwnOfeXSR6yNLjIyMxvRCqS/aTFz7xpUbKq4AkSWc5WdsYPjEI5J6jOeB2IMVwJRUoCP0dL2+yfwKP15/wP0NYbe1yuq0WpOvvpifYbZMQVTcG/ha/xfeRQ9wRmul5a827EvXT+ilTpIgefPclXRhC5dWqtMUsfH4cFedPde+MLaOpx7PKCeOlvWhDRKqOJjq5IZzkt/sIaSxfcpT/XXZYR8hcG7n2vcxJY2qc3nWj1Tp58LT9d46Xdr5uEblkzj5eZGi6LcLRYnTCxuTgNbJg057CXvLBWrfiZfc8q7GDsmXlUvZ4V01lxMlRUffNqUh9pbQEFR+MjaKBafRhwEmHrvjLa7Dmm7dbaCR0ZSBsAhTBI4VGAd6FnAyJoktaZkECcf3KEkXeTSt5FUaau9g37rbdvRJVxy/o/SwWnEo+8EWfJO65eElqI6dQ9KEfBxlKiAP6hYBv4OYreCEIted1vBmclFVSeTprdgRB+ecQ== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2457; 6:rvaaVXY4E5Q5qQM6sLg2tBv38iYNlUGMOqiX4aNGqELDje8HSeeXZjXfjws8MDlo4a9otLFUB/Tj64dVGO+Dgickh175A/sM0d8RhnMolJOBhd+BysUCrWpQ4UFD8wX4ThWCwdbIKLi0eI0Rj5Z7QUmulOR4ucVNmjn0tYuevV3UwfNHfN96p68JOiKQe9IKxCyXDTAqjYGXL0TLqB8czaggjMXuabI6OJj47OltJv1Fg+VnKXShWXpoSVGxJQfa0NRKue3RriEeWVhG494HWsdHUgAFpkmAtrQF874Tz7CQtFWLU/ikc44SJDLYAYjnM9WgF8q/CPyWHqI08kLbZA7NwKBfiPHAa8dhu7KQwNqaFvxwCuhqN+raz8lVRRNQ2BMaC4qGgU8KB0LQBCv9R70CP5TD7RvMqZDnXHeOhdkAm9BkuHQFy6oc+2iezb22R/9BQU3EbNn5kbiBw9Hvbw==; 5:41UHVN4X58hvcxQqZQ8NbWNx/Ui6CM3/vhEydNKf92O9I5Wc5jlFfkSKpUmUZEdNCBfK96STC4bWthEwNfCC+Y0O0AhTnrONecWcxTG3VFUGYGy7dr0PRNvy2n9GmQ0GLnJKCV47lNImIzfgYq4RyQY9soKBzxPpYTL3Nn2l1SE=; 24:7q4Nc8EJ3Qaw1u/MFWOcvXHJQfs3/4JyV0GZdvuDBKTsOuQas2jtr+1ZMLy6miUjuCdMx7jYoU7b0Aioceh2MjRHQN0mpnOaIjNpjwkYCOQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2457; 7:Bi6wBk35ozzQgycN62IyDpk9A/wItf2RsQ04DHjPhZXF6Ohz/TLRfsIbnDDJotfyvjAW+OOAAltGB61oBDAOxhgir0/8XUSjLyu343zfMZ+/mOI7kiUdddWJe17SRrDtvuf/sh0yJlVimYUSsVAjwH+K106oadjb5BkKr5ice2eFR1PD1c5o0l27LCv+Usbusg9id8OxnPlfOP8cCNXGtHV99kavMu460qX3k4bWSql9II4oLV4ZmNE6OqXNsjja83GVTX6tgm616D24kKERRIILumehPwa2C1Q5A/IlspY4b927+yrmhODqx1J2wN5hD6p4h/skWg3LOuVNsRgqLLOIrnlyf0srYe4VukSCdYXHSUfttu8c26wII8T3iFM+b1eLwQJoYo6s+Y5hT9CQzcDtJdDihqiGlg3aFhy/njPjHFQ62sKHTDZMGsaoIlSeMpqX0lWZw44UU/vkiXaXAw== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 02:10:10.0798 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2457 Subject: [dpdk-dev] [PATCH] net/mlx5: add prefetching Rx completion queue 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" On receiving a compressed session of Rx completion, prefetch every entries to be invalidated. Also, invalidate consumed completions per every 8 mini-completions, not to wait until the last entry is consumed. This helps to reduce jitter in rx_burst. Signed-off-by: Yongseok Koh Acked-by: Adrien Mazarguil --- drivers/net/mlx5/mlx5_rxtx.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 94157202c..2ae949295 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -1156,6 +1156,7 @@ mlx5_rx_poll_len(struct rxq *rxq, volatile struct mlx5_cqe *cqe, struct rxq_zip *zip = &rxq->zip; uint16_t cqe_n = cqe_cnt + 1; int len = 0; + uint16_t idx, end; /* Process compressed data in the CQE and mini arrays. */ if (zip->ai) { @@ -1166,6 +1167,14 @@ mlx5_rx_poll_len(struct rxq *rxq, volatile struct mlx5_cqe *cqe, len = ntohl((*mc)[zip->ai & 7].byte_cnt); *rss_hash = ntohl((*mc)[zip->ai & 7].rx_hash_result); if ((++zip->ai & 7) == 0) { + /* Invalidate consumed CQEs */ + idx = zip->ca; + end = zip->na; + while (idx != end) { + (*rxq->cqes)[idx & cqe_cnt].op_own = + MLX5_CQE_INVALIDATE; + ++idx; + } /* * Increment consumer index to skip the number of * CQEs consumed. Hardware leaves holes in the CQ @@ -1175,8 +1184,9 @@ mlx5_rx_poll_len(struct rxq *rxq, volatile struct mlx5_cqe *cqe, zip->na += 8; } if (unlikely(rxq->zip.ai == rxq->zip.cqe_cnt)) { - uint16_t idx = rxq->cq_ci + 1; - uint16_t end = zip->cq_ci; + /* Invalidate the rest */ + idx = zip->ca; + end = zip->cq_ci; while (idx != end) { (*rxq->cqes)[idx & cqe_cnt].op_own = @@ -1212,7 +1222,7 @@ mlx5_rx_poll_len(struct rxq *rxq, volatile struct mlx5_cqe *cqe, * special case the second one is located 7 CQEs after * the initial CQE instead of 8 for subsequent ones. */ - zip->ca = rxq->cq_ci & cqe_cnt; + zip->ca = rxq->cq_ci; zip->na = zip->ca + 7; /* Compute the next non compressed CQE. */ --rxq->cq_ci; @@ -1221,6 +1231,13 @@ mlx5_rx_poll_len(struct rxq *rxq, volatile struct mlx5_cqe *cqe, len = ntohl((*mc)[0].byte_cnt); *rss_hash = ntohl((*mc)[0].rx_hash_result); zip->ai = 1; + /* Prefetch all the entries to be invalidated */ + idx = zip->ca; + end = zip->cq_ci; + while (idx != end) { + rte_prefetch0(&(*rxq->cqes)[(idx) & cqe_cnt]); + ++idx; + } } else { len = ntohl(cqe->byte_cnt); *rss_hash = ntohl(cqe->rx_hash_res);