From patchwork Fri Mar 17 12:36:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 21850 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 8B1F2D040; Fri, 17 Mar 2017 13:44:10 +0100 (CET) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0050.outbound.protection.outlook.com [104.47.33.50]) by dpdk.org (Postfix) with ESMTP id 80801CF7A for ; Fri, 17 Mar 2017 13:37:33 +0100 (CET) Received: from BLUPR0301CA0013.namprd03.prod.outlook.com (10.162.113.151) by SN1PR0301MB1968.namprd03.prod.outlook.com (10.163.224.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.961.17; Fri, 17 Mar 2017 12:37:32 +0000 Received: from BY2FFO11FD044.protection.gbl (2a01:111:f400:7c0c::187) by BLUPR0301CA0013.outlook.office365.com (2a01:111:e400:5259::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.977.11 via Frontend Transport; Fri, 17 Mar 2017 12:37:31 +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 BY2FFO11FD044.mail.protection.outlook.com (10.1.14.229) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.977.7 via Frontend Transport; Fri, 17 Mar 2017 12:37:31 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v2HCalI1023358; Fri, 17 Mar 2017 05:37:28 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Fri, 17 Mar 2017 18:06:32 +0530 Message-ID: <1489754201-1027-14-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1489754201-1027-1-git-send-email-hemant.agrawal@nxp.com> References: <1489754201-1027-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131342278516676703; (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)(336005)(39450400003)(39860400002)(39840400002)(39380400002)(39400400002)(39850400002)(39410400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(47776003)(54906002)(105606002)(5660300001)(305945005)(2351001)(189998001)(356003)(85426001)(50466002)(86362001)(33646002)(48376002)(50986999)(106466001)(76176999)(2906002)(4326008)(110136004)(5003940100001)(2950100002)(8676002)(50226002)(6666003)(38730400002)(81156014)(104016004)(36756003)(8936002)(6916009)(77096006)(81166006)(8656002)(53936002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0301MB1968; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD044; 1:IiWDRiDG4FqC2BDjLiwCKuNv17LP19PzfWPut85CcF3It/ZDiztUWIQ4fxLatoP3a38G8a0mqJZI6JiyEGFzXm1vjH9SOlWTI7LOPSKX/ekOXWMQqj35a+K6NIAMfI//qCgVOa46dqrphg0eRiGNvYBTvudpW20QqBx7MaK3EyNp0I/ZnXYwyGlgXWG0aH+qPwFMXqFblHjo8jG9ZeUWj/y/Njluh6q0OAQLv+lzyhdUJlEKLm0+OjL+t62NJCRp/9yr/tajeH5Z/A6IKYJSyJYYDnLx9uBRUbqn6DN4wm+HnwsQCHqvye7lvNUwI3exJapIvqq/ULo3mUGXeWNxj2khPT3uTeDolmju6fnooGnUH66RFkSJ6qo9Lay4H4ooK8Yj5AqcjbPFdJXSB5VfbnAtuefCUAgyL72JMaYV2m382MmDCTVlvLZF1fbZjS3EQ01yxxninVbj7dbMarXp2Q2zu0uPl2qza0ku46ttMhQ1kR6KI1xOHRNG7mKgNxR+H/cBuBOwaZiLfbCbdJvVtA8DpGpWm/zufMm0vPhTv6WSe5wF1+2npHYdrwzdkdr9y05POVZDRzMMxiL6TBH0kBSiakuwhw8JWLYbkhYaZ4TotRCvUbc8IZjq1rTlQILZdEOFrXSih71mx+3VqErYpQ== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: d51ed695-89ef-46e0-b6fd-08d46d32616e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN1PR0301MB1968; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1968; 3:fuuegTEN8Ouk4DyvG35OUMxE8HviyYWroL41l9wFoDpc4p3aFnV/0mXTWysv8L+1um4ws/1tzd6bqUJxX1wMCA/F3ouiavgd64pj3GwY30+B/j2HhscRoyjV4THj1QexXa5gWOMfjKAEChLFGv1W3r3EfmmIIiHYxu5wm3fAC+uNd5r+4e7o3CJjAMKsj756MSc1H38IwaeiXmzWIFj5p6nfDIXQ6u/a0OklzaOuapa+jfKj/HRs2Mn1oIjxhhdyVkTxK6CWotKZs+xEyCLJEPckbS2Z8/suvYvpOvzNPhoHCUOXcjYAH9BH+iRNexjXdj54yAynw9PDvuwtq331GIVo0vhfBDImIm+T+pnxLKriAfTqEd4N1uhIE8XsWZLf; 25:+YaM7y6YAkIoTtnf4exjYaPllyOARZQUEi0oNYGw/78XdiZLYmGwExEQEzeOYxxo3rSyXPkmodstBt4AAVPIdZkLHNDSQ5q4cSNxqYSuIr8Qv1exjH2UmIsE+YgDpomTZ3XbX5N82iuRd5nVSqREwFSOWfjLjs3lwCKYew/zeLH6dhhvA1m0kfXcDbtGDPVSWevFd16WNNakcbpIotNxyWzr4z0ASvr5s/APDbWQ1MFw9xct8wH+UqdkOiqMynul2mFiePY94zZizTzMslDxmcw3gd2zgoEd2VGWPpJJM2u/bMYA2UDcj8WB/VouhWEkxq3ZBvLYzyPqHiK/W4kftVh7H3QLVnkL/1oAUuCmortLM+Q2l6nKKDlKsEYoN5eD+jYEw3lHUjj6fYLVDx4dFHT2Zhi5nUcjt1+4VuIRPloA2oHubZYmzr1DYx+EWLjWmXa1pRN35D5SV3XzMEJy3Q== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1968; 31:hOAtQeMhoc6NyJyOYWk9ZSTpnXlJrCK+9AF4O+myYd1f44fl63XZv+0gPLGTlhvDqkR2Kvz8h17zOzfXpILPwkGO3XenzEDrKOjVWzwJd7YEaFd980ZT2WdieBgNAeVTfhdh7NpYKpCUIWgGZg55ZvDT9eyOsa6Y9pibO0T3NULZt6Ng2QEPM7T/xks93foEyIbKm4m7GvPVvmzxDD2UmCr+9QuLCAKsqzFgmPwvjCZPKXTStLs9r56ABlWk1jjfW0cx4VpWnSJrxazThW9lfw== 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)(13023025)(8121501046)(13017025)(5005006)(13024025)(13015025)(13018025)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(20161123556025)(20161123565025)(20161123561025)(20161123559025); SRVR:SN1PR0301MB1968; BCL:0; PCL:0; RULEID:(400006); SRVR:SN1PR0301MB1968; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1968; 4:Zl0B79tUjkAPx9GRtQctAMa/npatSo8Oz01OlCembwAfUAwmV4U0pykThKCpVxrlkZjW2k/YKTIK8oAO2wnFjvH7uStpokfMPFFiV0lXb1K4cu4Fj6IYFwjRJXqRSW/k8Bc5o3/JHWcWM6Tc28b8HTTLZBEY+DMfyBICnZzk3tnQZmCYrBe9+hmjIOqiLh90UgJsIRb9f/SmOGqWtT1yRK7l1g0rpHJ9oEoQxzMg4KR6oPAk3FNIrwzF2qBNHEPe9YnW34R5Ckat6AE5iojiSGwziELs1uSjRRjZIlxn4e0Jx3cLra7m8GDKpJr9+8IWjTUhRSY36fV3Q6Xa3CnCNJ8Bcuh9ib/29c0XSnRPO2iLVRjZ4BdBFX+vwfjQ6OwCmaT+jX4Re36NLV3Jxh7P46N0W1EX2TENC2EA3iC54NfmJIRHNegixq6slqndjX2K1ToasXkTZKgjnHUfJW89218Y5atJyu8QGdQkgW9l+5dbd6K0f5vgEMJoPlBLk0LletSdVW/2EExB8cE447G6k/X/RjFphVFn0+hYWFY7aAtgJlY9JwzQBxiIe0m3RzaRh2sXbWq7Sy72mr5dLE4HInYvkmtYSyGNd9N66v/aDJnYHz+TXSY3C7OXMJka4BVW5dQZ6VmduVs2oLUy4hXvXmJUfp8A0q9u/QMM6GoUgP1UVCfslfeTIT9GJAeJN9KVckqRYIZ39V0OFUVxoJ+yjrF/nDcu+3Xgrswc94s6oxt0qHkpHTB96IT5eHYvUGYxoYmT7EUKaJ8yf1FSyMA6bQ== X-Forefront-PRVS: 0249EFCB0B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0301MB1968; 23:Y/hP/bHAP2zbZTVmhkDgkYyZu0NqytzcECDFLVk?= l1MGA4LvvgHiEJAxLRDOt95HQ4lirIIdGSFlaXrkut2b/t+a+vdmfOj0VjAlIVjutAe10A7WLPXHJoEnuAilPT0H0pAgQlRlekC7eEo8znvhoSvj3OCtnGh45r+r7mTFEZlwtgZQK4quEFKgZXnUQXPitUV/bz3hWY7Jq7wxjzTUFIzzVgZOi6IURoPDfOA0gkoiwOVPCqqb6g9abkk4TE6JhEtryzjlL7/BiPw/IWJCJH4BCWY4pR1j8d7QTXkNq9VjotlFwfdipNm1QdqO0k+tUGq5LfDI0G8FB7E/zP4FAD7Tp6rWr+GFfITsaMgwdWFcq4ZyKR3qqOKk4vyrlwY0OHKr09rEg1UgM6l2d2twIKH4FfSdYVIXJfZDVMBPr1u8h8GOgeLafMGXpyiyJe9cdUet4hMhz0cWvc0WGM5Rbw+84wu+PSsGFz3QWfrAv1kF85W22ngqFGnOCtti5OXXfd3g015hKMxBpNQxR2vPFhQA7KlXSlkyJLABLpimCjx+1pzjsj3f5qnYWMB0bOuuLYf+dQiK3AEXHlhBJywnsiDxGYvu4eNMxClysL9s/Aaqwa2lHgrI51Qj0UoEfjk+gBbcsJrwr36T7scrhI+sd5PDyZHFW0eqpTO6hRU2ahJhITnlqV+Gu0Wwy1NJiESLXxBQ1zE9SCkF5a37aa7gS23RzL2EvC9Eqx8Bm43xONoIW6erUcmd2sI1UpIls6hl/746djYGravs/Z/ijJkKqZU4DpZ2IFUrQQih3RqQw4i/NWVUEu0oM6cMNPyUQcNeWxj5+r9kOsF0/NwsqBKQG65+u1GE9PvCqa5KPx8i9ydgAVfvuZhQiU1jr8Lw0vX/fT6mMHWqg1omJ3tt6RuOFjV2VGmHnrvauzP4AK/aO/P3KNHnS5Koe8AkBxI5CoUWEh47g0H3s04wBd/XhCMTUI2EdvmjMX4PwgJZS92XzItts3AQACDrv7A2UhXLQQWBqRLvKSPzMZ8SAHgsd2SaXIPnzEp/ZQfuJVu8JnXk9gxbgrj1cf/5qsdRZd6CcONZx4M0M8Dr6RMsHwA0QxsAj4iYcGbY+4TU6nv43Q6Hhd+MKkCPZ+hEjcr2Mm4LoE6MIHvrsL+2o8J8naIvDtYMY7KImcgxy50ZndtO9IaviVakLLGr6D39uxdwuWmqzEBpKQxo7KXWjFLUH3TTrBHi57Q== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1968; 6:yCEBCH87UBvY/hC+UL1J3A1BUcZWyi2Uf1xrQYa1jADtU3DJe1vFNK98qUIhRGm4XRLs2MzA4Xme/NsJH//95YgMXMXQP5L64HLfFy9YdNWtuHQyOCr1rkD6dXcuHTPJcQtobXxf9Il6sLgGA/1mi9TaGWeJQtIJN2sM59G2Kc7+DJwguD/dfUweEJ7eDjrlJX1e4UrjhXFVf9HoFQ54Oi89/szqZsavshwA18mzBj3s0Y93sb5AqSxz7fchRARffcM9leVgw85qAVRfZKyP9UKB+o5EG+VSTHM3QmayLB18gk59N7TOAGSxyn1/TrD+WjS6vVoqhF6UrxTsQRMiZSv4fb5CI93Y5bH4zsFPWe2mQBzmogE8nC5jMn1BCDIVT5aZH1sR9STgT0k0lb47CEdJ1QIguS1a9jFeO51yPc0=; 5:SRBB6Istt95e0d6q41DDxQP8i8RqukLnTEyu1VucRC6onZh1/QZRQFuDlHVVJMyz2HEgBRk0n/7nTaLwulJPTDIQWRv5DgVIXDS32VfaPYORO2ubfx71Vdk2v16/FDFRP9nuGknzJHjTY7nIsmWsNNV3PN4As5Q1W0KOwfkN1If1GmzQMGkWYQlheYt96ANm; 24:DELCOAt5V+aOZ9kufNgstZnf17+htWYBx5wiZ5kCmr4aQ2R2To2PNDWA29lpEVXhMXSd16ahY9q+wDvl+9BcslW25uKaZnRElY3MgnRWgas= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1968; 7:+JQTbbVQ3a/s/Jiw8HT1k9pnWNahC9DCw6WBFj5otUrQwdbHHnzBQrsYb/WcwFT11h7g7qd/nWwKDKfDNgyWjjwDWxXABZx9QZc6f22vgZ8nkSf0QY1QNhoCAL8ar2pzedRrS12gvuWb0vvEykzPjs3lwSpWuMkQFWZKdGwWg988QsfNtXDarExW7qYAL7NqiBpD5VI561abGKImBL5AWli1iJ1GZRv72FoF5Ru1mBrLkEV9is96J0iFUvwxRn4ktvdt2Bsg5wtLoBp9VnIAntjHsi+aVyFsn7NWOFCO7v7DuSvAo6PSFV+7laPXLi7s8i/c/hs6YU7e2lDMjLIJBA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2017 12:37:31.4648 (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: SN1PR0301MB1968 Subject: [dpdk-dev] [PATCH v1 13/22] bus/fslmc: introduce support for hardware 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 | 21 +++++ drivers/bus/fslmc/rte_bus_fslmc_version.map | 2 + 6 files changed, 171 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..a1cbbf2 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -41,6 +41,14 @@ #define MC_PORTAL_INDEX 0 #define NUM_DPIO_REGIONS 2 +#define MEMPOOL_F_HW_PKT_POOL (1 << ((sizeof(int) * 8) - 1)) +/**< 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 +71,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 026b1be..3d5c1ad 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;