From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0053.outbound.protection.outlook.com [104.47.41.53]) by dpdk.org (Postfix) with ESMTP id 21DD169C5 for ; Fri, 24 Mar 2017 13:42:23 +0100 (CET) Received: from BY2PR03CA044.namprd03.prod.outlook.com (10.141.249.17) by BN3PR03MB2259.namprd03.prod.outlook.com (10.166.74.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Fri, 24 Mar 2017 12:42:21 +0000 Received: from BL2FFO11OLC015.protection.gbl (2a01:111:f400:7c09::189) by BY2PR03CA044.outlook.office365.com (2a01:111:e400:2c5d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.991.14 via Frontend Transport; Fri, 24 Mar 2017 12:42:20 +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 BL2FFO11OLC015.mail.protection.outlook.com (10.173.160.81) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.977.7 via Frontend Transport; Fri, 24 Mar 2017 12:42:20 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v2OCfacK031007; Fri, 24 Mar 2017 05:42:17 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Fri, 24 Mar 2017 18:11:23 +0530 Message-ID: <1490359292-18773-14-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1490359292-18773-1-git-send-email-hemant.agrawal@nxp.com> References: <1489754201-1027-1-git-send-email-hemant.agrawal@nxp.com> <1490359292-18773-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131348329406955205; (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)(39410400002)(39400400002)(39850400002)(39860400002)(39380400002)(39840400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(2351001)(36756003)(105606002)(86362001)(6666003)(85426001)(189998001)(2950100002)(33646002)(4326008)(47776003)(48376002)(2906002)(50986999)(76176999)(5003940100001)(5660300001)(8656002)(50466002)(81166006)(110136004)(8936002)(77096006)(53936002)(356003)(38730400002)(8676002)(54906002)(50226002)(104016004)(106466001)(305945005)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB2259; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC015; 1:b74dGT5+2vKO+TnoiWY6WitsDvjG2BEQS/9SPnPw99wLMMgrF0EMvSVF03EoOyhNsVymzUXg7embmh/acGbfarn7IPW+zTSF8hvyQELccunQfoUdOyoMbXFVzwPbjDHhJlhVnXCxwiijxNZpDFT9sm6gmXG1uTxEXChZQHNYiBlEiomu3JOLnmZ+fX4Sh8Fe4ft+DLVgyd7k26qN/ULQg4nvKYFZLXmvoMwNpKwyaLkXt9KPVZDG0rXeaWDzRaI7FIywXymv3cixfk1nNcB5r3VM+XUPvhQNmAawS+6/CEvrccgNfNN+qKFEUBvjhQGH6Zxu54eOEVePW7vps8xAxM+1v+QKYZTB9M3m3ImIPoS0NfxlH0QUfe1s3/UzRVNG//j7csbg6Am/OK7dX9zKgKFw++/Uslj6n3eu/yNexUxdc2DNvR7uI4Erb70W86dHhYRG9cy3LUjilDKy7oxsZOIkYLsUtOuN2w/k/Sq5BZDEBiLzqyNu41u+UcWVBt+9m5ivhpSBk8+owGmLUz17lMPy+hKe6ba6aSY0LxaJw6CR2ZfMiKNYJZpk86gjOXHHMtkuC9KvOE+e0g8RG34GwtpWbbdZhyoTYdKCLnuCnuwcwhjjz8K08LM/+vUdtFOkxPVTiVdgxfYZJsFjkFzKGA== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: fe8b7ea6-c04b-4ac4-1d68-08d472b33699 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BN3PR03MB2259; X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2259; 3:fA5N7CXYBnQKaAfPsKb/xTESpldzKtoNVhZV2qkl52Z2c/G7XJ90R9cZBi1Fw9MWKfQAKJpMhs61sk10NGkAMGceCyjt9qwEWsDViXbY8Qz3WjPnsDNFRIAEegWcrBGXGI8kIiIQjZaVQJyqwQs2EebWhTZ7g/+tT5IDxiI8EFUFcCK8AWKDy7B0+lnAC/RMH2ABCjf2ibji/Lr64Q4kBC+wt3haOU1xlNfXUVJKRKzt1Fl8m+0OMurEXdpZpWFaXOplfgn0E2UnQ2XGP+OuVpcJbdlw0U4aBJxujwGHdthF8OGJzqzf4GcnxiBUeEGFMCFnrqN7g6CwmlXG3IBlcNTI+k8JSC9dvuXYQMnWYUjSZzwgTMNY0BfH4IR1hWgc; 25:m5Hs+cNnDRorcFCMqZvTR2OFL+CLSlGrUskvoYlVV9v3m39UDnEQbjeZTYxELbT5UaFW/L8miaEZWwWPEA6FoFKKE6IM4SS1DXdbGbW0flluqF+FUbBVwrThRL7Bwm64vUA8Ft0UVpfsjPrQ5cmjuLQkK7OpnH7GkAbP7GZjcCRoZ2TMfSxz23B51RAw3mQisunG1QjI4iCuV/gdIvhki3URkupPNOrgSwXUxcjFiMeQzSk3zuVicWAp1x3DqNn6lz67THv45oyUtfPltXePxumNpC1qUlqF6OiTZk8voe/ZKxzaMHtJnphJBqpV96+ZJIPrsZJRxgbPF0bNB5bLaYdiNl23NWYyC8Vax7CUK+3jOyqIOKjL5FnLRoU0r7z2TjJDKt9iBa+FErgG54Ra0iKq4c+bMypdcH9XIY9p9xopRlrX5fUW5hmzFUARIneVkDZxMA/a5UfspU6YmQ/4Dg== X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2259; 31:T8ZDJShPr/yqTle5WIIqirq61PYCQFmOiqjhE9zKJYiUnQrg/HGFHpTQ45H8snAyKTT6b//R8MCt1aTXPQLSD/xiGkurmzm0r0ZqTaopF4TNhx63VzVEFZqxmCJ1HUjUb3CVWvv++PIElAhNlv0xwK2cMv3FuMsyfpr3t2BeNKv0zITNVyZ45cI5RmbESem2qGjR3pX56WcxpJI4uMRScuxqEPApPeHMZ09cCtaBroHDChJqLyj/bWVtl6OgmgcKYCPg1zrqABwK4TBGUmJyaw== 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)(13018025)(13015025)(13024025)(5005006)(13023025)(13017025)(8121501046)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123556025)(20161123559025)(20161123563025)(20161123561025); SRVR:BN3PR03MB2259; BCL:0; PCL:0; RULEID:(400006); SRVR:BN3PR03MB2259; X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2259; 4:b509HjKhxkZJbBUvmNnTpx9YtUfxDxTPMH1v3XCm/ELyhmxK5sxcjgOofXPxNU+K9jmY2ay46RTMlnJvFz5RNPSuo7iuh3zEhaYNJUKuyQGgLE/6BjT0PgAO+9iYvG2gZCOW1ZTXGr9BPjLOaO4dEvcEamn6ZCiRGTputb1bmOF+BZqEQZztxR+edUL0nlkZ+WWwyAH5IyUoEBjoFeWGRP1T3mOXmvy5ThxuGzHmwIQ7Pp+zssipWp89G7gtrGb6gWHAgzNY3YvGqfa5dWyIc4d6uzLjxXb7HkIrPWLyr1+918If8MV01RFRXYA2DOpBYxQCTveHfbWewDAc/AvtGVuwQdaI9v1fHLWzJ9wtydHb4cNj2b/9VhT9HEA9d159kNTYYSQsjCh+o7zpvEXmdLBssmOoUYanpl0zPrV4peCFGOYYf+gZg7G/cVsfp/1VaD0fmJygQeKEiu88jMIurFyPMg4+wjN0SSRkF520tByNU/uQZ9f/M8QKKpoVKSjoAjrVT7hIne7uuSaw55bmRWaYJfop0+fahbEIRQsnAcWageBOjTOJQSKbyA185aKW6Ldmr+QW5vBlazKqWZ8rghf9P+McKIyEHJKJOJ0qugr6a+RwOPPfDBrdFBcQqQBhY+xP2wXgaXAZMI+VNWEuGQ/adFE/g3zsKq4lCR33D1b1pooYUvOCIf4yCFv7lzP9TLW/PSYU/1xlzqA2SGxA7nhl0T6wrCu1t5giJmVTOrJuFPGUCIVz89CGLr5zbAwOYMkkvo3Q9SdlfeB7Enewug== X-Forefront-PRVS: 0256C18696 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR03MB2259; 23:InGrB++PhXA22jx7SfkkIyXZE2ZIeWYGC7bVj3J9O?= =?us-ascii?Q?6Chg/Hw62rY+bUPIvIEFJIHS+eWx74kLBOu2MxP6Qnfy5YljRQHE5qvPOa4G?= =?us-ascii?Q?hBPWfHn6sOANx6X1xdiRa1YUK/LmGQV96+lwkWsOwTVTeGUA2jJypUSKTQ7b?= =?us-ascii?Q?uvYyZiMW3AsEPT4p8pqKOZzrTphbLMSEVnCtrdomDK5JBUIYEJ7oIuXVttwu?= =?us-ascii?Q?LD/X9BD2qSkwCtA5jKcY2FKdKtqz9Dz2dHxRASG9yxFSnFLUrJuK8uPhzJG9?= =?us-ascii?Q?oQbxKl8uEUIEAzxogwQxKeSD07qbEfmb/AWvLldo7DpUyaf6m0qBkPswPYb2?= =?us-ascii?Q?YAzjcJovgt/jAvEDgEBHEfPmWCIQAuBt3h7pnUxfrIBSLdhMT0kdyzDbRygx?= =?us-ascii?Q?s//8Bm5cdSC63KlKi6QnlaCcShKxrCl7+2HLk038L/l3L22gkD+42hg8UbAW?= =?us-ascii?Q?+LU5mE5PDzGsP/pAGaahY2aW3/lu6qdSrcwFFZdB72W73aJ5W9g4M82Znfzy?= =?us-ascii?Q?MsCZCHe77QurP3HH9j2Br3C+IRUDLwxwr2Cu85GUdCEmiDYDg6Ac2Fzyd7ui?= =?us-ascii?Q?vMCJGv+8hoAUocTJtc9+I7yzfENd/V9YqdmhkNV57v84rWzKRQkRa1Wg9jyw?= =?us-ascii?Q?4j63kTRI7kkGJgOHX6f/pYQl+1RaW3cXQX20RnmRZ1tF8YPZ+YNumjhU7i3D?= =?us-ascii?Q?cT00ZET7IsNLU35GNOXNRvy5AuvTHkFFHIbmqdzSfHkd8V4lmfzbwBNq3V67?= =?us-ascii?Q?Ivyb5vJq3XzFNTqfgYc3OO1onwu3EK+ZZ/0JjEHefh6Gf01RNMZvjBw/bHVg?= =?us-ascii?Q?pK/k/lNgDlQNdpiv05ULPRu/KYZume6vGzvRBBNSlAUcu0I9b7namk1j7Mg9?= =?us-ascii?Q?5xspFQ/8ol13lwRn9jWa+j97RWARh4rVBRxM2q1vF7yX/rOOgGiQURLkJWmN?= =?us-ascii?Q?JIuPlXTvAWCW08K8k8Fn6I91sE3CLZwbAHgLWGJ6XN4SMXMECaHkpQGBdW1v?= =?us-ascii?Q?UGPxDvgdLFcC4HfJk5Wvk2BBICAOEUQo1CydYkSmVv0aOVmmBcnai3VIXvTO?= =?us-ascii?Q?g4uRBgyM+EPPIPLJI6uffcsfg6WIknvIWYfl6xo5G/7ATo8EMEAPtVrKnzYe?= =?us-ascii?Q?Jbxwz0PktUqgDDfFyEeq8yrdx7yyMzs7XdLvsX7LU6CEhS0EHG6YA+D1aM2e?= =?us-ascii?Q?RgTlgP0WgTJ/FWNwLlfIE6TD7CyI64gkoJz?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2259; 6:pNq/1eD5ymBh89anGjD/9tD01mPq/5nbDwfxB6ieHIcmb/0RhD+yDl+58KaxmuAVLUpJDyjNcaGLE6LZ3omIiQDB6XJXZMZmRuhS+nLhHLYMYiCVxPtzvm+wZ69/Km/Uz76Rz7cmU4DbJdIxlMhIU3hY2YsWkXIdC2r3z6J7Q2nmzj21RWvWNHZHOQXrp2PeFo2pu6JtK9bc+/+2FYjGOh1mBbprNF7byrzE7FF+sP1AlDkUWfy6Sz00gWb7b5fM7pXqKmdclqZColHQ8oClr+jt3wqdZ2vYyx8xbCNjR181u1DAjmywwVnxv/k9qci/VyLaAjRhVtHWpgpqzmNVtG5SjYfsOnRGMwLOmJSLzoo77WdZ3gS9TuKnWU7AnnkmkCsVpR/r8uycEyY9dRZqMoHqhIgNfOoSy/j4a4Jasp8=; 5:pEGZ6hvgHGl6BzUpVvErXQbwvxSWoobKg0U+vP4qPJhKnz0ByDBbAoHjYFyV4geiA5r6T+aJdeut/ubWajjNoyHirXcs1dH/Cb60rcfhyEQykdP/pTuegb/ymmdiqL4xALqIADKeiGiQBIbFEc85IGsPo0hRiHydHohr3mn8YYHZbqaYbgQkn9KEopFmId3j; 24:wgq4+6nrrcBRNH1TfQKse9jeSDvt9akUEfFKxlkDImimr//gyrYhhdVhPr3uV6xkDz3zhmj8o2DtA5NfscNNqg6t58v0kZEFNLhnqPM4GOE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2259; 7:mpRd6qDImFQ84Aos354v+zlS4xebaQxlaNHk/2znEjoW3l50iEQQTux7JeSwC+pPRVxAt/UP9nZS/u+/968yu8Rw7T8aLeX/njy6RcdaJvewPhVsrMBM4762luYLn1kFaB2Ytt4mnacXp71VrmvS91JJFf/AKYkl7Qc/POQsfO5kNUu5pVXnxxjsZvh2QzKkjRXnk9Y3RJ/w6fIWcLi7HPWjzgsXOl2MGIoPMjKUVQSh8Bvb64slnCaf3sFnN0L4nAP93IKEoRnRJzlogDDmvP8lm/J4/DtfeKP51tgO+d3KCtXNBO1uCuFnGgUdDb0kWRqAM55vScn632Rv19/u3Q== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2017 12:42:20.5083 (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: BN3PR03MB2259 Subject: [dpdk-dev] [PATCH v2 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: , X-List-Received-Date: Fri, 24 Mar 2017 12:42:23 -0000 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 1edbc63..564d663 100644 --- a/drivers/bus/fslmc/Makefile +++ b/drivers/bus/fslmc/Makefile @@ -68,6 +68,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; -- 1.9.1