From patchwork Fri Mar 3 12:46:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 21197 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 C178DFA51; Fri, 3 Mar 2017 08:14:39 +0100 (CET) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0085.outbound.protection.outlook.com [104.47.41.85]) by dpdk.org (Postfix) with ESMTP id B8BC3BD2C for ; Fri, 3 Mar 2017 08:14:05 +0100 (CET) Received: from DM5PR03CA0049.namprd03.prod.outlook.com (10.174.189.166) by BN6PR03MB2945.namprd03.prod.outlook.com (10.175.126.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Fri, 3 Mar 2017 07:14:04 +0000 Received: from BY2FFO11FD045.protection.gbl (2a01:111:f400:7c0c::122) by DM5PR03CA0049.outlook.office365.com (2603:10b6:4:3b::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.3 via Frontend Transport; Fri, 3 Mar 2017 07:14:04 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; caviumnetworks.com; dkim=none (message not signed) header.d=none; caviumnetworks.com; 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 BY2FFO11FD045.mail.protection.outlook.com (10.1.15.177) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.933.11 via Frontend Transport; Fri, 3 Mar 2017 07:14:04 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v237D50L005035; Fri, 3 Mar 2017 00:14:00 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Fri, 3 Mar 2017 18:16:35 +0530 Message-ID: <1488545223-25739-19-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1488545223-25739-1-git-send-email-hemant.agrawal@nxp.com> References: <1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com> <1488545223-25739-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131329988443660793; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39410400002)(39400400002)(39850400002)(39450400003)(39840400002)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(33646002)(38730400002)(8656002)(110136004)(4326008)(626004)(36756003)(92566002)(53936002)(5660300001)(305945005)(6666003)(2950100002)(6916009)(189998001)(356003)(54906002)(2906002)(48376002)(50466002)(2351001)(50226002)(81166006)(8676002)(104016004)(8936002)(47776003)(5003940100001)(76176999)(86362001)(50986999)(106466001)(105606002)(85426001)(77096006); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2945; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD045; 1:yiJ9jqar1sQXJoAKsM5E5qAOFGA/z+vtN2qzNNnibRqwzLZKZMyj5ARfvzXzA5Xgvry5TsnHVPbRYu6TeqqTf5SebrLAbSySFx3ZN/halST2JZjT3bWDTaKLpjiPqqrjHGp3VHVn5Ua8l3bNoWtEf76jvBMzSVtHq3Yl0DZB4VMBpre7jFujyhAhL1QagiL3poWg1ZN8iZiJks053pPTmarwtYkAdC4tnlIf9EJhZ/48BjMndI+nBpB1kkh31caQqWsvCzA/E7sBnaBRO9H33HY1pa4x9WWaRaqh9qbKl6INWypibh1rvPrW4GM9niGU8ZqYRq/b/FvQaND7r7CTqqBjvae1+ldB8C7ZY+BmTpuzCyioyb+CTjmmOhFtPCZnsKuX5AFSNEQa78GkCcQFMzpEAIzouvAr24X/jbs4rti5XT/ixZDDUfu+Esr2f9cXzMBJligr/Ic5jewA+PE4G0ggAQeizbRrWHuvkUSsKlrpOCg60cAj2yKXpqfgBhabGGknd1KAImnescuDU07uNxPWmz4u18wCxrRtVqBRlKqCGovStPWvtZFWiuz2D0+JFf6zqJ3Q16rNz5gHQ9As6e2ngV2GccJJVFNfqxJcU0sB9/70sPwG1cQZeKEthwbQeVOgSrIZeA1A79N53HteWg== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 6f358c58-76d7-43f1-f5a2-08d46204dfeb X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN6PR03MB2945; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 3:R/G3ThVgTfsH6k+O7cLhBXobo0Ly8grHSq9SyqBtTwxwH64Fv1Gxl7f33yustRy5NBih/dRfw+k4GSpXznrDHkAasIdaZNTcGXRfYscyrSUwbJdiMxc2r/y/NXteB8Rek25jqYcgsnz2IwD3juJWUE85kF2Own8Y5kxSposfy18BS5Q/UiMtw2VKm1RDiuwclwdyVpXBM4smoGjBE9VG7M+GUh+goOTD3/Wh1gnuIpRPZM5M4vkJz1d33+38Yt8CmJVAJv+QVzSkxt0P+RDqE6tC7amABuJq2R6SGUeP3RGpPWNfnVQoNtsvOGIMPyHb3n/LRQQxGXKwc18gdQcOEY6vSzNYsSkxVDUAbaBuUvJDBGfci2mt4QJ3SdjKyx/q; 25:L43Y2uQ93APkWUARnNmiwKQzVCr/ue0TEBDveKoRJIPc1+aQrb7xWcoMpwzNloioyoD5elocoVTIPEHs4Fm9nZ9SgsBL6cAJ0oBkmxIoivjEtbZPh5NWab2dVhq2k3KhFxQz3Z6OJFTAhHdZiwJdX4HyrWmZteOStgGWAc3PDBOI5WiY3RIgLSX/mn9ZjJ3/ENv+LFZt0lAl3z0+KxIYEH7M1N/YR69KQ1ybX2hd7+6rJ9kT4nElusdyedhbBKfbdetoI8dTKt+mAY1+gwiu+Ol0joDrlAca8C7/lf3cTwrWolUeKd93wa4DWVq4+Amc8S29J7plRFGc1TCaJreitj0grhh6JGpRRNVYlyxQvxH3Hn2CEcdHoLtA2e1jv9dPN+tomS0zxERx5tOsA+Rqj3LneRLmr4V+M93GchW8rt6wkImVUuoDLFfNt7G9nk/EC7KusccFbL1V9KtU6ktGsQ== X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 31:LJTiVQ1ENIvrDUdH3ntWewsBuna07sJQAo2EPxmYIV3nhKV7PA+UyWt0dQcasuTAJa6SPc3oGfisUkcyvxOY9FupR7y2deQ/vWMEx4nItSZLJVsZ3/kr7uYM7widSZAWTd1WIrkFdMuHIrN2hptoGxcPRix1lkeb/ixvOD6OG9fYNkJ4n2lhVeib0BUBOwVz9v0shwy6U1SDIt/PfF1DlJOuL7Hti7tTMTfvSR5sII2rpp//8k8dRfjonapJzRObixS4alDYG85XpGw+ZJ5b7A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(8121501046)(5005006)(13017025)(13015025)(13024025)(13018025)(13023025)(10201501046)(3002001)(6055026)(6096035)(20161123561025)(20161123559025)(20161123556025)(20161123565025)(20161123563025); SRVR:BN6PR03MB2945; BCL:0; PCL:0; RULEID:(400006); SRVR:BN6PR03MB2945; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 4:zEh/I621fArnxxKv1JjKOYh9ihfuPgrsx0aVYMgPd/Q4Coe0uht4mKaK4oywnyiVLNoKcj8KzK6lcpEzFsdRlHRcpU4UcoHEEaYYviD0YcOeh2a/slPmPw/eRIYViN+mxLjjnrzzkFZphrjfT4pTzFdoiPzYYXmAVicdLvOg2YpjR3G7cn14HctFpUmuBhVoHs3ma4wPOf5SKz3p5/LW3qNa/g9pd25pASO2XhxBgQr9M9iQlQJsifLdqzIyXf8bt+l7+qgGFgRjfnoh0WgqpGRfzndTqsMHOqqLnwEELhKBU4EjZa/SwwiY5m+wc6lXoXKc62MF96d5CWA+RXnsckOIt9+iy8oY+UWG6vCusLr/8iNzHK5dTSM/QraDVInjTPK1aIiPRl4pvA4nq32jFCgPC42p4eZQwlfIxsL1hlSjPeImkzKoMuo55m0hoeOSFiFyWSX8YXZDmwqVwqIGSrJdXoWSJ6hl9f9g3aCCGDid1Ce1lUghIsoxsyeLhT2jiFAi9o1K6yUIrMOFwZM/lSGd1pDJmBSvNFAwMXSdpiey8z40SvrW3FmcA54UyO4qevV7UC8NH2L+26VFB+ydry3XXKfCy1Vxg/w4NZIxrOUDHxJJRYaxik91afwhEEMvmby2aTs/pQprYuqnJaKQLFiGLf3ICd02maPVji3QFcHbaq7o/4disHqB3/oAu3QciHyQ4NF64ftZybOn0HsZTdEXwPYTJkdr/eAJDrzdruOPBj/oaajbtVzpkEDs4IekFi2NpBeQ6/nSqd8G0t1Xeg== X-Forefront-PRVS: 0235CBE7D0 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR03MB2945; 23:VPrZWP7SNNiQ7VME2GtFr7CqdkjRxs/MpGUvCKELG?= oRhdLtYmTk6T/EgJY/Vu4DkDuWwAMnRf3I762bZFl/GDKpoglD+5crfM/cKoQSHNE2g78rQTeEpA9yjr5LwTEO0OkhgZjGZyZoX4M5kidzanLgNfTZhVldaVrcbnQiycK6h+cMD5oXd/7KG6HBATaj91sELxBe7B5nREuF9QnarOHhT7RtcFeiwX+WYS4Dm0bPJngXPDRO1BIvKjuaJz0Lndpc3Sti0I6JwAGq8g0MvO+9CKhs3pX89BU16OreUNx+dQ9xDQ7xiXh5B6oYM1oIqHKRCeQzgbGAvlIcwMwDMpDO6FjZzhc9EK3qGAJ5U+8wMLuvuqmEp96BMuwlYDkMxHheBuu4uXG0Iy8MhHgwzj//2e++4BeREDsqlyqk6ZxNbhxTQ9VciPw9Z3NHyT5X+8tn3jOCUBaYyciU405Of2NJZAOHsjrD8E6sTbw74N0vJ7D1UHUf/RR33Z9j1pj439mFMAMeeqXG21hmk92eeJeoQFnjPYBDTM7tN3G9Sex6LENHQs7rY1qgUsTlMd7hC4kwDSc6+siPBt+/DHNQOzWxyKgqb5rsR8hW0/2jScMhMS6blT3V4s+5WbUKNsKzaVZvlYkXilDM1lbtpmd4HZwUz4iLSXUmfaIUONyoEm3p/5pdxcg67GFutRzmdMbog5Q2HZGGc2w+D6L8H6L/1L+cIxHuA/wJhz2M2lp3edn07zOXjz+0JHrTv3JDE3GXRKTd31eaT3PtvFaRE7IpvmO90UZlHfgV+er6jCBJjJD+UbJCMNgyDRku3vVfWByaS3W3QJ32rs3sSt7vOAU+v9MNdUnPDxP3vnIAGLDmcPI+wMWbaKFofN7I6+Sjuqat1DqCefT+MFNYcetiFA5wUOZxVFY8pZZhVBjxu8INKWVC4H/onSX7qcwkUY+0mdl7KjFMOcIdFXNrKujjrSTlBHa0KmId9PZjoL/Smt8VRI/VnO99NE9ElZGiVgDjvAGWFhhQPvez/EoZNnvR8Nqig82Eg1biXQln8afsR3vmaAHU/uAEltx9K590VC02QjZBgOFMrEDSg/Wg2CP+Yyefkpws56JDXhyCIYf6754bRsJbaM2bX4FVjxAgNKLne5D/q7q+E+iFP5Nv7oQgScrrao+KDYtrEvO2VEmNsyQAR+IT9e2GwYHmSSmpXcU0E3wc/vMpFcUhCP8tNI3L1hVyE7jE5ndyO/48wx6ARvgOCxLwghtaz0OnxMynlGuxG2p2+ X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 6:p8U+cnj4gcfvafUm9TCJedzrEY+xXgTFMC+GhNZ4GxI+leQayipB5opPx6R1xIPOrsFXqCqtgOOzXdImGdGNbdqqOflld2WOYBszdkbEtxD5TUBK5YuDgak7lx40/wZR+AYao42VhLYKz8CfERS2wAY9sFxlSfE2+kxBp8SkM8rM3YDzbpgtxVI5Q7JjFOsMUB9FSu5oo+4Ebhv8RwTFYahG5rVo668XhtmoBxLRCgumhPbX4s1Bo4EExKkglNV0usawFWyi/4GASIcZ2GNprkLJj35Ds6Ld5Kd5LnwD08v8G8IuZq+g2Kk5Dr2cB2A3PAk8PYUQttlGkaE0ipmlVAd0ALpqlVfbEAm26RAPY1Jae6WdHvhQjKKqBvKQo73vJgMOOCOrWxrAGAktdFbCulKoksLyRd43uwBqBtjMWFQ=; 5:tHYWmnd/2Idi4I+N2lvVYoo27fcaJhQWGucavXM1chzXVPn+DuYHZNV6brY+HK15aSoE6wL7OxbCAueej4SeDMdjlDuRcnr/NJsPijkMZHrYu11p7IvGuwO7X8w3XS14fMrpUcm5Imde6xJzlm1svaNLbFfn8P9iw8abcxnM5h4aWYYYkg8FdYw3XbJzS8lO; 24:0iEGbCc40TGVWk/zCjxoTGj733aAKsSfy9s+IlIQbZl2qDlQiSrYYXDDoafDJ3vK5sef9tSBk4vU1L2hOX4IJKqSkWIjB3Ln1uwS83u1QCg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2945; 7:IXm6lUm2NuQZvPgq2v1QkTLfzuGErnM/1pGAwiXfNvOthCMr57SeXkyYyejOjka/kKld5yYCxNy+KLNVx2HiPIRjV3Fg7Zm6oHbCdkrbkZHK3yCrwqTIwy/tol4Fgm6e92f7w/k8Nccu+8FN/qLeJ+ZUB3I4yNRPYqvbNgtK4U52MdfhPchQs5W289+mjlZsbMYUZookaAadzMeGFfoJg/HPbCfsCF3fONTIgo5xztr/cPRvKz8YBV3AhcHE0vTD2JAr+0tQUZ1qhvIvI33IlqPKoc4bb/L3vk/3ANdM+Vl1TxQ9XfqfnDy89J7xJjZ78K8+SNvQ4E1uh1LXE9i7NQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2017 07:14:04.0384 (UTC) 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: BN6PR03MB2945 Subject: [dpdk-dev] [PATCHv8 18/46] bus/fslmc: introduce support for hw mempool object 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" Each mempool instance is represented by a DPBP object from the FSL-MC bus. Signed-off-by: Hemant Agrawal --- drivers/bus/fslmc/Makefile | 1 + drivers/bus/fslmc/fslmc_vfio.c | 9 +- drivers/bus/fslmc/fslmc_vfio.h | 2 + drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c | 137 ++++++++++++++++++++++++++++ drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 20 ++++ drivers/bus/fslmc/rte_bus_fslmc_version.map | 2 + 6 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c diff --git a/drivers/bus/fslmc/Makefile b/drivers/bus/fslmc/Makefile index 10740b5..04751a5 100644 --- a/drivers/bus/fslmc/Makefile +++ b/drivers/bus/fslmc/Makefile @@ -69,6 +69,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += \ mc/mc_sys.c SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += portal/dpaa2_hw_dpio.c +SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += portal/dpaa2_hw_dpbp.c SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc_vfio.c SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc_bus.c diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index 2d7bcd9..fc017fc 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -270,7 +270,7 @@ int fslmc_vfio_process_group(void) char path[PATH_MAX]; int64_t v_addr; int ndev_count; - int dpio_count = 0; + int dpio_count = 0, dpbp_count = 0; struct fslmc_vfio_group *group = &vfio_groups[0]; static int process_once; @@ -420,6 +420,11 @@ int fslmc_vfio_process_group(void) if (!ret) dpio_count++; } + if (!strcmp(object_type, "dpbp")) { + ret = dpaa2_create_dpbp_device(object_id); + if (!ret) + dpbp_count++; + } } closedir(d); @@ -427,6 +432,8 @@ int fslmc_vfio_process_group(void) if (ret) FSLMC_VFIO_LOG(DEBUG, "Error in affining qbman swp %d", ret); + FSLMC_VFIO_LOG(DEBUG, "DPAA2: Added dpbp_count = %d dpio_count=%d\n", + dpbp_count, dpio_count); return 0; FAILURE: diff --git a/drivers/bus/fslmc/fslmc_vfio.h b/drivers/bus/fslmc/fslmc_vfio.h index 39994dd..80c6869 100644 --- a/drivers/bus/fslmc/fslmc_vfio.h +++ b/drivers/bus/fslmc/fslmc_vfio.h @@ -76,4 +76,6 @@ int dpaa2_create_dpio_device(struct fslmc_vfio_device *vdev, struct vfio_device_info *obj_info, int object_id); +int dpaa2_create_dpbp_device(int dpbp_id); + #endif /* _FSLMC_VFIO_H_ */ diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c new file mode 100644 index 0000000..894f632 --- /dev/null +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c @@ -0,0 +1,137 @@ +/*- + * BSD LICENSE + * + * Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved. + * Copyright (c) 2016 NXP. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Freescale Semiconductor, Inc nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "portal/dpaa2_hw_pvt.h" +#include "portal/dpaa2_hw_dpio.h" + +TAILQ_HEAD(dpbp_device_list, dpaa2_dpbp_dev); +static struct dpbp_device_list *dpbp_dev_list; /*!< DPBP device list */ + +int +dpaa2_create_dpbp_device( + int dpbp_id) +{ + struct dpaa2_dpbp_dev *dpbp_node; + int ret; + + if (!dpbp_dev_list) { + dpbp_dev_list = malloc(sizeof(struct dpbp_device_list)); + if (!dpbp_dev_list) { + PMD_INIT_LOG(ERR, "Memory alloc failed in DPBP list\n"); + return -1; + } + /* Initialize the DPBP List */ + TAILQ_INIT(dpbp_dev_list); + } + + /* Allocate DPAA2 dpbp handle */ + dpbp_node = (struct dpaa2_dpbp_dev *) + malloc(sizeof(struct dpaa2_dpbp_dev)); + if (!dpbp_node) { + PMD_INIT_LOG(ERR, "Memory allocation failed for DPBP Device"); + return -1; + } + + /* Open the dpbp object */ + dpbp_node->dpbp.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + ret = dpbp_open(&dpbp_node->dpbp, + CMD_PRI_LOW, dpbp_id, &dpbp_node->token); + if (ret) { + PMD_INIT_LOG(ERR, "Resource alloc failure with err code: %d", + ret); + free(dpbp_node); + return -1; + } + + /* Clean the device first */ + ret = dpbp_reset(&dpbp_node->dpbp, CMD_PRI_LOW, dpbp_node->token); + if (ret) { + PMD_INIT_LOG(ERR, "Failure cleaning dpbp device with" + " error code %d\n", ret); + return -1; + } + + dpbp_node->dpbp_id = dpbp_id; + rte_atomic16_init(&dpbp_node->in_use); + + TAILQ_INSERT_HEAD(dpbp_dev_list, dpbp_node, next); + + PMD_INIT_LOG(DEBUG, "Buffer pool resource initialized %d", dpbp_id); + + return 0; +} + +struct dpaa2_dpbp_dev *dpaa2_alloc_dpbp_dev(void) +{ + struct dpaa2_dpbp_dev *dpbp_dev = NULL; + + /* Get DPBP dev handle from list using index */ + TAILQ_FOREACH(dpbp_dev, dpbp_dev_list, next) { + if (dpbp_dev && rte_atomic16_test_and_set(&dpbp_dev->in_use)) + break; + } + + return dpbp_dev; +} + +void dpaa2_free_dpbp_dev(struct dpaa2_dpbp_dev *dpbp) +{ + struct dpaa2_dpbp_dev *dpbp_dev = NULL; + + /* Match DPBP handle and mark it free */ + TAILQ_FOREACH(dpbp_dev, dpbp_dev_list, next) { + if (dpbp_dev == dpbp) { + rte_atomic16_dec(&dpbp_dev->in_use); + return; + } + } +} diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index 6b44314..ad2847f 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -41,6 +41,13 @@ #define MC_PORTAL_INDEX 0 #define NUM_DPIO_REGIONS 2 +#define MEMPOOL_F_HW_PKT_POOL 0x8000 /**< mpool flag to check offloaded pool */ + +/* Maximum release/acquire from QBMAN */ +#define DPAA2_MBUF_MAX_ACQ_REL 7 + +#define MAX_BPID 256 + struct dpaa2_dpio_dev { TAILQ_ENTRY(dpaa2_dpio_dev) next; /**< Pointer to Next device instance */ @@ -63,6 +70,19 @@ struct dpaa2_dpio_dev { int32_t hw_id; /**< An unique ID of this DPIO device instance */ }; +struct dpaa2_dpbp_dev { + TAILQ_ENTRY(dpaa2_dpbp_dev) next; + /**< Pointer to Next device instance */ + struct fsl_mc_io dpbp; /** handle to DPBP portal object */ + uint16_t token; + rte_atomic16_t in_use; + uint32_t dpbp_id; /*HW ID for DPBP object */ +}; + /*! Global MCP list */ extern void *(*rte_mcp_ptr_list); + +struct dpaa2_dpbp_dev *dpaa2_alloc_dpbp_dev(void); +void dpaa2_free_dpbp_dev(struct dpaa2_dpbp_dev *dpbp); + #endif diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map index 2110b71..66840b1 100644 --- a/drivers/bus/fslmc/rte_bus_fslmc_version.map +++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map @@ -2,6 +2,8 @@ DPDK_17.05 { global: dpaa2_affine_qbman_swp; + dpaa2_alloc_dpbp_dev; + dpaa2_free_dpbp_dev; dpbp_disable; dpbp_enable; dpbp_get_attributes;