From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0067.outbound.protection.outlook.com [104.47.34.67]) by dpdk.org (Postfix) with ESMTP id 9A53A1B1BB for ; Thu, 28 Sep 2017 14:19:42 +0200 (CEST) Received: from CY1PR03CA0002.namprd03.prod.outlook.com (10.174.128.12) by DM5PR03MB2699.namprd03.prod.outlook.com (10.168.197.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Thu, 28 Sep 2017 12:19:41 +0000 Received: from BY2FFO11FD033.protection.gbl (2a01:111:f400:7c0c::100) by CY1PR03CA0002.outlook.office365.com (2603:10b6:600::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.8 via Frontend Transport; Thu, 28 Sep 2017 12:19:41 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.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 BY2FFO11FD033.mail.protection.outlook.com (10.1.14.218) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.56.11 via Frontend Transport; Thu, 28 Sep 2017 12:19:40 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v8SCJ729008785; Thu, 28 Sep 2017 05:19:38 -0700 From: Shreyansh Jain To: CC: , Date: Thu, 28 Sep 2017 17:59:36 +0530 Message-ID: <20170928123000.1711-17-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170928123000.1711-1-shreyansh.jain@nxp.com> References: <20170928113344.12248-1-shreyansh.jain@nxp.com> <20170928123000.1711-1-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131510747807101789; (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)(7966004)(336005)(346002)(39380400002)(376002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(316002)(5660300001)(85426001)(76176999)(104016004)(16586007)(305945005)(356003)(47776003)(53936002)(50226002)(48376002)(50986999)(4326008)(105606002)(50466002)(106466001)(1076002)(33646002)(2351001)(2950100002)(189998001)(2906002)(54906003)(97736004)(8936002)(498600001)(77096006)(6916009)(86362001)(5003940100001)(8676002)(81166006)(68736007)(81156014)(8656003)(36756003)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2699; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD033; 1:+W7T7CMJu76bZpFVoBqI+thkgfHpF4dnYzihAV5aXtq9Uw/5rqhGXbSL8tP50Hv0Hate641zByZNpgBR8Yj1+xsYZnPruu9K0s0JOUrCTSVIWhhfBUxnTwYblEbTxgFN MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c99e7854-6dc4-439d-2855-08d5066b3194 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017052603199)(201703131430075)(201703131517081); SRVR:DM5PR03MB2699; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2699; 3:ECddMD4o8glvZVPH2svtNBFZAi8Yvgifdpkd9ffpLp/QIhWkQ3mskw9PP/1bPjlKN8DKgxM4URZjtBNRsflN/wrGtElbWNWZlXmKD20TzEiVa4UPvBISVLiVBslXZmHip+DmrOAkVH0ULwVZlHMT0GTd8AjFpNckIo4amBmMaNEJCN/p0iUwmCMgjcj4ugcDDhI4HSV1SzeTuIAE27Bcy3FVVOUiCUmPhPHqrYPyuCddjMdunCY9/di+D2ChOJan/raHBaDk0TXh1+Zy7Po8RngXRyWzYU2rYk4XpibTWak1AjaBdOJM1it9JiVls/hYJvkiIP2bdaJJFe6pFLwBfYtcLyNJ53UpjLkUu8Ep0E4=; 25:p2GYm+pmtkff7VQIXMXYiVqUMYXHnEIKDO6uLXkRRwrAnROFEWSmIRd5RBBlTaXUwSRMxJMuuGue7QCHyrQBWSNNdtgbtFkZRT/rwncmN8/fGQdCDFFjW+SyIbR9W9T1RVTAem5BunvDsKdHqv96nMm6Nardp6hwYRDoV71O8eRvH/pmR8UIuWVj0BZ8nELaMSCcpoaQoN7UkgRKMf/dGdMknMzP/wYeTPsBwAop4PSm01cb+cgD/wkCeBCDwj66tqRTirm3Fn4Teq8XuuxMPGEd1BsHvTqHiCTqg9iYPAAbKCj+vBMmIEHSvXEW5D4TKfhVhSolaBzu7/eeRUBbfQ== X-MS-TrafficTypeDiagnostic: DM5PR03MB2699: X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2699; 31:KRi/etrXeyrNsGuUx/dQPqpx4od+Q6XXnZNfrtY1mR78qUoIhvj0UptzeH9vzbz3VSlPWYutN7OxhfGT82snRZEfW3qlZ52LBkKZvh1tDFnhpb2X+7jG/sHYF4m6pc0juPa4kE/0EMUfVXMlnu1ol1HX1iCzyu1tGbjwzzidWnRbYNUmRPEgisbSkrbMtY8sk6SFeeoTDGplBQUNgEnFmABIsM9AWGinPzgKT1Hn17U=; 4:pGWB1hcM+8L4HPBsB7uFwH3EUJNhC94ymI3xGwMt2ygOfY7SmJJGlhTq94SUJ72XTdtt0ff+DqveNzIYAzQvz2Y0DjQexct/K1jy5p+e+yBP62R91M+t45eB/g59fFDbp/m62JQv+X+LbiPfLjwrRKHl90dchCyNj7XGEAdtAPjuQLjmsw3rGOgHkAGdcxrteuGtD/KvjUruPuX7FDF0MtirGrQX7vsOPNh5CdSB1T90p1nHfKXowBvFGKmtfH+CIGBnOUuRflfnmgAFUdkQV/XnPQwh5wztG96Lznn8Ng4eb09vnanbTnlzGnhO9COTPwsr6LzcvUjnKYQtAg64NE397fWuieZu9V1H8lywJf8= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(227817650892897)(275809806118684); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6096035)(20161123556025)(20161123559100)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123563025)(20161123565025)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR03MB2699; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR03MB2699; X-Forefront-PRVS: 0444EB1997 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB2699; 23:vmIkMbjYnacMs+fL5KCrqqGHe9Tr31CkGFfUEa1aX?= =?us-ascii?Q?c1c1YeB2WhPqjLVRZ4DNbUNYmH+efEOSJNUa23JvF0HxyS9FDeCyHVSw4Si4?= =?us-ascii?Q?SFA/gVFneX0+HxK0cqL0enIAaWRDCiTsHPFC7P2iog4GuqsZz2NmQUUYiTqr?= =?us-ascii?Q?UIjHqGKF05qFta2x7AVMrBThvu9QxL4d3JISARakaEnMag5O2baDVCqLunT/?= =?us-ascii?Q?4QX0rYf4FJt1PwKP+CqUy7l6FrCIEU6T+vUQmRdLjMQaY8Sb29HUJjt6gv3b?= =?us-ascii?Q?7l70VFLvUqSVtBUWhDGsVkNeIysSXnWcBGqD3SeEUVzFWwe8OjNBDygG4/af?= =?us-ascii?Q?8k6TjFHBak0yXYiXxMWlHqIMEiZuxZ58pJDq9AbUoJe3qqpC5GN5dWSKZtq/?= =?us-ascii?Q?9Rdk6bbmLD8Jrb5YSD0TfFlv6w7hDeJMhisO0gOOiHkdWWq+ncjI0KwkUq3R?= =?us-ascii?Q?zXBuHFAQvhGdVX1BaHq+AjF9BvXnqDB4VMEC3CDY/ZOOdYrzAVuKzMzugLzc?= =?us-ascii?Q?/oQtfdLQsvC5HPNIpM2AiYAvUGd87F2jceQjU5BEdqLgv8nXBq2r26uDZ/nx?= =?us-ascii?Q?DZ6IjXYYMsm6UvwFYX/6AKWrdqRKLzEiKLRQ2xmk0bNCyD1xcRWkqe9zcRpm?= =?us-ascii?Q?ylg2QBFlzRM/rG3kAIlF82Ue2ujtRqGL1iwn7j/u2Rd+aRD9IJcPlpiGq08g?= =?us-ascii?Q?B/CFUwKRCe0YBvZM4s/Vdyhn/mzxqkIAl+RBuBFJhCt3IhRm84Xh31pYRy8k?= =?us-ascii?Q?4WuGI5QMSAtKywcKi96LATo7dDuNDs3RjQGxLi2ZAHE0H1xW05N7yxBhiHVu?= =?us-ascii?Q?Ai/8uGSenGsnhxeWspsgPZAQGWmvIMu+DyXu2TNJCVQ9MQIqcpdNwcbbLloE?= =?us-ascii?Q?m0CY0/9cznchzOsxqCi6+wZEen24qLm04NQAMc8jRRaULgGGhgUAfDCqQkaN?= =?us-ascii?Q?Gh+5QymyPaHjhz9Yj8UtTGCIkz8SDUiq+ygfrBi0ttWcbR5o8cAgos3DI5Kz?= =?us-ascii?Q?hd0vuQ2wrUBmiywUOgD0Xjc43HbPFJQxP6R8CB178YX0xAiqMpKmyDwXO2Qv?= =?us-ascii?Q?5g02rzwDEedZFOe8GCzYkuFj+MgI3YC2kdx/VYgQMFDZdbHC0Os/y2m0PwAK?= =?us-ascii?Q?dMQU5aeLf+S38Z2NnS4/02SvNnOyxr2Kflbt4VTK5ENAcLUEGErvM75tbhWS?= =?us-ascii?Q?ykjF89TOgiCEcayGkw5SRWVLc8WrikEjCIS?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2699; 6:ybVGQlMrJ/aPMQA6pKvEKCuKze6qWRkkhiDgGoe8U6p+p09l+pjMI9BUqmzcALN0B+7DmwgKI7gjwiSMYN3vCYoiwocmuOaOa4MsWPnAFLjCApRc9iMTGJe4g8HoMp+OAaJx0uAS5/d6PYwstXpvKjh9ywqdvmA2VBeWI3fAlDozLg1MhZ/blOYq7H2XTuzj4Z6MUmFwdtptcebO46GQWCpWusKgrRRHg1+4LZV4W0XWsx4mwBq8k7ZVwjtaJp6zoreqnLh6JWPFmuFSYbpyrqubXsa2yDqPjun3xR1fAwOgX/JRR0aYo7ky3tlZx2kyzaCbG3IOGOUJt3Gczb16fg==; 5:bgqcbRP9HkGXYPwCwwpshSfkB0l8BrG2uM0GdrncrIG6m7NDrgf2b5svtla0QCZpLShMEsV4TucnkgfyhrAR8L+Dl7+MDE1QxLhvmhCb4FT7O08DqoSxjv8kdC/E+HPwmuVHDc3XsE+6Tq9JPIYouA==; 24:4sXv3+1t8s21nUPDSBGjWBQSYYsdQYif2y+5tuUBbiKM9uNiPYimFLkKL7sAE+Yk4e0n9EWuUq3cJKL4vPhRlyukt7t/ZYq+La2OyGWobhQ=; 7:lofGQr2xilsiUYcwmdcYcG9EBZuMbnE+H1eV3OC8loyjG4KYReG3/JVBR/U4cbYY3wtmly6tZzqCTijs86thz6CJtfKU3nUN0KP/iONjB2XNg9GLxXzNZle+AWn1inCBKG8yT9q+stLGxR2RDeZqrylIXregM3e3hqZi5uwfx0XxISrDGNkFXUiCRzkjPUQHeglIOP7ZrrBpHKdcuBmSgGgb4ELzp9dvNocpGRF7r78= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2017 12:19:40.3981 (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: DM5PR03MB2699 Subject: [dpdk-dev] [PATCH v6 16/40] bus/dpaa: integrate DPAA Bus with hardware blocks 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: Thu, 28 Sep 2017 12:19:43 -0000 Now that QBMAN (QMAN, BMAN) and FMAN drivers are available, this patch integrates the DPAA Bus driver for using the drivers for scanning devices and calling the PMD registered probe callbacks. Signed-off-by: Hemant Agrawal Signed-off-by: Shreyansh Jain --- drivers/bus/dpaa/dpaa_bus.c | 248 ++++++++++++++++++++++++++++++ drivers/bus/dpaa/rte_bus_dpaa_version.map | 47 ++++++ drivers/bus/dpaa/rte_dpaa_bus.h | 25 +++ 3 files changed, 320 insertions(+) diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index cc343b3..8017df3 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -63,9 +63,21 @@ #include #include +#include +#include +#include +#include +#include + int dpaa_logtype_bus; struct rte_dpaa_bus rte_dpaa_bus; +struct netcfg_info *dpaa_netcfg; + +/* define a variable to hold the portal_key, once created.*/ +pthread_key_t dpaa_portal_key; + +RTE_DEFINE_PER_LCORE(bool, _dpaa_io); static inline void dpaa_add_to_device_list(struct rte_dpaa_device *dev) @@ -79,11 +91,247 @@ dpaa_remove_from_device_list(struct rte_dpaa_device *dev) TAILQ_INSERT_TAIL(&rte_dpaa_bus.device_list, dev, next); } +static void dpaa_clean_device_list(void); + +static int +dpaa_create_device_list(void) +{ + int i; + int ret; + struct rte_dpaa_device *dev; + struct fm_eth_port_cfg *cfg; + struct fman_if *fman_intf; + + /* Creating Ethernet Devices */ + for (i = 0; i < dpaa_netcfg->num_ethports; i++) { + dev = calloc(1, sizeof(struct rte_dpaa_device)); + if (!dev) { + DPAA_BUS_LOG(ERR, "Failed to allocate ETH devices"); + ret = -ENOMEM; + goto cleanup; + } + + cfg = &dpaa_netcfg->port_cfg[i]; + fman_intf = cfg->fman_if; + + /* Device identifiers */ + dev->id.fman_id = fman_intf->fman_idx + 1; + dev->id.mac_id = fman_intf->mac_idx; + dev->device_type = FSL_DPAA_ETH; + dev->id.dev_id = i; + + /* Create device name */ + memset(dev->name, 0, RTE_ETH_NAME_MAX_LEN); + sprintf(dev->name, "fm%d-mac%d", (fman_intf->fman_idx + 1), + fman_intf->mac_idx); + DPAA_BUS_LOG(DEBUG, "Device added: %s", dev->name); + dev->device.name = dev->name; + + dpaa_add_to_device_list(dev); + } + + rte_dpaa_bus.device_count = i; + + return 0; + +cleanup: + dpaa_clean_device_list(); + return ret; +} + +static void +dpaa_clean_device_list(void) +{ + struct rte_dpaa_device *dev = NULL; + struct rte_dpaa_device *tdev = NULL; + + TAILQ_FOREACH_SAFE(dev, &rte_dpaa_bus.device_list, next, tdev) { + TAILQ_REMOVE(&rte_dpaa_bus.device_list, dev, next); + free(dev); + dev = NULL; + } +} + +/** XXX move this function into a separate file */ +static int +_dpaa_portal_init(void *arg) +{ + cpu_set_t cpuset; + pthread_t id; + uint32_t cpu = rte_lcore_id(); + int ret; + struct dpaa_portal *dpaa_io_portal; + + BUS_INIT_FUNC_TRACE(); + + if ((uint64_t)arg == 1 || cpu == LCORE_ID_ANY) + cpu = rte_get_master_lcore(); + /* if the core id is not supported */ + else + if (cpu >= RTE_MAX_LCORE) + return -1; + + /* Set CPU affinity for this thread */ + CPU_ZERO(&cpuset); + CPU_SET(cpu, &cpuset); + id = pthread_self(); + ret = pthread_setaffinity_np(id, sizeof(cpu_set_t), &cpuset); + if (ret) { + DPAA_BUS_LOG(ERR, "pthread_setaffinity_np failed on " + "core :%d with ret: %d", cpu, ret); + return ret; + } + + /* Initialise bman thread portals */ + ret = bman_thread_init(); + if (ret) { + DPAA_BUS_LOG(ERR, "bman_thread_init failed on " + "core %d with ret: %d", cpu, ret); + return ret; + } + + DPAA_BUS_LOG(DEBUG, "BMAN thread initialized"); + + /* Initialise qman thread portals */ + ret = qman_thread_init(); + if (ret) { + DPAA_BUS_LOG(ERR, "bman_thread_init failed on " + "core %d with ret: %d", cpu, ret); + bman_thread_finish(); + return ret; + } + + DPAA_BUS_LOG(DEBUG, "QMAN thread initialized"); + + dpaa_io_portal = rte_malloc(NULL, sizeof(struct dpaa_portal), + RTE_CACHE_LINE_SIZE); + if (!dpaa_io_portal) { + DPAA_BUS_LOG(ERR, "Unable to allocate memory"); + bman_thread_finish(); + qman_thread_finish(); + return -ENOMEM; + } + + dpaa_io_portal->qman_idx = qman_get_portal_index(); + dpaa_io_portal->bman_idx = bman_get_portal_index(); + dpaa_io_portal->tid = syscall(SYS_gettid); + + ret = pthread_setspecific(dpaa_portal_key, (void *)dpaa_io_portal); + if (ret) { + DPAA_BUS_LOG(ERR, "pthread_setspecific failed on " + "core %d with ret: %d", cpu, ret); + dpaa_portal_finish(NULL); + + return ret; + } + + 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; +} + +void +dpaa_portal_finish(void *arg) +{ + struct dpaa_portal *dpaa_io_portal = (struct dpaa_portal *)arg; + + if (!dpaa_io_portal) { + DPAA_BUS_LOG(DEBUG, "Portal already cleaned"); + return; + } + + bman_thread_finish(); + qman_thread_finish(); + + pthread_setspecific(dpaa_portal_key, NULL); + + rte_free(dpaa_io_portal); + dpaa_io_portal = NULL; + + RTE_PER_LCORE(_dpaa_io) = false; +} + +#define DPAA_DEV_PATH1 "/sys/devices/platform/soc/soc:fsl,dpaa" +#define DPAA_DEV_PATH2 "/sys/devices/platform/fsl,dpaa" + static int rte_dpaa_bus_scan(void) { + int ret; + BUS_INIT_FUNC_TRACE(); + if ((access(DPAA_DEV_PATH1, F_OK) != 0) && + (access(DPAA_DEV_PATH2, F_OK) != 0)) { + RTE_LOG(DEBUG, EAL, "DPAA Bus not present. Skipping.\n"); + return 0; + } + + /* Load the device-tree driver */ + ret = of_init(); + if (ret) { + DPAA_BUS_LOG(ERR, "of_init failed with ret: %d", ret); + return -1; + } + + /* Get the interface configurations from device-tree */ + dpaa_netcfg = netcfg_acquire(); + if (!dpaa_netcfg) { + DPAA_BUS_LOG(ERR, "netcfg_acquire failed"); + return -EINVAL; + } + + RTE_LOG(NOTICE, EAL, "DPAA Bus Detected\n"); + + if (!dpaa_netcfg->num_ethports) { + DPAA_BUS_LOG(INFO, "no network interfaces available"); + /* This is not an error */ + return 0; + } + + DPAA_BUS_LOG(DEBUG, "Bus: Address of netcfg=%p, Ethports=%d", + dpaa_netcfg, dpaa_netcfg->num_ethports); + +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER + dump_netcfg(dpaa_netcfg); +#endif + + DPAA_BUS_LOG(DEBUG, "Number of devices = %d\n", + dpaa_netcfg->num_ethports); + ret = dpaa_create_device_list(); + if (ret) { + DPAA_BUS_LOG(ERR, "Unable to create device list. (%d)", ret); + return ret; + } + + /* create the key, supplying a function that'll be invoked + * when a portal affined thread will be deleted. + */ + ret = pthread_key_create(&dpaa_portal_key, dpaa_portal_finish); + if (ret) { + DPAA_BUS_LOG(DEBUG, "Unable to create pthread key. (%d)", ret); + dpaa_clean_device_list(); + return ret; + } + + DPAA_BUS_LOG(DEBUG, "dpaa_portal_key=%u, ret=%d\n", + (unsigned int)dpaa_portal_key, ret); + return 0; } diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map index 9f41c77..853bc47 100644 --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map @@ -1,8 +1,55 @@ DPDK_17.11 { global: + bman_acquire; + bman_free_pool; + bman_get_params; + bman_global_init; + bman_new_pool; + bman_query_free_buffers; + bman_release; + dpaa_netcfg; + fman_ccsr_map_fd; + fman_dealloc_bufs_mask_hi; + fman_dealloc_bufs_mask_lo; + fman_if_add_mac_addr; + fman_if_clear_mac_addr; + fman_if_disable_rx; + fman_if_enable_rx; + fman_if_discard_rx_errors; + fman_if_get_fc_threshold; + fman_if_get_fc_quanta; + fman_if_get_fdoff; + fman_if_loopback_disable; + fman_if_loopback_enable; + fman_if_promiscuous_disable; + fman_if_promiscuous_enable; + fman_if_reset_mcast_filter_table; + fman_if_set_bp; + fman_if_set_fc_threshold; + fman_if_set_fc_quanta; + fman_if_set_fdoff; + fman_if_set_ic_params; + fman_if_set_maxfrm; + fman_if_set_mcast_filter_table; + fman_if_stats_get; + fman_if_stats_get_all; + fman_if_stats_reset; + fman_ip_rev; + netcfg_acquire; + netcfg_release; + qman_create_fq; + qman_dequeue; + qman_dqrr_consume; + qman_enqueue_multi; + qman_global_init; + qman_init_fq; + qman_set_vdq; + qman_reserve_fqid_range; rte_dpaa_driver_register; rte_dpaa_driver_unregister; + rte_dpaa_mem_ptov; + rte_dpaa_portal_init; local: *; }; diff --git a/drivers/bus/dpaa/rte_dpaa_bus.h b/drivers/bus/dpaa/rte_dpaa_bus.h index 789882e..eafc944 100644 --- a/drivers/bus/dpaa/rte_dpaa_bus.h +++ b/drivers/bus/dpaa/rte_dpaa_bus.h @@ -35,6 +35,12 @@ #include #include +#include +#include +#include +#include +#include + #define FSL_DPAA_BUS_NAME "FSL_DPAA_BUS" #define DEV_TO_DPAA_DEVICE(ptr) \ @@ -47,6 +53,9 @@ struct rte_dpaa_driver; TAILQ_HEAD(rte_dpaa_device_list, rte_dpaa_device); TAILQ_HEAD(rte_dpaa_driver_list, rte_dpaa_driver); +/* Configuration variables exported from DPAA bus */ +extern struct netcfg_info *dpaa_netcfg; + enum rte_dpaa_type { FSL_DPAA_ETH = 1, FSL_DPAA_CRYPTO, @@ -131,6 +140,22 @@ void rte_dpaa_driver_register(struct rte_dpaa_driver *driver); */ void rte_dpaa_driver_unregister(struct rte_dpaa_driver *driver); +/** + * Initialize a DPAA portal + * + * @param arg + * Per thread ID + * + * @return + * 0 in case of success, error otherwise + */ +int rte_dpaa_portal_init(void *arg); + +/** + * Cleanup a DPAA Portal + */ +void dpaa_portal_finish(void *arg); + /** Helper for DPAA device registration from driver (eth, crypto) instance */ #define RTE_PMD_REGISTER_DPAA(nm, dpaa_drv) \ RTE_INIT(dpaainitfn_ ##nm); \ -- 2.9.3