From patchwork Tue Apr 11 13:37:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 23472 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 2EE1CD145; Tue, 11 Apr 2017 15:38:34 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0069.outbound.protection.outlook.com [104.47.38.69]) by dpdk.org (Postfix) with ESMTP id 4C9A0D00F for ; Tue, 11 Apr 2017 15:38:20 +0200 (CEST) Received: from CY1PR03CA0028.namprd03.prod.outlook.com (10.174.128.38) by CO2PR03MB2277.namprd03.prod.outlook.com (10.166.92.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17; Tue, 11 Apr 2017 13:38:18 +0000 Received: from BN1AFFO11OLC004.protection.gbl (2a01:111:f400:7c10::116) by CY1PR03CA0028.outlook.office365.com (2603:10b6:600::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10 via Frontend Transport; Tue, 11 Apr 2017 13:38:18 +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 BN1AFFO11OLC004.mail.protection.outlook.com (10.58.53.75) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14 via Frontend Transport; Tue, 11 Apr 2017 13:38:18 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v3BDbY39023442; Tue, 11 Apr 2017 06:38:14 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Tue, 11 Apr 2017 19:07:18 +0530 Message-ID: <1491917847-3935-13-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1491917847-3935-1-git-send-email-hemant.agrawal@nxp.com> References: <1491917847-3935-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131363914987140785; (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)(39840400002)(39860400002)(39850400002)(39380400002)(39410400002)(39400400002)(39450400003)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(8936002)(356003)(8656002)(8676002)(189998001)(5660300001)(110136004)(6916009)(38730400002)(53936002)(47776003)(2950100002)(50226002)(54906002)(85426001)(97736004)(81166006)(86362001)(2351001)(76176999)(50986999)(36756003)(105606002)(106466001)(305945005)(104016004)(4326008)(2906002)(77096006)(48376002)(50466002)(5003940100001)(33646002); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR03MB2277; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11OLC004; 1:PoLLNR4VjX9gM4eeg/OKUjsThiCsQRoW8osaGH50oLMUDD/MH7/2fl0eCrhPMqr5n83Ra3/NRhRPGu2teC7RpMBZH2zWGwHORI8TL5q9EzvXx7aO7Y61t5OkkT/OT6V5JdRFeTWrN/3HlXDWORZIBkwiLDMXIEZavbafhF99W4hT+/4RFn0dZUuDTP/pO6L5osGE89Sbg8WCFGzAxwat4qQQGd0m6HxBC2V4un02Wapzo3+PL+baeWBl6mxYYYFbdV/zRA6y6PeNKm+ZUGnMRNDW/psC6ktwO3rAyDgkmuVMJwNG7OuMhLrDVbr1UWR9EuBaWJrjoRbn9hNEXMkRZFG5KjDugCNEpn7RXXCXAoCkftBuhLSz4aXwf4jKSXSh8jXg82n0A0cRRQF4Q36VZLTvWDeVdA/yXLq/r7IruQE2a8ZgcIq+UWEyvL2J8ajBgR4jbWpZfxlFWpRvF0i+ss5IJCxQwSrAiovflN06+Hukw+eJPPbRRboHgrUogWXzFO5pC1vxUXJt3E2CZzVUC6zZp+f+17COYtzEKEnuNWDq2qFkeavHVxvveKCSru4ZKZTNV543pvQTN98qbQIlTPQ/oTcGD5ZTgONVcVrNycQi8dUhQ70CMUvZsA7GA+77BWxAeZzv+soqLE3a1vwBG+fJbi7tz9M+/sVNJmpm9cE= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: b34acfc3-6b0f-415d-ebc9-08d480e00380 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030255120)(201703131430075)(201703131517081); SRVR:CO2PR03MB2277; X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2277; 3:HVxHe1/nO8TkwbVtVm4s3Rpivic6futbPoZWfZSKX3pzDQS/V4g46luT9CwujQP6iCihy6l5vj7UHP9DcFwg4c3hFdZmlynJFh+mgmBbe30ZZ9g2EDfNDPYI29TIGBYxTDQCQNpBrUr8RAVekrVdUt7lo/d3vbW1VcKiDp2a29Cw7T1/Sl6se/ANsgc2dM7gktEWJiz37QCZGgPvHIRilxdBJmpzr2ecddoC4V+FM6fsCueDiq9M1Exyhy3wdmFZLQ1Aq322jntz1IolTQw2wIhSwzT6mKsADHQF32ruiKi3Fy0iUaa9gqTEUNVdtZKkqPvfpecVWIU2xSFx6KLkpgEmBebQUXHYYMf4rmslIm/kxYdVOYsczDUWcOvDiuN8XeyBChiJ52BC+SSFC9A/vrPEMZX+Ocy9DmAN591AyNP7KliprdqXVvtwE4kLgmiualiNnycjVnpJgLb3803MRg==; 25:FGtYK7Uyt91lDcGKaVbe65bwEZ/W9+N2TJqnxCP41vz/Rm0SE5P2nNZAX7I+Wf6rbwz24Jtx1BoBnxLKw8tGfy9+x7/h/aPXD99AK37HgF45A18ElUYkw8kFARb/JgJLHwMawuMJ8YAdHH+yZzpWWf22BYvZuR21m6dW0dt2zDKdbz/6Wm7o8R2TpX0m0NXepx9rnKSC1h9WaeN91qYQtx+MhF+zud1Qs64sgis6IitKBCSiOwv0ocl2LAT+K3yIEsboavej+zFGdy0aFJeTIYleGo7MciIF51DFJ7tBLTJlDEiBeR6cMfbSMj0Vc0RNNx86y+c7JfhtnS3Y3gyDfTROEhkeGGxG7c3TR+Sz0PBnr0NSZAvF1MlUAJvytznv+soF9qrAB2Xc93HnHmSFBwTOUgmo2vCMkAqzPaAHZ8IOJIGWR7+lfqSmp9UL1Dhi/2epjrVjvVjPggoEjYoh8w== X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2277; 31:dz5L0AdjdREmuN2PnsycMLgikPYjjwdWxAtplYY3HUeFR64Z1LxPtuc7MfbJt/fIOkgRrIOvCP7kTna+VyhaFDANCkqj+HlD2MXvvSnxJs3Vq21MMpaOjvKqXpP2B9kWM1eIwwgiKus60NxEzejZnnP8s+getexjMiHKlWjNnI3gxql/hH6T76vgT7SVoVnYIU/sL+tIbrzuZ9dYMA1hlRDZAWBwWe/4pIq5e4N7D2/Sx+IA5w8Rxq7j/5YGmx3roXSzEs5VQh72ig7aDTqmU2t2N7MXkNfK71fPAFLAJj4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(13015025)(8121501046)(5005006)(13017025)(13018025)(13024025)(13023025)(3002001)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123563025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259108)(20161123561025)(20161123565025)(20161123556025); SRVR:CO2PR03MB2277; BCL:0; PCL:0; RULEID:(400006); SRVR:CO2PR03MB2277; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO2PR03MB2277; 4:6LmlmJKHIaOeujEMxiNUx1N9KBHceiYfhcZV3h4zeu?= kbGAI/W5YxXOLjdHtJ9ndz8OxVx09TR/4+JPg8xHj5FNcJdTMAFZS48XEWlNTwymJZ/OMfXxy8mQeKw9C33AQhC64jt7vnEWBTxxcDGXR41lwXNtAc2YqESXb9nIe04ePaYUWpJ13/Bzb89JQvq5McXjqmKFgafqissIw4xolmw0MH94ANcB/usFPVPk7mFnq+GPrXzQOFycik7vEs8bL1zMcN3l78wQoqwDuflfG7ah9NWNzvRIyOE7Zc8YImuNfD+tDElKQMKCtFeOgelsdItdYkEWtvPfh3k9BT+zpWa9KUAu2+aaYz4uhEGqhCPCtKCQsV3FTPuZgiaQBV/2gh+YPNyr8+Iq1f9og1jk71z/E30x9ZMSigBITeHPuj9wsDb41ZKm1xXw/ahMc9FcP8jVhwDcCQ6uqopLy28G02SMCueHJau93z2EbEzQWhcWJNJuZ1s0AAwFPfKOWATb5xcs1CUseQElfWus05FcUsuGoJI9RA37lQWacXRbMOb/j8+YZJWdr2NfeD/AI2rVTdDo3pQ12T+wx0Zjqq2t3d4m/hPKysYfuZLR7Mh7wK4H5/FFm7MO4t3H9Ps32yW+bpRT/eps69KVuWNcUhrHtc+ssbkUDtUYXwERUD/DY4cEzfE53tLq4pt5b35uQRE+Er7ILn+sN9GILJqqkWfhuxrvltX6capgstbwbPo8VXQGe+XeRKzYb1hMBESGP+OqmUY/p2unCtmnE2Im76bQtl65/KilF1nbiLnUvzPkOnOcA+BZPOEMSH86TulJMczcyns/SBb6rudPPpBfM5UzrWjkcejGMTROcMPURRQHo6QiXe7BVih3wmI5bj3nxLynHdWAdGZo1yedsEQ11NVPBtTxRzNDLwCPB6NEhbMQ5VWIUesacrgR+1xL3M11rm2AdpGtmEnF5X1UofXMVJaqV8hg== X-Forefront-PRVS: 0274272F87 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO2PR03MB2277; 23:GTwpazv4B2uXgdokY5mhUr8l7nsS1lYDqgAMvjbU1?= 9zNq0rU1c4SWzamZ8/tk7WyvMgaWpTjytMLSf0q93TqQG8qWutp+PDlFtsJUbNnUVyJjdkmXOl9MeMfA0s2P/MgI+wX+LNh5DLcMyErNB97KdOLVs+RAJuBmOe7lM0x/5EDSEN7NZjfhTZCSgHORqK+FAQJmMjvflu9GzN5A8hH+i12pggeS9jw6MCsx0vOWwaApqTfImdEUSwH2/z18FJL20L58lvTFv+qpVksxgyzS/sj3S1/WKbi72lbHryOF6UW+05iQPSnCkNxXYvx0e+yC9Es+QdROV/U9E32fo++pE6BlzjS1iQhL15ba/dMCObvjFsVnlCf0byGIA9inx5q/FYsaMwpOw4f2U7UXE+KyXlh1Ho0gLyuHzIn1ujFWe6xQgx5j9UIj4QSrgan1TEuWcHob49w9Vpk7HZu/6Kn7gA4vnoORPQfvwyFFJeHig8sG3lK7WTT7tCy9WFzaw+i4D98DbG4nPamQf7qIbCb9LTgaXMIKyahyC1Eo0NhjTK+NLG7KwaYfIBmANX2p23weiM92ORHV5rUS4ISVuxMj+MC0KDONebJdZn7lUPevVw8RQhhI6zZdamDYEVuEyJQLBxCH4EZ3A/U2zwMppCeX6BsZSczCotSWjskK7dgTRbnqdaV8g97CDeFn2otteY20qf+sKaNx5O/9ukgXzsMyzTiCNDlmnGb1tXG+lZDpDhx3hdd8w/vB55Fq+Q0bCe8ytcXbgozrBBJ5u4ARax1mNyc6KK3AofifiOBm7JJGuaQfPk1RG+UvcW7h5e6oz19N8W51gcfpCdYhzhR768mvafI1OAzdvEhNOXByURp2t8lISTs4EdnSBS4kSBl6eDSv8tX8/9iogyK2la4Y87PRFOXHiGFW/Aa+UYmHWROTfQ0/RkDN+Drd6y6xwRZO8zd3PjrP0MRTBe5lXrPK2E1hq3oKXLo3LmLpIGgf/iZTWK6+569moYDWKpLXThpDak62jHj+WIy08r02+ab75JxqA/9GVN6OWNQ6xA7rgobtrnhdkl/0cjF1IvaQ1CaUCHqEUBuuMRThb+ngDnZOL6ZigFuO+NJTUov9+TnHVLJwlzR8xXB/LWIEA5p0l2g9ZsTCEJK+4NIA0ochOcHKYghgH3QnKkLF1STRKnkvtK7bLS216YThQhK/r3hjK3nhEyKQdmcnTaxXggby4BYoYwWzA== X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2277; 6:fgSPOAeKZV0uMcaVsqrZnmwfXHJqYMCG+JPllCXblpWrUcYYlHFtkbse2Y5c3UDFOubTGS51k1JmJBPpyy3tZuIiJdFN/GC+fZgY1NqDe5JBhlumHPhIffKXyN1vu5ZgZL8QqIAiJgEtGkdWlmuZ2/b5qzZkoDw0zvlVEDg1/j+2t859vgIQ9paeqQYBqu1iO3oCTEOeXRF44vPNjjTGVkH9DuLGybhwd1988NAjYI9SGIyGczUvVZtzeHwuATgj4uPb8dIuioBo4pQA1m/sJC5YhlfGyLzYSbCLyUAsWgQKByTbw134+wLiAPY3jri+a+LE5D+Y9Bd1WgKy7WksFg9sD0D55DwdPBgDQA42NiwaHuV3aV7V5MBy1UwMb/BReoDZay0GG5g9voOWl5WkRMEZiZZNtHCsHfw0b+3nzEjJksHtfGGmBTw34sSu50+co60GeQNdAUMq+2JdouAMVA==; 5:MVaSZ2QmgzNLDeG3lEW5aWcxVn6GAjXF9bnUypxIZmLBB6V4MP4ZY/6F7LR+TqDXHZVh+01OT4s7ejeBYDH7o9lE2Kfhz6njANwznnmhh/Db7vJ7db+oW0LNyv7Gdt9xp3jA6ymUkx/QzmKRbm/4yspuOhvLtcEerMh2mdOVWRLijqa2flW7POyIOW2isffp; 24:fZTSkeVE/EUMj2YI1tbCMS3kMglDpW+gNzwfDIxDnUg464xO9YKTeFxlbnAVKEnL985yZ0A1ZNlEwG0ERnWWFRBhH9fpvHweD0WPqB1ssQs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2277; 7:tEFeSh82kVEKNpi6gMkfT6f0WX/2gpGuU3CHzyl1aOTUc+UrZHgIR4HeMhOiQwjEvMM/J9cRfSmsrpwgM1R0gJGn+hTEap6/T3XQn8ynNfHXiuXlXcJdzrOMaNLiDqPVfV+3rWLfIvCLaGwXBAqEfR9tgzbzhRy6FRTsn5x6m374ER7MNf5uap7a6Pazl72FSCNcpRBNSoGHiUTm+XCf5QB+nc1QO6UAROQZko1RlcbozgXzrOnX+cHHXfqkb1XpA6kAZBlt8zlQo+eqMQC0ZZd1X9vGuhInipilwTufo5wwunXQ31ZwqzyEYXM2A1epGmv1Ivo6w4jKYPNpALNB+w== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2017 13:38:18.4176 (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: CO2PR03MB2277 Subject: [dpdk-dev] [PATCH v4 12/21] 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 | 139 ++++++++++++++++++++++++++++ drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 18 ++++ 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 00572d7..973d279 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 7398637..d28fb7b 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; @@ -421,6 +421,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); @@ -428,6 +433,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..2fb285c --- /dev/null +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c @@ -0,0 +1,139 @@ +/*- + * 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); + dpbp_close(&dpbp_node->dpbp, CMD_PRI_LOW, dpbp_node->token); + free(dpbp_node); + 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..453fc10 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -41,6 +41,11 @@ #define MC_PORTAL_INDEX 0 #define NUM_DPIO_REGIONS 2 +/* 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 +68,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;