From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0072.outbound.protection.outlook.com [104.47.37.72]) by dpdk.org (Postfix) with ESMTP id 25BCD324D for ; Tue, 23 Jan 2018 08:24:55 +0100 (CET) Received: from DM5PR03CA0053.namprd03.prod.outlook.com (10.174.189.170) by BY2PR03MB475.namprd03.prod.outlook.com (10.141.141.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.428.17; Tue, 23 Jan 2018 07:24:53 +0000 Received: from BN1AFFO11FD008.protection.gbl (2a01:111:f400:7c10::115) by DM5PR03CA0053.outlook.office365.com (2603:10b6:4:3b::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.428.17 via Frontend Transport; Tue, 23 Jan 2018 07:24:52 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD008.mail.protection.outlook.com (10.58.52.68) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.428.12 via Frontend Transport; Tue, 23 Jan 2018 07:24:50 +0000 Received: from b27504-OptiPlex-790.ap.freescale.net (b27504-OptiPlex-790.ap.freescale.net [10.232.132.60]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w0N6G0e0023569; Mon, 22 Jan 2018 23:16:22 -0700 From: Nipun Gupta To: CC: , , , Nipun Gupta Date: Tue, 23 Jan 2018 18:01:10 +0530 Message-ID: <1516710671-13897-7-git-send-email-nipun.gupta@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1516710671-13897-1-git-send-email-nipun.gupta@nxp.com> References: <1516710671-13897-1-git-send-email-nipun.gupta@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131611658924667392; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39860400002)(396003)(346002)(39380400002)(376002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(51234002)(97736004)(85426001)(498600001)(48376002)(54906003)(104016004)(68736007)(50466002)(16586007)(305945005)(6862004)(50226002)(4326008)(316002)(356003)(86362001)(2906002)(575784001)(2351001)(5660300001)(59450400001)(8936002)(105606002)(77096007)(26005)(8676002)(106466001)(36756003)(81166006)(47776003)(81156014)(336011)(2950100002)(53936002)(6666003)(76176011)(51416003)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB475; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD008; 1:XHKdxOENIExEdFqhVV/8ktnBcHfDnREj1LJ1ISuoSYzT4K4BDm+qwUykpMSuWYQ9yR6KMapsSmy9b3QBUVUmK8NaKDwHjihwYb+MZny+k5TerxvJsBFI1refCGE6cczf MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 641b004d-4b6c-403d-26f8-08d5623264e5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603307); SRVR:BY2PR03MB475; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB475; 3:EaxCV3l2ZerglNBrz3VV4JuKw59p/uiLmVzsrhdRFZ5sWKj3W8CZtIelZa5Zz8UTUGGtWAhXHjaEemI/KgIZQosw//c0xfLpGpajLwikJWHtFSCRWRtN8lAwwxo+Nne67OYKiN5sqIIUOOBb/6UKeF+tf8s7PwBpQgqeID1t72+5QFtvkTX8NK2M2D7sq7IgUSXhsob8dgDW+LBJPjWTD9WOfsZdeqcTbmcVONXS0Urqk99VO/LC4R61ev/UWetab3gktF3QNfIUUBnL9aHPAYkah/+CPuR2T+7erOvnJGVclzMajrLZUzUlmHdlDmzI4X0HALSiFhg3dievmLtml+ijO4boVBdikpU2OWAa8NY=; 25:GJkROl3xhPUS8f3X8WYdhf5f0v3xcaO99iKpSPbcRGZQ2YdjgfRLefDqEo+knqX5XqmuWOROk8aR/JpRhcremEu9IVVczXSMP6DjZ1yJ6ARZEgcnmOxMREIsDtUGWcPz6H9wAb4b1P/M+b9a1tNCrRwWsCSfaNDgjiiCZIaplGdZoApkthJz94mYlPhsdIDE7Jrw6rx1rAm6c5xdrThXev5ivre9VBTOOFJVHN40TrTragfeqN5M/A/f8CKLklEtsEOcnnLtLyU/AylbV0z03rCb+k2jZn6HTVJoRRniCmBuoOgW1BJ6y4dr3ZuQaQUKzoho0B8tpqSa8QbJmMpFjA== X-MS-TrafficTypeDiagnostic: BY2PR03MB475: X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB475; 31:VQAjEN6+rTfZ4eX5uBmcf4ktNK1RKnONLw+whH5np5eSu+4Vi9/NWrlpkQHJS83+A7aPn114pXZwb779PWZ4AaXPoutDZCfE99irfQ4ZsvBBEw+hZEaQut5TsCArtchLy9i36efbmU4OxzPkFa6+CpxmOO1nS6X6q3uSyHq6h2L+phTa9z2enPvgaBk4ouX8Bbpk/rHF/JuY/GEYpgX92rFTX2UHVy6zzgExGyv4UNI=; 4:0EFuFahMsPcXc+xt7zituo0UyG8vrbhpdWQwdO4gpGBZibz+88J5uPo3oNsHjWXbsGZhBt9tseeksAnBqJewdgRMkGE2ga6oPVbNHVVjJTlCiBu5q9m0kNKKpVlGu2c6k4qQmwgk7FHwPtg2k4CQUrSFlh+GiBXIGOi1p/ZRCcV4FmcBj7rzgP3ZGkjxfhBMREbOiEBf+dw7qylP01aWc1IQ4uE3UJfuuELTGziDf7BrNOudXGuGbPPxM2GV773z1iTioSN0gpalBK99FT4UFgIE6R+QiblN5t5fIZZOHJ45EJM8HdFDUArZZd+k16Rarfv/9XCCrC/7qcDuCzjEoBzQkPAgR48/HCETb+/p6E/YsOyiXViV6O+puUa5VFfV X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(227817650892897)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231023)(2400081)(944501161)(6055026)(6096035)(20161123561025)(20161123559100)(20161123556025)(201703131430075)(201703131433075)(201703131448075)(201703151042153)(20161123565025)(20161123563025)(201708071742011); SRVR:BY2PR03MB475; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:BY2PR03MB475; X-Forefront-PRVS: 05610E64EE X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB475; 23:YEmjQeYGuvCyYIOIn4nSxz/z1P//I9l1jvs1z78CCO?= =?us-ascii?Q?yOQQfp9cYiXb22NjxhaiCb4lQeRSK6SurqqsP2UepIJ5MKibtozs535WMgYB?= =?us-ascii?Q?0A/aECmk7YSqZfABxiPt8+47v9VxviQ1DS+ZDiKoAAFwTt/7F7jJ+0hnYoWB?= =?us-ascii?Q?UWlNMbyxE8BtvgZaVXZBphq9hwtxBsFvbM1Jy0EbN5btEvYznA6z1I39sNu1?= =?us-ascii?Q?fE9cmFctXrBjKzRD9A+u6q3L1GsBMqqGkeg1dao0q83K2lV787ZqcOh0HQkM?= =?us-ascii?Q?y/hlNnOIR6WME5I1/NbclRoPT3tWSKhz1q0qWxUFIP4+MjwQCojVXKSaoqno?= =?us-ascii?Q?eCRb7gx2Dn6YFrG8EmOEowHecYYC6UI2LdtwpM++NVLCXaHPpvB00MxR3+8Y?= =?us-ascii?Q?e94mFH/q/ZiDn5uqLM9LSBurveLWKaIGNBfDTKbxwdUVDgKFOvDF+cM49R19?= =?us-ascii?Q?3F7zfObjRfu+Qt6/R7ge24iaxpmG9HksIrTTtD9sKfHWGwO9NDcPe65DM3l8?= =?us-ascii?Q?RZPUveSUDZdswnkVnKUtwRmGwn1Jv88DUOhrWulM7YAXizbwWwab/6TiJMfO?= =?us-ascii?Q?4PJU4TBzJyv+zM3fQzHCoHm/MaMsJNnnLL6gcZAU8DAyJ/4KxsHIf5Rd+aBt?= =?us-ascii?Q?cRlr4I91YfJy5TvwctZlPQHRUFLpk1dSrB5gBNLlzCmZoMlse8Q/MwxAjK4/?= =?us-ascii?Q?eYPrm9ao3f94XyytpPaMOakb8ekBd4nZIAqgmcoim+zgb+XDvWuu3SV0UEX0?= =?us-ascii?Q?nKVdsKT7sPe4jkmozpSA0CJ+fmSuBWfMu4GLsX76fSE72U7uo3MZOImMqT3O?= =?us-ascii?Q?wIyB10/P7dZkRkdVpwlH9nC3xVnIAhwRnaet10OEWwvr9SP1OXNRLlA7IB0/?= =?us-ascii?Q?szvN2Xcyn2nA3scti4o15mDMgUpcSZaT7V43g5QeA7tkD0UR/2LaC/pTfZYv?= =?us-ascii?Q?ebhTHEkCC1GsU7SlY40v6DDZ5leahkVk9uQkvX4eY1/Ld1zxCE9CEBkDeyZH?= =?us-ascii?Q?lBrrbrFITAdyc9DeTdq8YqdXXUnYRZQ26itjX6gdAwzMm79yG3GhaTv4NRiY?= =?us-ascii?Q?apeem0HgH24b38AnHKJnF+lr+6asWS6r+1wpoa2o5zNyNX2LO7QYT5v+J3hu?= =?us-ascii?Q?qq4HNq7dyBk3s8Zr6iPT4tZ+vLdGCjcJl35//EEs4PcKiS+QOSNuoZnpCOdr?= =?us-ascii?Q?s/mgCuQ8LqkNc=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB475; 6:CkkxtAhjvY4M9N7fL7bp3drmuAdPtUR99DgFTXF/aE0fIgOkQY17zLlE/4FEVB+UndT8MVgLZU93vwHa8kYIHQwln+v8N8DHsi2zBvAXMG4w45gy8CwbQilGWCSViOw5Fcx3fOmjsAq1l0mILQIVeYmPYXMAJveyv9SvQ+yV6kqO5vuQrXvtjCMKVSHhx3tnbhNA9fego76RJXKAg4Lx5c9xSqGcZfVxg/8QUzdYuQIbK4zvxjw1nerWdbYnZ4y/KVzzeaAQFP5R/LmpUwM2PHaqNS6lGFQQmX1080F9kLC/V+u6M1jg/DbJYbj53kwmgvfI98ijZd0tW3O81zJ6ZUiA//DEJaBYHEl58h2R+2A=; 5:EcyQ9Q6U+oRmTQ5Bpkif9ZeClamnbPfsRAue5rWpT37gyf5uWVMEmbRmh+hXCKUNrV+LafNEax89PAiPACq9A5dJy55MtCo8X/GD/5NVjTAxacUKDaHORwXwNzLcB5hcfHy/oGvpHggBLikL9gcuGgnyEv6mah53FWI6FNji/5M=; 24:MdpiQP2Z6Y0E409Pn2Hq8VTSSFTQ8h/P3ZPaj36i9afuGssD3hsLoP3Vc/EnCVizDPhXaJhLqC+QY+BhMEdk0/PQuHaS5rzEzl19rwEFUgo=; 7:n1zTlrqJ5NwWaLXGMxgJ+wv/lrfcUJfvbI6Q6kkq8ZSseJ+tLu6bVnvs7v2WlhDbFoKhspZu9zh35rAnqVhYy4ZHphxTut31B/Lxh4dBgAZQhGMiFxnnJC7rMRG6iLc5/I5K1KuvdyvEZP3dfjn4vQkbqQCrUAH+hT7CdQXafWk4JqF31UDhlhtWZUF44OhwaNXLXsjlo6Q56oQ6M3VL2dXVD7U6/zm5/U9n6O+jZBJYpEG8CxTZBRmV4/4Wu5vu SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2018 07:24:50.4543 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 641b004d-4b6c-403d-26f8-08d5623264e5 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB475 Subject: [dpdk-dev] [PATCH 6/7] bus/dpaa: check portal presence in the caller API 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: , X-List-Received-Date: Tue, 23 Jan 2018 07:24:55 -0000 In the I/O path we were calling rte_dpaa_portal_init which internally checks if a portal is affined to the core. But this lead to calling of that non-static API in every call. Instead check the portal affinity in the caller itself for performance reasons Signed-off-by: Nipun Gupta --- drivers/bus/dpaa/dpaa_bus.c | 26 ++++++-------------------- drivers/bus/dpaa/rte_bus_dpaa_version.map | 1 + drivers/bus/dpaa/rte_dpaa_bus.h | 2 ++ drivers/mempool/dpaa/dpaa_mempool.c | 24 ++++++++++++++---------- drivers/net/dpaa/dpaa_ethdev.c | 10 ++++++---- drivers/net/dpaa/dpaa_rxtx.c | 20 ++++++++++++-------- 6 files changed, 41 insertions(+), 42 deletions(-) diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index ef2df48..5039067 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -54,7 +54,7 @@ unsigned int dpaa_svr_family; -RTE_DEFINE_PER_LCORE(bool, _dpaa_io); +RTE_DEFINE_PER_LCORE(bool, dpaa_io); RTE_DEFINE_PER_LCORE(struct dpaa_portal_dqrr, held_bufs); static int @@ -230,9 +230,7 @@ } } -/** XXX move this function into a separate file */ -static int -_dpaa_portal_init(void *arg) +int rte_dpaa_portal_init(void *arg) { cpu_set_t cpuset; pthread_t id; @@ -303,25 +301,13 @@ return ret; } - RTE_PER_LCORE(_dpaa_io) = true; + RTE_PER_LCORE(dpaa_io) = true; DPAA_BUS_LOG(DEBUG, "QMAN thread initialized"); return 0; } -/* - * rte_dpaa_portal_init - Wrapper over _dpaa_portal_init with thread level check - * XXX Complete this - */ -int rte_dpaa_portal_init(void *arg) -{ - if (unlikely(!RTE_PER_LCORE(_dpaa_io))) - return _dpaa_portal_init(arg); - - return 0; -} - int rte_dpaa_portal_fq_init(void *arg, struct qman_fq *fq) { @@ -329,8 +315,8 @@ int rte_dpaa_portal_init(void *arg) u32 sdqcr; struct qman_portal *qp; - if (unlikely(!RTE_PER_LCORE(_dpaa_io))) - _dpaa_portal_init(arg); + if (unlikely(!RTE_PER_LCORE(dpaa_io))) + rte_dpaa_portal_init(arg); /* Initialise qman specific portals */ qp = fsl_qman_portal_create(); @@ -368,7 +354,7 @@ int rte_dpaa_portal_fq_close(struct qman_fq *fq) rte_free(dpaa_io_portal); dpaa_io_portal = NULL; - RTE_PER_LCORE(_dpaa_io) = false; + RTE_PER_LCORE(dpaa_io) = false; } #define DPAA_DEV_PATH1 "/sys/devices/platform/soc/soc:fsl,dpaa" diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map index 925cf91..8d90285 100644 --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map @@ -70,6 +70,7 @@ DPDK_18.02 { dpaa_logtype_eventdev; dpaa_svr_family; + per_lcore_dpaa_io; per_lcore_held_bufs; qm_channel_pool1; qman_alloc_cgrid_range; diff --git a/drivers/bus/dpaa/rte_dpaa_bus.h b/drivers/bus/dpaa/rte_dpaa_bus.h index 6fa0c3d..0352abd 100644 --- a/drivers/bus/dpaa/rte_dpaa_bus.h +++ b/drivers/bus/dpaa/rte_dpaa_bus.h @@ -31,6 +31,8 @@ extern unsigned int dpaa_svr_family; +extern RTE_DEFINE_PER_LCORE(bool, dpaa_io); + struct rte_dpaa_device; struct rte_dpaa_driver; diff --git a/drivers/mempool/dpaa/dpaa_mempool.c b/drivers/mempool/dpaa/dpaa_mempool.c index fe22519..eb5b8f9 100644 --- a/drivers/mempool/dpaa/dpaa_mempool.c +++ b/drivers/mempool/dpaa/dpaa_mempool.c @@ -139,11 +139,13 @@ DPAA_MEMPOOL_DPDEBUG("Request to free %d buffers in bpid = %d", n, bp_info->bpid); - ret = rte_dpaa_portal_init((void *)0); - if (ret) { - DPAA_MEMPOOL_ERR("rte_dpaa_portal_init failed with ret: %d", - ret); - return 0; + if (unlikely(!RTE_PER_LCORE(dpaa_io))) { + ret = rte_dpaa_portal_init((void *)0); + if (ret) { + DPAA_MEMPOOL_ERR("rte_dpaa_portal_init failed with ret: %d", + ret); + return 0; + } } while (i < n) { @@ -193,11 +195,13 @@ return -1; } - ret = rte_dpaa_portal_init((void *)0); - if (ret) { - DPAA_MEMPOOL_ERR("rte_dpaa_portal_init failed with ret: %d", - ret); - return -1; + if (unlikely(!RTE_PER_LCORE(dpaa_io))) { + ret = rte_dpaa_portal_init((void *)0); + if (ret) { + DPAA_MEMPOOL_ERR("rte_dpaa_portal_init failed with ret: %d", + ret); + return -1; + } } while (n < count) { diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index bf5eb96..b60ed3b 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -1331,10 +1331,12 @@ static int dpaa_debug_queue_init(struct qman_fq *fq, uint32_t fqid) is_global_init = 1; } - ret = rte_dpaa_portal_init((void *)1); - if (ret) { - DPAA_PMD_ERR("Unable to initialize portal"); - return ret; + if (unlikely(!RTE_PER_LCORE(dpaa_io))) { + ret = rte_dpaa_portal_init((void *)1); + if (ret) { + DPAA_PMD_ERR("Unable to initialize portal"); + return ret; + } } eth_dev = rte_eth_dev_allocate(dpaa_dev->name); diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index b889d03..f969ccf 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -503,10 +503,12 @@ uint16_t dpaa_eth_queue_rx(void *q, if (likely(fq->is_static)) return dpaa_eth_queue_portal_rx(fq, bufs, nb_bufs); - ret = rte_dpaa_portal_init((void *)0); - if (ret) { - DPAA_PMD_ERR("Failure in affining portal"); - return 0; + if (unlikely(!RTE_PER_LCORE(dpaa_io))) { + ret = rte_dpaa_portal_init((void *)0); + if (ret) { + DPAA_PMD_ERR("Failure in affining portal"); + return 0; + } } ret = qman_set_vdq(fq, (nb_bufs > DPAA_MAX_DEQUEUE_NUM_FRAMES) ? @@ -777,10 +779,12 @@ static struct rte_mbuf *dpaa_get_dmable_mbuf(struct rte_mbuf *mbuf, int ret; uint32_t seqn, index, flags[DPAA_TX_BURST_SIZE] = {0}; - ret = rte_dpaa_portal_init((void *)0); - if (ret) { - DPAA_PMD_ERR("Failure in affining portal"); - return 0; + if (unlikely(!RTE_PER_LCORE(dpaa_io))) { + ret = rte_dpaa_portal_init((void *)0); + if (ret) { + DPAA_PMD_ERR("Failure in affining portal"); + return 0; + } } DPAA_DP_LOG(DEBUG, "Transmitting %d buffers on queue: %p", nb_bufs, q); -- 1.9.1