From patchwork Wed Aug 29 10:47:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 43958 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 44BC85699; Wed, 29 Aug 2018 12:49:56 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00068.outbound.protection.outlook.com [40.107.0.68]) by dpdk.org (Postfix) with ESMTP id 42F964CC3 for ; Wed, 29 Aug 2018 12:49:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5tS27NpmrwNm27Vy2RkTLFGdJ6ph8rgjjwR3wG7seWo=; b=NH8jW6VsS38S1x7CL739ag4qqum8xhEfMqNCdAETReY57yxPjmAuIoPcoNRdm6KQcgKId0jqf8EPIDVFFIbT7Yu9bSnnsHb5LDMhppV+1YPzfjbPQviq/iI/gInvSQblVl/4/IhoN6ITr90tc9gO34IaUEDuNFfw7Z10BYNzU44= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=hemant.agrawal@nxp.com; Received: from bf-netperf1.ap.freescale.net (14.143.30.134) by VI1PR0401MB2543.eurprd04.prod.outlook.com (2603:10a6:800:56::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Wed, 29 Aug 2018 10:49:49 +0000 From: Hemant Agrawal To: dev@dpdk.org, ferruh.yigit@intel.com Cc: dpdk-up@NXP1.onmicrosoft.com Date: Wed, 29 Aug 2018 16:17:33 +0530 Message-Id: <1535539660-20228-7-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535539660-20228-1-git-send-email-hemant.agrawal@nxp.com> References: <1535539660-20228-1-git-send-email-hemant.agrawal@nxp.com> MIME-Version: 1.0 X-Originating-IP: [14.143.30.134] X-ClientProxiedBy: BM1PR0101CA0071.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:19::33) To VI1PR0401MB2543.eurprd04.prod.outlook.com (2603:10a6:800:56::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d519d731-0115-483c-6bc9-08d60d9d253d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:VI1PR0401MB2543; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0401MB2543; 3:Igu3A5CZtmstJU9uQi687hYiqaQU25TXQ6RlJqMmxBbKdlmvDBQ5dgLQEMYuP7rUvntc0EHyHR0DMMaJTReC8SudbzjGXKQiMhYtcgbUECTz5aIpKKERd1Z835wR9h+SmhKHEahc11LesYyYfxl9z1LLW3soxJJ2Lcs0yuUSW1OgaiJomUeulUjknokaAXFgxLuyDMqOwP0X4Sw5XjJMrwBKYRUeOBitoeoYf4MvY2RZ9AECGbvnzAQcDOCPrgH8; 25:tVvNTuC+Xu6zgwv7CHlOzZJiL4fftsQZFWybJA0gfXu0BgcbuW9SSv4IMryYTB5OiwMAouxAFlxZJg483tMYeQ6cUUETJXpmJs48OlL/ZEbpTokyAsE6NXTIJojPoO01+QMuuj+XvtyamqGcbrMVEoBryaMbbSEk33sJJc7jVDtinXSW2riIL7sNZYAhzgMRSSYYSWUmciln49pxB0YwJkmgSll9SKpOppxJiw+ed3rb4jPHQIVJJDL3VqEAts1l9OKkuLR1/CaX6z8cddCo2L5RSuvkG1ZO6SmZFEjPXOx6y5zDWpd6jGQdmz0TEghkibn7FGJGTC0NHyk+8YVgDw==; 31:4ls3799jdi4yezBim+X25Or2D3lC6yZ3F+c+M+1y5wxoVbWfXR7nL+JkVYic1tJTc56uKC33+KiekA3T+QaMUHMmmmNTGUOIflMT48O3IuNgy3O5zXEKL6BEx+CPOVaTII0Lz8WJB6XhbBa6tY8wTsYIwd89veqdI1UVOYbxGmGZ7ODKFHnQVzv587QCupOEuKSNjFKTDY83/FCoAwfl8Gv2KMJTDT6m7jLY8eG2wok= X-MS-TrafficTypeDiagnostic: VI1PR0401MB2543: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0401MB2543; 20:Nk+X/+D2fGvTB6nL2dbT5nrGud32ZfCCAT1Moz7Cs849YIgCoSS5haeIeCOt304tbfJSZHDLQB1wblHSMiT66+3KKpEuJxWXnkBzX9iTL07r0+LeUkqQYNRfMBeRDXBLV3o3vYSciPpQuzYD8rujrNDVGl5MMYJUQnkO6tXMXC7WiL4HSuNZTm0ayj9RR1SghViN+hgrg89nfuiqKMYnSxFJ5OgabLDErCrJPcPo3whY3yrtzCvZC4lFjFk5u/EZZsVhjFXb/KeDc58Q0hD1ZZypEWDdAddHZPnL43obNjZM8MNpdDPEqUdm1Ffj8QEaHCjCTwpn8kmCV4iYtdVrDhFVIpBZ9I/cjxXs7A/aEOehFJ/YXUIGi1P1YuSR7iFROY6Bc21CQso0Yq3pVEBAZaqBL5Y8PTt/2QYTakJUiXqmc/i6DzvA1DzGCypmXfOOT/PyiBUElHK4KuFz61jkggjK6JXaY6dZDtGzv8TcN+Hi2GZ/0B9EN/dSowlOXvew; 4:L+98oevLn8CnFSj4dlVxW8AbkMi6IijuuBdD3WAb666e5XC+9vsoRgNKYFHmEwX3rsUyWzruLv+LTzkpkzvoUj5w9IWERBvj2K5qVL8SjwUtPtoZvIqBF2crD8zpj2yQe9JSw/sdSQqJE1CsLeAu9AUfU7obesumnoF6CXLIYADIWMlKfABaIrO76f8qRurAuqPULjPTOjTnn25LthaIyRTe2ShPToekO4zk6T1hKiyGziOMJLqiePHNzKWz+4tuTKUgfD45/sPNdRD0XGqzjYTNU0/nftbF6ybAilve0b6hAIZ+0acxUKK+Wi4xRp7JeWphj/xzzEn1Et8lmy99mCJQN8LeUVnhrTTYz162204= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(823301075)(3002001)(10201501046)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699016); SRVR:VI1PR0401MB2543; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0401MB2543; X-Forefront-PRVS: 077929D941 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(136003)(366004)(396003)(39860400002)(376002)(189003)(199004)(6512007)(6486002)(16526019)(53936002)(486006)(186003)(11346002)(105586002)(6116002)(106356001)(5660300001)(50466002)(68736007)(5009440100003)(2616005)(25786009)(48376002)(386003)(4326008)(55236004)(6666003)(73566003)(86362001)(956004)(107886003)(446003)(3846002)(26005)(575784001)(6506007)(476003)(316002)(52116002)(50226002)(478600001)(47776003)(66066001)(8936002)(16586007)(76176011)(51416003)(97736004)(44832011)(81166006)(8676002)(7736002)(305945005)(36756003)(81156014)(14444005)(2906002)(110426005); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0401MB2543; H:bf-netperf1.ap.freescale.net; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0401MB2543; 23:49fZDIIOqjbmMLWAqHk6Mq4a4g1yCtDIuHH8La3?= 3EK7cKYeQpaOSbZuRa9SZaZ6xzDXDSgs4B3vzwrXNHOYvBgKyvV8P8X7zIdGt+Xg1A4dMaANB0K6Xb13NRg/+DhkVPiQNaweKOUg2WTTosornStRUb73H60iyhrp2IqCrskzUcprJze4INjAZr1Ba0NS3Jxs08W2yeBJWtL6ontbpdR87kiwb03NDafp44KPBGPReKdxuR81+NZt5w7NeqFGJJWwprwV7OHkpEJkR66zAFQZEChRkpuYG6xfHTjiqMYjR8xauEq7KIu7D6lK/DxNqj4DLGMz4SG5srXfS0EdPkfSiMbc/Qla4lm0k16ZErrD4b8jI/c7oSBCu0735AjQNOqAJukinsHA16OJIB1IZVqLIWaTi4Qu9s55En3jrFDuqgYeLkT0wRj4+ZI9fwtCkhRvAp21epQ0yy01sDC88XynMZQN/xl+YCZXb4g//wEZbt5bCVygj3d+/Uh/O8ZwhKvZMwWjMSMb5/LerTVVKrgiTAJ625XOf4VumxoIeDmmX2nxrqLQt87cJBeBDXzawe/0XW3wr79XL6eyb53UsrXQLIH6/L5Z8AaQv6MSN1H9Ljt40fSh72rmaJrYa64uJKPqug7GWpHeAQSDIr2Me6wUUqn/uo5XXkENSh8//9bp4+vcJH8bPdLtE1fZbWnD+Va1c0OyrTZhKqP2M0lcfTyUSB9rTgdBojFKHBlLdDfzPu5xyoqRXE9JywvfDAsfraayNhfnvYHqS2aixld6tba4QGqX7b3KQ/s9l2wqJOhBMlq6yu8q+n2jUJ9Jdn6FD1U/wh223jA/qGEm3FrqHRgHwGbYXkflo7wEUlRqwK1UJ4k2HR/gwZqF8DWHxMH+f6YS9SxDUn/0Ha7IuVsno9J9meJ7Pf8nndzOVMm+wHjD2j+L+YudnbyN1O0RXCirkQJ/2MXWaYFVMFLb50NDHjVnZtKzXqMyued6KqVNjR/NRb9mZ8mUjRhsViLYFmj5aMjJjUJU268gxgHgFu7BeIvNPKfFxMPmK2fdxaMnD/qY+33qGGInw4cHnBH36dqLSGK2M0xV8XW3s8MTymrRBT2LpgTwsSQ8VI8C7Hn8fbwuolg36aOCnxqhvsQyyNrfSk1OXkl7nMEJdt0dwzNAkBc8z7R2f5JX9enDfIbha/eCfO+OKr+gf9PoZiy+FN9iUWMhj1GjGLPrvmo/06NJw6v/jzs8ZD8n7Xy+bjDq4bS212HWJZURWYm9t6THkiBrb0HFFd+gxQtWdTmJgWvW1OV+MlBRwUIbDpXq5lASImpdGQbsAJVvo57Lmgk2Jcy5G X-Microsoft-Antispam-Message-Info: xoD93jop0TS/ybkl4Ug9k4nUkZEtSEAN1HpO1eqSY/sOyaY0p7DSiNe2HvPoqwrR8jd5ngYGI1JdcCOhfO4zkTWf/CODsagIRgRyglGox7Uc5LnxHrnhkOFClwsxwygac9yzfxSBQSFu4uC1aulG7zRdcnC23TXbfi9X+RMOb2dsD5rvRxAPF1OTUDtoorR+4l/gF+772o9T16vdR2Md687lK3iBl0N5ABYNkE5hUEjhhI01ltbu5v7RihTlF68sJbZxgEhh26XldEw9XyWtX54Nb//q9+6gni/41N/F95AV0VFykS5ui2Ej2WpQP/a5e7X57CAEXAL5QgkaQ2Rl6OM0tP4sZe3VWJCnSKtQxWA= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0401MB2543; 6:thiBxLz6LiNPFNMGfKxGi23U0lVXIDaIK+f1mzt0b7jDuAbctbWHsZbFDNeHJe+Hq3O+6DErgP7TSPTMwGILwTBcgzzFnMtt4hHkPhwwQ0zuxFzkLu5bc+SeEQj9piTh3OHNHj2OJ6HfBwnxNnddaVDLziJC42OWHPyOvAOON/+SAspQLxoW7RdkUVCSN7XKT1OS7vmUPLJXUALOjGlGILoQGX4tiagnxdNTk7kOGn8QNMfPJyP1VIDJ8Xvsg4S/BAUfbsJfL5qqME+ET7VMD3OOCZ9hZ/Zdn4kKO2A27LyrBKZ3qVeaxjvujJKCLnv6dHWQJWq+gyfHsVAuuvqCyr2OMQawA8U1StAT0PYX9ABelpqge+1INa/vSPKFv9VOVgl9Je/GvlmBbkI8eXFQwVhg66WQU5UF2MeB+QN85LgRKymC3kasvd4wgeA0PdjRq062pT2aH9Oh1xfJRkd8Qw==; 5:VZ2RRkwrGEuVaWAhh8Cy/DjlBjVwHHixQnrimS+CFw7tmjSh9bO3P5wPFlM/ko65/EdaldW7QMnX49F9anmlBOadGo/hsGG8k1WPR41P12PmPHz/TVlXNPjYTNv2jTEutYEFGJKDE913gYbzqjvzXrrdFYIa5OB/0hOGvgljRcA=; 7:2mK1K+tZ1trcg6QFmoZNu0PgE6cbLb9kcOXJeGGU1RNwS6nO1+sZlEwRivw4GfciJOGxtoir8MboBWaTw0325TpOFdO2NqMvggcKNGVci84JeQ7Rg81gDDkDOVX7XH63XO+DnHJnzVYQOpPhiKugtsPkZENBv0I2McavRSpIzqx9hSiNqNcJjOoh0h3laTymnQ3QoEFUgtzDDPwpMXJ/eJ/+TR1s4pqxD+H2oZwy8xO8RWmmXCPfvJ0fBPsZqfdV SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2018 10:49:49.7326 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d519d731-0115-483c-6bc9-08d60d9d253d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2543 Subject: [dpdk-dev] [PATCH 06/13] bus/dpaa: add interrupt based portal fd support 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" Signed-off-by: Hemant Agrawal --- drivers/bus/dpaa/base/qbman/bman_driver.c | 17 ++++++---- drivers/bus/dpaa/base/qbman/qman.c | 52 +++++++++++++++++++++++++++++++ drivers/bus/dpaa/base/qbman/qman_driver.c | 7 ++++- drivers/bus/dpaa/include/fsl_qman.h | 20 ++++++++++++ drivers/bus/dpaa/include/fsl_usd.h | 6 ++++ drivers/bus/dpaa/rte_bus_dpaa_version.map | 17 +++++++++- 6 files changed, 111 insertions(+), 8 deletions(-) diff --git a/drivers/bus/dpaa/base/qbman/bman_driver.c b/drivers/bus/dpaa/base/qbman/bman_driver.c index b14b590..750b756 100644 --- a/drivers/bus/dpaa/base/qbman/bman_driver.c +++ b/drivers/bus/dpaa/base/qbman/bman_driver.c @@ -23,7 +23,7 @@ static void *bman_ccsr_map; /* Portal driver */ /*****************/ -static __thread int fd = -1; +static __thread int bmfd = -1; static __thread struct bm_portal_config pcfg; static __thread struct dpaa_ioctl_portal_map map = { .type = dpaa_portal_bman @@ -70,14 +70,14 @@ static int fsl_bman_portal_init(uint32_t idx, int is_shared) pcfg.index = map.index; bman_depletion_fill(&pcfg.mask); - fd = open(BMAN_PORTAL_IRQ_PATH, O_RDONLY); - if (fd == -1) { + bmfd = open(BMAN_PORTAL_IRQ_PATH, O_RDONLY); + if (bmfd == -1) { pr_err("BMan irq init failed"); process_portal_unmap(&map.addr); return -EBUSY; } /* Use the IRQ FD as a unique IRQ number */ - pcfg.irq = fd; + pcfg.irq = bmfd; portal = bman_create_affine_portal(&pcfg); if (!portal) { @@ -90,7 +90,7 @@ static int fsl_bman_portal_init(uint32_t idx, int is_shared) /* Set the IRQ number */ irq_map.type = dpaa_portal_bman; irq_map.portal_cinh = map.addr.cinh; - process_portal_irq_map(fd, &irq_map); + process_portal_irq_map(bmfd, &irq_map); return 0; } @@ -99,7 +99,7 @@ static int fsl_bman_portal_finish(void) __maybe_unused const struct bm_portal_config *cfg; int ret; - process_portal_irq_unmap(fd); + process_portal_irq_unmap(bmfd); cfg = bman_destroy_affine_portal(); DPAA_BUG_ON(cfg != &pcfg); @@ -109,6 +109,11 @@ static int fsl_bman_portal_finish(void) return ret; } +int bman_thread_fd(void) +{ + return bmfd; +} + int bman_thread_init(void) { /* Convert from contiguous/virtual cpu numbering to real cpu when diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c index 7c17027..8730550 100644 --- a/drivers/bus/dpaa/base/qbman/qman.c +++ b/drivers/bus/dpaa/base/qbman/qman.c @@ -1040,6 +1040,50 @@ static inline unsigned int __poll_portal_fast(struct qman_portal *p, return limit; } +int qman_irqsource_add(u32 bits) +{ + struct qman_portal *p = get_affine_portal(); + + bits = bits & QM_PIRQ_VISIBLE; + + /* Clear any previously remaining interrupt conditions in + * QCSP_ISR. This prevents raising a false interrupt when + * interrupt conditions are enabled in QCSP_IER. + */ + qm_isr_status_clear(&p->p, bits); + dpaa_set_bits(bits, &p->irq_sources); + qm_isr_enable_write(&p->p, p->irq_sources); + + + return 0; +} + +int qman_irqsource_remove(u32 bits) +{ + struct qman_portal *p = get_affine_portal(); + u32 ier; + + /* Our interrupt handler only processes+clears status register bits that + * are in p->irq_sources. As we're trimming that mask, if one of them + * were to assert in the status register just before we remove it from + * the enable register, there would be an interrupt-storm when we + * release the IRQ lock. So we wait for the enable register update to + * take effect in h/w (by reading it back) and then clear all other bits + * in the status register. Ie. we clear them from ISR once it's certain + * IER won't allow them to reassert. + */ + + bits &= QM_PIRQ_VISIBLE; + dpaa_clear_bits(bits, &p->irq_sources); + qm_isr_enable_write(&p->p, p->irq_sources); + ier = qm_isr_enable_read(&p->p); + /* Using "~ier" (rather than "bits" or "~p->irq_sources") creates a + * data-dependency, ie. to protect against re-ordering. + */ + qm_isr_status_clear(&p->p, ~ier); + return 0; +} + u16 qman_affine_channel(int cpu) { if (cpu < 0) { @@ -1114,6 +1158,14 @@ unsigned int qman_portal_poll_rx(unsigned int poll_limit, return rx_number; } +void qman_clear_irq(void) +{ + struct qman_portal *p = get_affine_portal(); + u32 clear = QM_DQAVAIL_MASK | (p->irq_sources & + ~(QM_PIRQ_CSCI | QM_PIRQ_CCSCI)); + qm_isr_status_clear(&p->p, clear); +} + u32 qman_portal_dequeue(struct rte_event ev[], unsigned int poll_limit, void **bufs) { diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c index f6ecd6b..ba15339 100644 --- a/drivers/bus/dpaa/base/qbman/qman_driver.c +++ b/drivers/bus/dpaa/base/qbman/qman_driver.c @@ -113,6 +113,11 @@ static int fsl_qman_portal_finish(void) return ret; } +int qman_thread_fd(void) +{ + return qmfd; +} + int qman_thread_init(void) { /* Convert from contiguous/virtual cpu numbering to real cpu when @@ -135,7 +140,7 @@ void qman_thread_irq(void) * rather than breaking that encapsulation I am simply hard-coding the * offset to the inhibit register here. */ - out_be32(qpcfg.addr_virt[DPAA_PORTAL_CI] + 0xe0c, 0); + out_be32(qpcfg.addr_virt[DPAA_PORTAL_CI] + 0x36C0, 0); } struct qman_portal *fsl_qman_portal_create(void) diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h index b18cf03..e438414 100644 --- a/drivers/bus/dpaa/include/fsl_qman.h +++ b/drivers/bus/dpaa/include/fsl_qman.h @@ -1316,6 +1316,26 @@ u32 qman_portal_dequeue(struct rte_event ev[], unsigned int poll_limit, void **bufs); /** + * qman_irqsource_add - add processing sources to be interrupt-driven + * @bits: bitmask of QM_PIRQ_**I processing sources + * + * Adds processing sources that should be interrupt-driven (rather than + * processed via qman_poll_***() functions). Returns zero for success, or + * -EINVAL if the current CPU is sharing a portal hosted on another CPU. + */ +int qman_irqsource_add(u32 bits); + +/** + * qman_irqsource_remove - remove processing sources from being interrupt-driven + * @bits: bitmask of QM_PIRQ_**I processing sources + * + * Removes processing sources from being interrupt-driven, so that they will + * instead be processed via qman_poll_***() functions. Returns zero for success, + * or -EINVAL if the current CPU is sharing a portal hosted on another CPU. + */ +int qman_irqsource_remove(u32 bits); + +/** * qman_affine_channel - return the channel ID of an portal * @cpu: the cpu whose affine portal is the subject of the query * diff --git a/drivers/bus/dpaa/include/fsl_usd.h b/drivers/bus/dpaa/include/fsl_usd.h index e183617..ec1ab7c 100644 --- a/drivers/bus/dpaa/include/fsl_usd.h +++ b/drivers/bus/dpaa/include/fsl_usd.h @@ -55,6 +55,10 @@ int qman_free_raw_portal(struct dpaa_raw_portal *portal); int bman_allocate_raw_portal(struct dpaa_raw_portal *portal); int bman_free_raw_portal(struct dpaa_raw_portal *portal); +/* Obtain thread-local UIO file-descriptors */ +int qman_thread_fd(void); +int bman_thread_fd(void); + /* Post-process interrupts. NB, the kernel IRQ handler disables the interrupt * line before notifying us, and this post-processing re-enables it once * processing is complete. As such, it is essential to call this before going @@ -63,6 +67,8 @@ int bman_free_raw_portal(struct dpaa_raw_portal *portal); void qman_thread_irq(void); void bman_thread_irq(void); +void qman_clear_irq(void); + /* Global setup */ int qman_global_init(void); int bman_global_init(void); diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map index 7d6d624..0f792a2 100644 --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map @@ -95,10 +95,25 @@ DPDK_18.02 { DPDK_18.08 { global: - fman_if_get_sg_enable; fman_if_set_sg; of_get_mac_address; local: *; } DPDK_18.02; + +DPDK_18.11 { + global: + bman_thread_irq; + fman_if_get_sg_enable; + fman_if_set_sg; + qman_clear_irq; + + qman_irqsource_add; + qman_irqsource_remove; + qman_portal_ucode_poll_rx; + qman_thread_fd; + qman_thread_irq; + + local: *; +} DPDK_18.08;