From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0089.outbound.protection.outlook.com [104.47.37.89]) by dpdk.org (Postfix) with ESMTP id B10FA1B03C for ; Tue, 23 Jan 2018 14:03:21 +0100 (CET) Received: from BLUPR0301CA0012.namprd03.prod.outlook.com (10.162.113.150) by CY1PR03MB1422.namprd03.prod.outlook.com (10.163.17.144) 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 13:03:19 +0000 Received: from BL2FFO11FD054.protection.gbl (2a01:111:f400:7c09::182) by BLUPR0301CA0012.outlook.office365.com (2a01:111:e400:5259::22) 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 13:03:19 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) 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.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11FD054.mail.protection.outlook.com (10.173.161.182) 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 13:03:19 +0000 Received: from b27504-OptiPlex-790.ap.freescale.net (b27504-OptiPlex-790.ap.freescale.net [10.232.132.60]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id w0NCR9X5020973; Tue, 23 Jan 2018 05:27:35 -0700 From: Nipun Gupta To: CC: , , , Nipun Gupta Date: Tue, 23 Jan 2018 17:57:06 +0530 Message-ID: <1516710427-22843-7-git-send-email-nipun.gupta@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1516710427-22843-1-git-send-email-nipun.gupta@nxp.com> References: <1516710671-13897-1-git-send-email-nipun.gupta@nxp.com> <1516710427-22843-1-git-send-email-nipun.gupta@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131611861998123990; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(376002)(396003)(346002)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189003)(51234002)(199004)(97736004)(36756003)(104016004)(2351001)(8676002)(77096007)(50466002)(6666003)(26005)(86362001)(16586007)(53936002)(316002)(48376002)(2950100002)(5660300001)(85426001)(575784001)(81166006)(81156014)(54906003)(336011)(47776003)(356003)(50226002)(8936002)(106466001)(68736007)(105606002)(305945005)(69596002)(4326008)(76176011)(2906002)(498600001)(59450400001)(6862004)(51416003)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB1422; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD054; 1:btQOwgSBifmeCcJTxQT8WEOenC3wHDSbQrryVCCoS2NY/JqkJGky23KM8iknBEU7pzYfudoRyMR2TBWAHq2trsKfL2Dy9Uaxxshie4kF0qhGRicUhcQ1DOZZ/ObOEWfc MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: da2ae00f-7774-4cd8-da75-08d56261ad14 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603307); SRVR:CY1PR03MB1422; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1422; 3:ptrqiNc8PXKeueVBO7NOEYi+jQXoGVeK+cBbxFFUdKpU4OAKKalQLXKmWhuDIXPU+O1dd5dxrtOrMI/H1bEKqKhGUNdHaDWn1cAeYZ9qpStGSVmFacoHwdvMaucj1je8pMzxNucxpRS0zfzPVKeC+qDoPBnitiBNGLvOIAYWqvcP0T5fcj5r7uPqVoFwN9hR90YLtyZUao/rY3Nktl33FM7JULw3DD5QeHsU+2huAOcjqLAfgB8v/X+QfqocefrgsMEY6mSKKgR4Fzn38yroWc95eqghAsjK2PgbQlJdYs3ObdOwoaX1XP6DnbKgDSb1PIO5dDgM1DE1HmF2MtzpBhb30wLW/r1u625ZXjKnWBM=; 25:P/FeNWS99/A9pRiFCl7jHZDvVQ4BMW4yi7IhX/NigrHCibvvFlYwjkvn/1Ch95peiIqvZZkbEmRtIKISl3sw923YSS5PtJBY/5m2w+EFmBnJnc37KalwiNl6YE8t7IjfxhrGmQNX+uonxXpG/D5AY+xY323FsoequXi4YXY3QwEATz/55AIavtgC0ADyuGl9xM0JyfBDuO6/ioAEuHnP++qbGdRrWw67Dx2gExrPqOctx8tJuqhmasInKx60MkJwwjlVEDG8LRIcu6WPDTU++55M2x4wkPHGOAsHzbWl56BplALv3qs+AnvY0lWdz378O6k7tAZUqQkDexMdZ83V+g== X-MS-TrafficTypeDiagnostic: CY1PR03MB1422: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1422; 31:zkaB+gfJIzlXTOe0JcgR3MhYitMhcpEh1ugZvTwBIuz+/hg+L2UHrwP6HloiF1qJd3Ozyb/QVmbh7pnWRNmXsFFPOeJYRB6DUlwLz0ge6ADSBlVYafu9xynog/FOS36TjS59DfVw89xLDPOX6RIXlljPMYa24ES22ZVNFHr9eMtM4YdHhDBWE6NlPyFlaX3SmMNXxd/FO/rv3QUgxshK35U75F6iTX1L0pC4emFVlKQ=; 4:gTCUsJaTuBEj4xelASmadJw9BQQDSvpRLMFo9fnQMB9YLRJtmHJe4Mdx4dhg8Yq5TNFHa2qaqEusj0b3Wp8NMIYQgMIvzv2AZXp2OVBpj2tGTdIcTa9ZPxkq/l9O28lUMacSrS91h/KfCknDFJ+orHAG5XSm0PYXvU729mHzPmFUVt1R/Y9V66SJZn1ExRFASw/MAXq2kl44uPHl+s1XnSO54Tgb1Tq2jsIZ16GCpZno71TJck1r5o5RGkEK51uWssZnpdArOBWjDUGmIgavY/eK74ueJl3f2TrHk7GDQooV/MniBqwoyGT1Ei0zadFMfAWvR2lPmoDpcPKqXYULeUL59gAmbjgUFLZ3cELGafm2lXS5LSN9hwV5081fijsr 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)(5005006)(8121501046)(3231023)(2400081)(944501161)(3002001)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123559100)(201703131430075)(201703131433075)(201703131448075)(201703151042153)(20161123556025)(20161123563025)(20161123565025)(20161123561025)(201708071742011); SRVR:CY1PR03MB1422; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:CY1PR03MB1422; X-Forefront-PRVS: 05610E64EE X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB1422; 23:eiYQmQKaM+Ak/FMhHTJ19C/3uaJez2x9LR0CTpPnB?= =?us-ascii?Q?FINZnsgV84l4Sn6GlgXeSXKvweHVDcVhpUHztT/+O44h0Kf8o68Oc1rqQYCT?= =?us-ascii?Q?IhaB2s/HgQNj4rf4Am0Lsx+c9KEauKw93IFSorg/dvsgOMOAGKFBfGrLWmAz?= =?us-ascii?Q?Omg5mcOAmqBjGBFVCIZmjSxCVWYsvBdxbvJgfc6km08tV/MZK6Rdlchd3br1?= =?us-ascii?Q?hNpzCanNkBKg/C53dWG+ySAnHDCTZZMy0LXqGH2zZMeE1InUWW596zAZ9VyR?= =?us-ascii?Q?zZ6Sep7bI9PtJB0tW0L92+TdfoXFRiozlMDu6yiR5ZM5VsBDkU7LyDM/Xg/1?= =?us-ascii?Q?vctWoQ9LuQXEBKi1wdQzdNwy1QgHi4+pZBbMRJgsGF09/LazoStLeCPATawz?= =?us-ascii?Q?a2WylEsu8mMekiiuiCwKMNrVZ66lJuovd579uq/KyCQGk7rEGABNjg9RzDY4?= =?us-ascii?Q?ll1a7fa+6rhQLO+dPydNX5WumK1G1k9KXeSvdsBtml7nl9SmHzhdAaiTDsJK?= =?us-ascii?Q?gOV2ZtQV4hpwpYPiThkOWbFwIn2yhOz1xLZlCg58o+ub1y8/r98tklaz6c37?= =?us-ascii?Q?iB2feNPMKiGH2XKNx9XXj2S+k3Gcw53/nAHQlNwyZA2YEdqKGIqRuMcWJx0T?= =?us-ascii?Q?uWBZOVOrh+yas5iLBk7dp8SbynBgR/qW43918nRnHMNsnUnkHjm1NBiGuOjH?= =?us-ascii?Q?1Kod8LYeRkjrH6pWyIqu7X6KCcwc/gx0r7iUOc6o8TsoMPs5z3OysPt+xRVE?= =?us-ascii?Q?pG6Ghg1rYEMGD0EiHjqUdhHcvnAEv0twmIc4cewpENJmpwLxAIaFvyBffMaH?= =?us-ascii?Q?5kjZYbmSYeuEBSPcGJJebpDfaCEjQCKa3BiVlWGTixEv05kCkqvYgr5uq4qJ?= =?us-ascii?Q?1XMRLL0CZQ5tYpvBb9iYOusvTRWjaX+3vQUmMFOmzEiYjO6yEBpvLTx9EZn2?= =?us-ascii?Q?aYLnZ0BXQMd4G9b6cvIfa9rn6kp23AAN02F2HYKtuigduPSQxd2lLL3l0G+m?= =?us-ascii?Q?QZJCg9z/7IaZG37jyP49F8jLDxNQoY1usBBtJYxn3UMLEqBiOjDp/dDHX5Zu?= =?us-ascii?Q?pCvXuyk2x+JQ+BOYAz8zgEUlVaV0/HXtLUsycg8iwDotiDrbzqLjH9Oqi92H?= =?us-ascii?Q?AX23H4eSditzCHKsGut0RlIRbB56RG/jZNLPu6KdKlQCtR/M9m0PJ2fXGrLU?= =?us-ascii?Q?OE1udbITU7RLaB7sTMjZPS0vkPXEtxVBnOi?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1422; 6:34WM2ANI22yzOXIf4OJtcGCXR58vIsRl6I+T/zezV6AZETWfgahty43ZYxXihjFSi6Vw2M5tLTkiDfTP+PwHzN88Kt78m3AJi6kDaAltHwMleED8HWJaqgJskzuQX4NP10UPYSD8osKIUYivViAyfbqkYy9PlbcmN2yW2PmjdrUQITzAmWsbCL5YunQfIPBEBxFoo3tDF1YTZ27ucAcJ/TZr/dMBV0/CD0lw3G9Cvqf075phCzaSKipWKOZuYdxVtn+nyHAAK6/NIwyQbJ5JzmK5keJTGFRzeTtD5JGZ5fqYGw3zldS1kAWdJAk8eEZ06SKGirrWhls8z1JKfHQc+hWYDZKSAEnNvweLW5tdYpQ=; 5:hF0nl9mdFzeUDkonFB8Nqs0POqvNx57zI5V8uY8RVdFyTIbWon1PHRaGfJOeF+SNnPiZdN++4klAimHwAerlzWRsB7b7pgZxYw2baE7s2B+6q0W9X4J7iXH7PtC+KvhjClMuKcRKKkkjCiz5NEjBdkwbJYLxTKTrVdgGRuWPUKo=; 24:4uNC/LVk8trVQOgzVHj852TVLX2bdWG+5I6YETCAFNfc57UM8fPM+ab99AGO6JtEJDhugLoPNMKkEvFdBoEiHYQE+KUvyncJSbkRvnjeB0Q=; 7:sbYozHYlgc1PzwiwyPqMxXc/dZ3FQOJcRsnhXbZAzXbl4dfi2EeM7aIQBwV/v4ylRFkMaqhf2VtqHr0JeC5TgivmxJapxw0eGSsfyQKmLW+lGUmjlDd+eD1wlZIWPcSKUsELCaP1gI6vrFfyA54EM2G6Hn8Oy9ja9TRCr+swaliY/ewQvOJye5BUqwwlJqDJE4yrUZG6nOzzFaF5OGlwmS4KDaLNX/PJzC82LwNnBeL5wQONsluZOoGcB7ZQfzAX SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2018 13:03:19.5783 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: da2ae00f-7774-4cd8-da75-08d56261ad14 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1422 Subject: [dpdk-dev] [PATCH 6/7 v2] 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 13:03:22 -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