From patchwork Fri Mar 3 17:27:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 21367 X-Patchwork-Delegate: jerinj@marvell.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 0E6FEFA36; Fri, 3 Mar 2017 18:29:37 +0100 (CET) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0063.outbound.protection.outlook.com [104.47.32.63]) by dpdk.org (Postfix) with ESMTP id AE193FA48 for ; Fri, 3 Mar 2017 18:29:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=HAwTWJvy4ZEyXmf4tHsUeFiQ+Zo8v9l+gtNm1BE4r9c=; b=NyxnfQOGomF4okdwo/Ct/sNeijlm2pzcTQ/5ViQaQKBaawiqPpETzHvLENmY7ZlEnuoxYrA8n1NQ8KLka/uU84wIyksO/tSk21Row2Rn2KaIk9u73tnl/UR+m//o/zUaHyTTq9XCLXX3Q94zb5LEMxgxvoJBl4iAoA9WFvAnYL8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from localhost.localdomain.localdomain (14.140.2.178) by BN3PR0701MB1719.namprd07.prod.outlook.com (10.163.39.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.933.12; Fri, 3 Mar 2017 17:29:28 +0000 From: Jerin Jacob To: dev@dpdk.org Cc: thomas.monjalon@6wind.com, bruce.richardson@intel.com, harry.van.haaren@intel.com, hemant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com, santosh.shukla@caviumnetworks.com, Jerin Jacob Date: Fri, 3 Mar 2017 22:57:51 +0530 Message-Id: <1488562101-6658-10-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1488562101-6658-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1488562101-6658-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BMXPR01CA0021.INDPRD01.PROD.OUTLOOK.COM (10.174.214.159) To BN3PR0701MB1719.namprd07.prod.outlook.com (10.163.39.18) X-MS-Office365-Filtering-Correlation-Id: f28bf03f-fbd1-40b7-011e-08d4625ada38 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BN3PR0701MB1719; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 3:97Lw80Ih5ThKaKgZjL9i1T72XnxPZiC+ercDVfYOYLfi+fioPUhn1tVS3RAjkXX/C7Tw28mEIfrJLjCg815IyPjsmmtPZc6kwM6K70Us+tJL2Aciixn1URHDwf3CVLsr2ftW/Hf2zfAeNXJy1ZFvGEXdOpp10qLbtQR3T1DSG7EwOovCGT+ZXfzNWlOd6xgnQFEIt9kksGzs4vRDxd2sfaBL5tC/GXCUybf6PoXZdLK1dVLicSbYm4JSc8U1qepATFpufqekpx9gG98TBLcPKQ==; 25:9KwwCZnD1IhRZFEGSBkrhhAtHGXH5vP6ADD7Pd+wYXAS8oTOvm8MYWyHf7h1ULMYEuFwREmB5W2SDVZi0vWq9o2VU9MrFhTe85hTIz0W8zER8OcSutKzW46ypyy/tFU46A07LSrW6R7mWht5pZFGawfBPEagUX80d4gmSBt86mY4YJLtKksK9ZAym0OrZfwdN13jyonEXwkElgJJKDdHpeYSQc3zwhxNczsIYBuNXr3beY2amsQ5FSk4kwAQtqPzCQu74YYE6Ra5WcjHtQ35WN4vA91Pabw0VWMaDmw9htCe0iR9UYWY0ESN5uO5AoY60TnDzr0eGV9dZlI2RwYUumT/N2UxrLVh20xY9/iH2iJBqLGy9zofaBdlLsqhGYM/D1bK7NUFbIMqcsZ0Z+gpRn+gXI5PT0JPkDq5A2ksxoABWXjiByVkeLmV5wzSRL5wcCRjPjYzcr0LFGDNiVNzsg== X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 31:kv1RCHSPNrRBJAptN/wjaWtEVqtP/GrOKCAyJSu279AxX6zVvlvpRVaB2uSg851+x549mmskHU2GCM2zrWRQcu/28292uGXyCJyYWFjm7H9ESzIvN2D/m5NsOKagUIbXV6W5l8WnmCbfYfacURd6Ep8O2YJASFRLcYW/mtAO6yvpdgNsqqqWvwr7hcHnFG0xupHWMDTsws994ephYgCTVr7bwiuPifuIkJz+m7Q+5Xo=; 20:b9qxdThpimObFxc5wHk5U2KdGCWdk1W3wmTg92qvtZ09iKJCmGbaOlYz5WZgGmBhKv9ULiK4IzViejfcakwbWYu+bWyQ9ERV45UjGVKZ3jn2ecdoJVsfwrDZ8skgAW5ev6EodVYHVwGyzLZXXnRhgwYItNKRCPIU8LDBfQMpENWzHE7Kc2yWYHH7EwmTnWP+BGeMCXF/AYz29vgTk1VfaZooL1RLvMC0uzX8c0kuLZze+u2vrEZjYErdD6fkywJlVhqZgwJLol9gyNgF2hwnrIkIcdulvDyuUXYRucp1b8waNp3LKh54L7ff866cVyv6D0KbnljS97Ir/SAKMHGTGnUXwnMM1usx9o/rK7fYfSfoMgd71k2nVpYH67oPd1YxJiyTdvUZXf4LlJLbQ52XzYjxRJEsmebD6ClIL6HGXIP/s2xBUzApSgjZT5ZP1TX6tvfZRFLCw+03ZDo96wuBam6s0VoDW7OBuWEpM7+Em7GRmzRQSmqBJd0CgqeN4ltmBtaoMEn7jTgcqLDGqLHQ9HGTKAaw+g0MPaqk0AKAZcl4w+2xTWLPcohvnEjVVOzj8nfWyugJP1LmNrFh+vqWNF2Q/Nnu1mMjgcIbxYcHVfI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123558025)(20161123564025)(6072148); SRVR:BN3PR0701MB1719; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1719; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 4:OXRBIl4R+agJWBht686ORnNTlxZMpaDA7W45cs6n8G9A2VqKg4gMZqlTqv6ratpRrWamqXp5EKKWllUI1FW8Vb+WE03gLTgnYQ6XUuc5tpUnhvv7irHNwhcFm9CLipSL1OgCVmweVzu8W0MGfFWjSCU9aG+eWPaHl9q6D/spi8yw3uBG/sC8yUfu8rEEkXNnqUZTxjbqFq61LcO/9DVY5Rj98eFvB0G9EW4i1RkS00+X6NbXTOAf2YKfsT40mBPA4t5hVfbyTwhUBGXnKqF8HhawvgH35s8AGBnpluhWNLzHsLvU3YSTyQcN+uUxtVq8ujSGWd60S728Iw1J/ncozOVLZxuY+OqbUKq6l5U6aojEPx+UznVOHN2QpwAizWYYo5uB6qdw1NPBBTZNfIr6HZwoGSopjvlrJ7eSplMfYYBTy6Y8DD0Oz6GdVU0WyWQ54liVV06XYqHgM/uDA7FhjAV/cUgvcLCiW92BN+bcIL0C6N6HDAXqIyN6c8pj+b0+NgfHHRZIhH+/g4mRns9IGUeE4xSOYDSqhi2QseE77jwd7KBrZjMRaY6uby1oMeJBdILdz9gE04V/kBlEnFCWlLE26NR1aB21nma8Ax7qXDA= X-Forefront-PRVS: 0235CBE7D0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(3846002)(50986999)(6116002)(36756003)(81166006)(6512007)(97736004)(2361001)(2351001)(6506006)(5660300001)(42186005)(50226002)(8676002)(6666003)(106356001)(8656002)(2950100002)(2906002)(25786008)(47776003)(6486002)(76176999)(33646002)(7736002)(107886003)(42882006)(66066001)(110136004)(4326008)(38730400002)(6916009)(305945005)(48376002)(92566002)(5009440100003)(5003940100001)(50466002)(189998001)(53936002)(7099028)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1719; H:localhost.localdomain.localdomain; FPR:; SPF:None; MLV:nov; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0701MB1719; 23:n9VnmyLs/xzk3Xv37LmgVO4wtYuR/cbJDRxVYiM?= VbKwV2dm4MEtWUoRH+HfZFvVXw5xN4ISgqqJhH7K9ftrwc9k/t4G6ak5wUasZi/nCnApOfHOALN15iNq05ASvh+LzpFRNSXP04dt9KKAxPIq42TlkNzes3s75I9EWtmThXfG/bz3zsC+rJXJtioJAdz+xz6fqh3fgijXtoSxZGMnPC2rN2YXkeMibM0G+28kBb1/QDU7kHs8PgJih4B/JRruEXPkvoqJMtq+BB0TmpUn9e+/2+3aKqmYvem7uTUW/a2LRmosTbFm9N6jdxILApRg2BC/YgQBrW1M6wW27XplVP99koVJ9k5Qioz8UK/jDQ/ecRgAyBRwHNtXopWnCG4kaKG/E+SleC7KFFqdDkPpNHTAsVz0Ctd4S4WWzXAvX1P24eo5SIbRF4KSGcx0PWaffchTgVuJRppbKMiGJBzbGl8GvVuFBmfrRMHhTAwGy6NCFuS2tbLsGD36ZKheKbPFN560O1cw+reS5XyFZ/8eUwZu1T+td+h+1B3hSqJL6MekEjC+XdXP75dZ9wYIPIDyTwi+rdg6BzOl+IOEIPJ+jhxqFUtqFTsRHNYmU4Ccefk6dwAprv6s2OwaSq637kMlqdhVvPJfIEGd0Px86hgkS51EaZBdc0BrdX1u6MjEUitWxIQry8o6kqucu1qQcg7ca91k7wusES5fsaY5zKRljkrk+gUnNxIsVGXP5PuJSZemx6DffRkEWMJVus3Je+9YQOxWhKUKjFKpWuv/n5GRRhWIWhnyAl5C/ujZolXpt3qur8HzTWsTsJrZgJWDl2gJZ4LWxe9K8VrUP9XJHKWQJn8fXKIzJOr88eKopJrDGpANVHr3pl8vg6eoaDFuNZgFoPZLE/gctiy7Jwx1+y6XLhK28iRXSG5tBZGp3ylkz86Cl/SdI+kT6df4i0L+k5Q6pc3WAsChwfqnIFRsuYkYOXFycXx0saRvfwmkFPNcDYHvam6zoaThL7nss56Ai1+Tdg54qhc+XRaKpYf6Naeoikc4GO/2k5JAl9qzKAcai9RxEbSdq8Rd5S+R9YYLxCwte4OxigR8KihDBVkv03IKuXAlMBzeM536hRcGKMcRyWW0w9aLtDPW3XpEA/JRl3+aD X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 6:/yY/fYoUWCW4U8maQCxibm6C3F4bmdmZkKJvYKafFt3hVmSrZjYj1qe2lxzsYtiLSWIwpLY2L5GyaUPqw4/6MZlrxCcUCssTJgV3x+azQ4rfQoBmlhVH2m2cvWPeePpabEd9G+W+83jp6gT20RU7JRh9V1ZsV97Q0rcJpD4fSah0EUO0TNqgR6g06q/Ba2p3I71i4Y1iucInT8Ll8Oky44vRuo5dnsKqbh3alP4shUx/5r/o9XChtUPWwy4n9M5ouLRkbYGKTNv1jwElw8uEI16hW+BVbBYpc3KzirTHQ9NAFhrQyRFZehtOyMbeN2iIj2qTl/d4JumVRooNc0LAZUzZilSrCNrXI8d2CV12LkBx+ocX5VwgVWF0ERhWcRKlg164mJNBGng50nQybRA/BA==; 5:7bBqgxHMZj8PD5xVwgSr8k1YelOZ4fjHslZQBtYD4Y09MOehD+K4mMqskoW50TVVDd5R627mh7girWuNkt2ZnZPHX2292hrQ0B2RnVtJndDV8FB3mFfRvYbRECGFu/gIg6UbcKIhFsdSEWySop0Mdg==; 24:mKOwGmlvMZb6vNwxTnyOxnG6WbcRwh50+tHudKYd8rxilMA44Cw/DircK3UJ8tYBciBPJdq9vqZGfzS0Ig9AjwLxq5pF0oJJWA2cUbbjCSI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1719; 7:EINi2Jxlb0iQ3BiTAg9mPtwJD7XquC1FSxLYDMZe/hGdRoNVV7wBYx4O1hJjF7Ri0sK1e/loQlqcYlDWlOj0TGFUaJQTkSLDYLIdICqgui9YyMRd/kG6YZOoXurCU3dzHldc7msQBfiYQDtaRqR/+N7JOkXSScmWxU6p4Mvltkt/7w01Hp/PUdJh3BdoHv8APji1d/SZxtYWhf6n+4MBeT4BMOcMrymTF3/OvKUXSb3mrFDPQpAXtYfA4sVEkL2IcOHeqE1WMlWdQXTvC/6It2ZVNaCtL3AiHxGtH4JmCpbGM13etjpXXpotRpEiBSKn0iL+YNZikpV9S/X9KS73Iw== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2017 17:29:28.0337 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0701MB1719 Subject: [dpdk-dev] [PATCH 09/39] event/octeontx: add octeontx eventdev driver 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" This adds the minimal changes to allow a octeontx eventdev implementation to be compiled, linked and created at run time. The eventdev does nothing, but can be created via vdev on command line, e.g. sudo ./build/app/test -c 0xff00 --vdev=event_octeontx ... Initializing event_octeontx domain=4 max_queues=64 max_ports=32 RTE>> Signed-off-by: Jerin Jacob Signed-off-by: Santosh Shukla Acked-by: Gage Eads --- drivers/event/octeontx/Makefile | 1 + drivers/event/octeontx/ssovf_evdev.c | 148 +++++++++++++++++++++++++++++++++++ drivers/event/octeontx/ssovf_evdev.h | 23 ++++++ 3 files changed, 172 insertions(+) create mode 100644 drivers/event/octeontx/ssovf_evdev.c diff --git a/drivers/event/octeontx/Makefile b/drivers/event/octeontx/Makefile index 3076b85..6e8227b 100644 --- a/drivers/event/octeontx/Makefile +++ b/drivers/event/octeontx/Makefile @@ -46,6 +46,7 @@ LIBABIVER := 1 # # all source are stored in SRCS-y # +SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_evdev.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_probe.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF) += ssovf_mbox.c diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c new file mode 100644 index 0000000..b349adc --- /dev/null +++ b/drivers/event/octeontx/ssovf_evdev.c @@ -0,0 +1,148 @@ +/* + * BSD LICENSE + * + * Copyright (C) Cavium networks Ltd. 2017. + * + * 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 Cavium networks 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 "ssovf_evdev.h" + +/* SSOPF Mailbox messages */ + +struct ssovf_mbox_dev_info { + uint64_t min_deq_timeout_ns; + uint64_t max_deq_timeout_ns; + uint32_t max_num_events; +}; + +static int +ssovf_mbox_dev_info(struct ssovf_mbox_dev_info *info) +{ + struct octeontx_mbox_hdr hdr = {0}; + uint16_t len = sizeof(struct ssovf_mbox_dev_info); + + hdr.coproc = SSO_COPROC; + hdr.msg = SSO_GET_DEV_INFO; + hdr.vfid = 0; + + memset(info, 0, len); + return octeontx_ssovf_mbox_send(&hdr, NULL, 0, info, len); +} + +static int +ssovf_vdev_probe(const char *name, const char *params) +{ + struct octeontx_ssovf_info oinfo; + struct ssovf_mbox_dev_info info; + struct ssovf_evdev *edev; + struct rte_eventdev *eventdev; + static int ssovf_init_once; + int ret; + + RTE_SET_USED(params); + + /* More than one instance is not supported */ + if (ssovf_init_once) { + ssovf_log_err("Request to create >1 %s instance", name); + return -EINVAL; + } + + eventdev = rte_event_pmd_vdev_init(name, sizeof(struct ssovf_evdev), + rte_socket_id()); + if (eventdev == NULL) { + ssovf_log_err("Failed to create eventdev vdev %s", name); + return -ENOMEM; + } + eventdev->dev_ops = NULL; + + /* For secondary processes, the primary has done all the work */ + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + ret = octeontx_ssovf_info(&oinfo); + if (ret) { + ssovf_log_err("Failed to probe and validate ssovfs %d", ret); + return ret; + } + + edev = ssovf_pmd_priv(eventdev); + edev->max_event_ports = oinfo.total_ssowvfs; + edev->max_event_queues = oinfo.total_ssovfs; + edev->is_timeout_deq = 0; + + ret = ssovf_mbox_dev_info(&info); + if (ret < 0 || ret != sizeof(struct ssovf_mbox_dev_info)) { + ssovf_log_err("Failed to get mbox devinfo %d", ret); + return ret; + } + + edev->min_deq_timeout_ns = info.min_deq_timeout_ns; + edev->max_deq_timeout_ns = info.max_deq_timeout_ns; + edev->max_num_events = info.max_num_events; + ssovf_log_dbg("min_deq_tmo=%"PRId64" max_deq_tmo=%"PRId64" max_evts=%d", + info.min_deq_timeout_ns, info.max_deq_timeout_ns, + info.max_num_events); + + if (!edev->max_event_ports || !edev->max_event_queues) { + ssovf_log_err("Not enough eventdev resource queues=%d ports=%d", + edev->max_event_queues, edev->max_event_ports); + return -ENODEV; + } + + ssovf_log_info("Initializing %s domain=%d max_queues=%d max_ports=%d\n", + name, oinfo.domain, edev->max_event_queues, + edev->max_event_ports); + + ssovf_init_once = 1; + return 0; +} + +static int +ssovf_vdev_remove(const char *name) +{ + ssovf_log_info("Closing %s\n", name); + return rte_event_pmd_vdev_uninit(name); +} + +static struct rte_vdev_driver vdev_ssovf_pmd = { + .probe = ssovf_vdev_probe, + .remove = ssovf_vdev_remove +}; + +RTE_PMD_REGISTER_VDEV(EVENTDEV_NAME_OCTEONTX_PMD, vdev_ssovf_pmd); diff --git a/drivers/event/octeontx/ssovf_evdev.h b/drivers/event/octeontx/ssovf_evdev.h index c2b8187..b8b89a7 100644 --- a/drivers/event/octeontx/ssovf_evdev.h +++ b/drivers/event/octeontx/ssovf_evdev.h @@ -34,6 +34,7 @@ #define __SSOVF_EVDEV_H__ #include +#include #include #include "rte_pmd_octeontx_ssovf.h" @@ -108,4 +109,26 @@ #define SSOW_BAR4_LEN (64 * 1024) +/* Mailbox message constants */ +#define SSO_COPROC 0x2 + +#define SSO_GETDOMAINCFG 0x1 +#define SSO_IDENTIFY 0x2 +#define SSO_GET_DEV_INFO 0x3 + +struct ssovf_evdev { + uint8_t max_event_queues; + uint8_t max_event_ports; + uint8_t is_timeout_deq; + uint32_t min_deq_timeout_ns; + uint32_t max_deq_timeout_ns; + int32_t max_num_events; +} __rte_cache_aligned; + +static inline struct ssovf_evdev * +ssovf_pmd_priv(const struct rte_eventdev *eventdev) +{ + return eventdev->data->dev_private; +} + #endif /* __SSOVF_EVDEV_H__ */