From patchwork Fri Aug 25 10:19:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 27954 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 540087D92; Fri, 25 Aug 2017 12:10:39 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0074.outbound.protection.outlook.com [104.47.41.74]) by dpdk.org (Postfix) with ESMTP id 092FD7D8E for ; Fri, 25 Aug 2017 12:10:36 +0200 (CEST) Received: from DM5PR03CA0028.namprd03.prod.outlook.com (10.174.189.145) by CY4PR03MB3320.namprd03.prod.outlook.com (10.171.247.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18; Fri, 25 Aug 2017 10:10:34 +0000 Received: from BY2FFO11FD033.protection.gbl (2a01:111:f400:7c0c::170) by DM5PR03CA0028.outlook.office365.com (2603:10b6:4:3b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1385.9 via Frontend Transport; Fri, 25 Aug 2017 10:10:34 +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.1.1341.15 via Frontend Transport; Fri, 25 Aug 2017 10:10:33 +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 v7PAAHC3025398; Fri, 25 Aug 2017 03:10:31 -0700 From: Shreyansh Jain To: CC: , , , Shreyansh Jain Date: Fri, 25 Aug 2017 15:49:53 +0530 Message-ID: <20170825101954.28124-6-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170825101954.28124-1-shreyansh.jain@nxp.com> References: <20170818125127.22346-1-shreyansh.jain@nxp.com> <20170825101954.28124-1-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131481294338584996; (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)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(86362001)(85426001)(626005)(2351001)(4326008)(8936002)(2950100002)(189998001)(6916009)(305945005)(36756003)(81166006)(54906002)(110136004)(6666003)(97736004)(77096006)(575784001)(8676002)(53936002)(76176999)(50986999)(498600001)(48376002)(5660300001)(104016004)(47776003)(356003)(1076002)(8656003)(106466001)(50466002)(5003940100001)(68736007)(33646002)(2906002)(81156014)(105606002)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB3320; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD033; 1:RlwaEIgrhQs/RytNml/7I9xqY0ta6LBg7Hf686BkV75owszj50lH/yAFE9YRcPoiLfCWphow2fa/PEKKeFe2DsKKTAsMGbteFsTakQ+7nW9sLCgYyfqnX6Io3+4gcJQg MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e59fd2ea-6a99-44f4-9043-08d4eba1861d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603199)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY4PR03MB3320; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3320; 3:dERufMLFYqWbtPRVZWD2xvuPXkdCTKLAdEgFXSCm3i5JoioUKFCCRdGvvH0U6L2SwQ4KBpqYYAForLa4InlZH8Q0+vt/Q6QL0cuBh09XT4IbyjYuVGbtr0CxWdJ42whqoEqje2FhsAKKPd+gvAuzNyJmn1HmlFFPz2vl85JlkDgR8pdBRlEX+CJKeUSXEaWbOMzd89oidC42ckmJ9hV87kE+H6cHtMWMI8GuAXsiHVQJ4BRhzYgxZ/RM/asXqze7CtbXUug6E21Mn8xAl6r0N/r+Si5YOUFlgyVonDx39+pyhGEcU7VNAzfq524ra1rWCFQdmmnLGRrbeRZfCBVajY2jLvATdDecjiFbyUcGwKk=; 25:do2uBdGymwWxnGPKxUd8u0h+K/g7t6kWrU4p/rXH1ikKG3GZbhT7D5/r8eVFX1NuXTl4mclATzUFepxva03kH37LU2wqVP1b+CyJlxnrKp649kMaSUXORERPQxIfqceHtfpRfHzDl7ceyAtWPzsCcwPs9PejGjpWKlug3Oz1t5GY9+fi7GcYWsCwC/VXc42Ti6TYO+CGqKhL686rCRMhSsVMtIyr6a9+r3uEyyxvKUxQTF6EjebsyBposUPeE4KjJbc/x/NAYW+IFl92rPJ+mx9BwKPYkVfKRaNZZuJG5afn7q0BUToFPQAavMwaaaRfiNsEjtsxD5+uCSh22OKtYQ== X-MS-TrafficTypeDiagnostic: CY4PR03MB3320: X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3320; 31:0mfskOlYTrRWoY9zdXjuT7CpULy95mXsAAX/683Lak9j53Toct2vRhZhYTpTFEO+9qF5tk2Mnk0aa9iNgr5ShL83/qcXYdfTiS9t4Y4j+pIB5dEsmOkJFn/FOaUNP2A7EAtPMZIrdLU8ATe+mpc3o0HvP+W9mkJS8vavKF9nK8IQRhXhj3bB9vwt/wG/CKhIFLpjh4yhmNeuyD1IhX0epHpXUCAu3ZFTIzLL8htabXI=; 4:jVX3EmBFd3FbaKpE+C4HrLYYqNciBBAS1SV9RklyvCqsR2f9x5tG5GQlmrSeUi6MUSbFuvakMz75GpA7Fty7Cot+A27NqTgnvA905XmNXI1yqU6zBeiaJGb500GBsKq1FQYVuNgp1iz3Yc9AvGRuDrxDa3WOOCk5booZWIVC66aHV/715XAVerRgj88GGDEv+NxaY5nRNW/U4l+GmjeMQY9U56TrX1ABBzOML1nMe4nzYvCrrgqcv3SVMr5KXZmLDS+1Ztao77A6Ai6my1W87b2CeoZNdfJ8elsoy8sSnAOvndSGSQOzEF6dBj6+O+Fvsnr3MhMafrJ7Ct43UUOF2w== X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(8121501046)(13016025)(13018025)(5005006)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6096035)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(20161123559100)(20161123556025)(20161123563025)(20161123565025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR03MB3320; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR03MB3320; X-Forefront-PRVS: 041032FF37 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB3320; 23:WeOyFV1MS+HhTD5kZzAugJcVVUPqBrrWoNO0NJA+P?= goufRqoZL+oEmxFC+ODWHRXj9VKyKIYo2i5I4UODPS8LQEgx9tY7Xo5Cg38ilDrOsNdD8B9wu1jBzUhk2Q4ZxTFoloZmvZsgPwvyLBhdL1SokaoUWn6BYKLUhEt09eoVDVUVV5Nv2X8hdKmAY8yW5NELmd5zOwNasWIJ7xU25bsv5dcTr1iKpzOyuhFke1dy+hOBFJgv+ayoeJvKBA0N5h5bJLGHmRfOH0yD8X3i523DZA3Ox9YoQJYpsR32Rl9Jqf40NesiGZ9ppePMs/bU7qwi9UpohWoTBfPrjf4rBU2U7y/hfz5frpQQC2EtSsnh9csDqi80nPangYnB+2bOAIKp/U74FbFVvO4x4niJurvB6R2W+y4PNHQ3PCK8ibWuW5x5njccU5mtAci1dQKfMckcde/dp5zRsl939kmlX9/3ED3wg3rw3hhkB9Bqwfo6PsFLsgKGfO5VHyssgenhR3f/UMzML+Qo/dpmCN/OvzJr1QBomQI8i8qXnku3+tb4hK2veymGwp4ZDVeR6mDhhZ7hauESeaIBu4H7Xaig/071wn2+dd/QljLDu8TdyQiVXj49oO66EI/k5zapf1MJVOH1kppEE8G87Jd/OkDBD5rsH9EAKvj9i6Xvx8PNaLUo1npBx+IAWCaF6V8sjbnoIPc0sec0Nu0MLq8o+1A7IjPhnjaDM2lTx05D59UzAIu7TatGE+D7Ze1Ie2NfR8D655SiZenbFKf0dnwuy8OL571JSxUFFOpDCqnYBeiyCGh2T0Hhc/vmV5r16Pz+WT8MHGVjMHoNIZAqyhg12HwznpQsIfgoJGJ89dDwRvu7j7s3ZkoSpExhIsU5Ot52otmBtWOre2muxungq4yAcvz3ATku+fvo+zFvm+FI6n/8VMkkaa8HcZNE2DJ+KNNahXLB/UOVM2sichfLza9RSL0t30xGypRIX+0krNr78JhnMRP/UHZnphG10u1Ab23G6+Br3PXi2nKGv1i1o8cnwgUB5nLuWqzc3U1aGCU3l1ub0bDPoAvnb0cbP0oKeo+iqlpFn2DJM8/FKJVhyAtLpw/xX4Jq0ofvf1UVkettsnh5En3C6zv/8aPSGQ25IU1dqNyYv9Kp6MHgnH7lqyWTUF0lPZHaKJb7iwAFc6KOKF34i3Izfo= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3320; 6:FmdEPSpwysQ6416ityGA09zFf2ww0tCg/hbfB1oXrVkGzkudB++ShRlokcHrwVWxrkYea9lNQaW7sAyn5DZWwJ2Z6MG+tFHuj0uUyBdow8A57WQjeBAxC8dGsRRh8LHXT5d5oGRHX9c1aCs7DWgSAk0qTj4t3i6IdFrN3+B7JN5ma5AAACj++qGkns5ar7KtegNAWHLdrBqdtIRjrbFgJvoClYCRCOguytKA9ginHQOER+W3vCVqY8XLQ9XPB+Rw9OQ46ueZEqvmh6x+XcJ9r8jrOijlPS7MNLZcJQTgDBHRrSYPIRbXMQQGKBQ2VE0MxZYFW3FUGH/Q/Ku0K29jxg==; 5:vjqKrNXQU2g7b9JmPXexg8nfI5MPKQ/BvPkXbbHlW/FIyLf5eBkuSdbiOdYCJKqV1Ilxj0zwgMNfxvBVHtxEg1r82FixLV5XeOFTd+dfVMFtRcW/oz4rgVFF1jrMXlWP5Wl9WWEjOAiFc/FtYzvlIg==; 24:Kwdylw9qSSnyM5yWyAqgrIM/OmGp4jJ6OgYZU7f5BA9D6yCV0rNM+Nfx7wlHxh11kjUGzM4/HTdKhl5mSmMYSbvyE4XKQsD5I0/P9TSTn7o=; 7:L6/8HDmUKGWTeWmt8oGI3R3z0gwZa9pJEawLeDzOOPQIIkhKaPaeH/nFeC/gJDyTGsGdztYvdJoolqokYou/XlLupBmEtlAMbptDRwkovOdJwjxJ/4RmN3NvKMJyQ2Zc5vuYnlFeMhqOIN0gCjVQ9XcWFMNkXnJPxWq3CgPLkc2vooAFUO7KdOepbem3zE5ForBZ/Q7zPBXluEoUK8+IKUgElXURiGUoMbeBilYzB6Y= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2017 10:10:33.6556 (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: CY4PR03MB3320 Subject: [dpdk-dev] [PATCH v2 5/6] drivers: refactor DPAA2 object definition 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" Initially, DPAA2 objects (except ETH and CRYPTO) were defined from VFIO layer. This patch moves that into Bus definition. This patch also realigns the object types with the new device types. Signed-off-by: Shreyansh Jain --- drivers/bus/fslmc/fslmc_vfio.c | 11 +++++----- drivers/bus/fslmc/fslmc_vfio.h | 37 -------------------------------- drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c | 6 +++--- drivers/bus/fslmc/portal/dpaa2_hw_dpci.c | 8 +++---- drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 7 +++--- drivers/bus/fslmc/rte_fslmc.h | 36 +++++++++++++++++++++++++++++++ drivers/event/dpaa2/dpaa2_hw_dpcon.c | 8 +++---- 7 files changed, 57 insertions(+), 56 deletions(-) diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index 3b452e1..f0d69a9 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -76,8 +76,9 @@ static uint32_t *msi_intr_vaddr; void *(*rte_mcp_ptr_list); static uint32_t mcp_id; static int is_dma_done; -static struct rte_fslmc_object_list fslmc_obj_list = - TAILQ_HEAD_INITIALIZER(fslmc_obj_list); + +static struct rte_dpaa2_object_list dpaa2_obj_list = + TAILQ_HEAD_INITIALIZER(dpaa2_obj_list); /*register a fslmc bus based dpaa2 driver */ void @@ -85,7 +86,7 @@ rte_fslmc_object_register(struct rte_dpaa2_object *object) { RTE_VERIFY(object); - TAILQ_INSERT_TAIL(&fslmc_obj_list, object, next); + TAILQ_INSERT_TAIL(&dpaa2_obj_list, object, next); } static int vfio_connect_container(void) @@ -517,9 +518,9 @@ int fslmc_vfio_process_group(void) /* Parse all other objects */ struct rte_dpaa2_object *object; - TAILQ_FOREACH(object, &fslmc_obj_list, next) { + TAILQ_FOREACH(object, &dpaa2_obj_list, next) { if (!strcmp(object_type, object->name)) - object->create(vdev, &device_info, + object->create(dev_fd, &device_info, object_id); else continue; diff --git a/drivers/bus/fslmc/fslmc_vfio.h b/drivers/bus/fslmc/fslmc_vfio.h index 942a33c..60a5743 100644 --- a/drivers/bus/fslmc/fslmc_vfio.h +++ b/drivers/bus/fslmc/fslmc_vfio.h @@ -66,24 +66,6 @@ typedef struct fslmc_vfio_container { struct fslmc_vfio_group *group; } fslmc_vfio_container; -struct rte_dpaa2_object; - -TAILQ_HEAD(rte_fslmc_object_list, rte_dpaa2_object); - -typedef int (*rte_fslmc_obj_create_t)(struct fslmc_vfio_device *vdev, - struct vfio_device_info *obj_info, - int object_id); - -/** - * A structure describing a DPAA2 driver. - */ -struct rte_dpaa2_object { - TAILQ_ENTRY(rte_dpaa2_object) next; /**< Next in list. */ - const char *name; /**< Name of Object. */ - uint16_t object_id; /**< DPAA2 Object ID */ - rte_fslmc_obj_create_t create; -}; - int rte_dpaa2_intr_enable(struct rte_intr_handle *intr_handle, uint32_t index); @@ -91,23 +73,4 @@ int fslmc_vfio_setup_group(void); int fslmc_vfio_process_group(void); int rte_fslmc_vfio_dmamap(void); -/** - * Register a DPAA2 MC Object driver. - * - * @param mc_object - * A pointer to a rte_dpaa_object structure describing the mc object - * to be registered. - */ -void rte_fslmc_object_register(struct rte_dpaa2_object *object); - -/** Helper for DPAA2 object registration */ -#define RTE_PMD_REGISTER_DPAA2_OBJECT(nm, dpaa2_obj) \ -RTE_INIT(dpaa2objinitfn_ ##nm); \ -static void dpaa2objinitfn_ ##nm(void) \ -{\ - (dpaa2_obj).name = RTE_STR(nm);\ - rte_fslmc_object_register(&dpaa2_obj); \ -} \ -RTE_PMD_EXPORT_NAME(nm, __COUNTER__) - #endif /* _FSLMC_VFIO_H_ */ diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c index 33f9eed..1ddd280 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c @@ -48,7 +48,7 @@ #include #include -#include +#include #include #include "portal/dpaa2_hw_pvt.h" #include "portal/dpaa2_hw_dpio.h" @@ -58,7 +58,7 @@ static struct dpbp_dev_list dpbp_dev_list = TAILQ_HEAD_INITIALIZER(dpbp_dev_list); /*!< DPBP device list */ static int -dpaa2_create_dpbp_device(struct fslmc_vfio_device *vdev __rte_unused, +dpaa2_create_dpbp_device(int vdev_fd __rte_unused, struct vfio_device_info *obj_info __rte_unused, int dpbp_id) { @@ -130,7 +130,7 @@ void dpaa2_free_dpbp_dev(struct dpaa2_dpbp_dev *dpbp) } static struct rte_dpaa2_object rte_dpaa2_dpbp_obj = { - .object_id = DPAA2_MC_DPBP_DEVID, + .dev_type = DPAA2_BPOOL, .create = dpaa2_create_dpbp_device, }; diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c index 478e4f7..b60a745 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c @@ -47,7 +47,7 @@ #include #include -#include +#include #include #include "portal/dpaa2_hw_pvt.h" #include "portal/dpaa2_hw_dpio.h" @@ -57,9 +57,9 @@ static struct dpci_dev_list dpci_dev_list = TAILQ_HEAD_INITIALIZER(dpci_dev_list); /*!< DPCI device list */ static int -rte_dpaa2_create_dpci_device(struct fslmc_vfio_device *vdev __rte_unused, +rte_dpaa2_create_dpci_device(int vdev_fd __rte_unused, struct vfio_device_info *obj_info __rte_unused, - int dpci_id) + int dpci_id) { struct dpaa2_dpci_dev *dpci_node; struct dpci_attr attr; @@ -172,7 +172,7 @@ void rte_dpaa2_free_dpci_dev(struct dpaa2_dpci_dev *dpci) } static struct rte_dpaa2_object rte_dpaa2_dpci_obj = { - .object_id = DPAA2_MC_DPCI_DEVID, + .dev_type = DPAA2_CI, .create = rte_dpaa2_create_dpci_device, }; diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index 283441b..da41849 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -60,6 +60,7 @@ #include #include +#include #include "dpaa2_hw_pvt.h" #include "dpaa2_hw_dpio.h" #include @@ -428,7 +429,7 @@ dpaa2_affine_qbman_swp_sec(void) } static int -dpaa2_create_dpio_device(struct fslmc_vfio_device *vdev, +dpaa2_create_dpio_device(int vdev_fd, struct vfio_device_info *obj_info, int object_id) { @@ -451,7 +452,7 @@ dpaa2_create_dpio_device(struct fslmc_vfio_device *vdev, dpio_dev->dpio = NULL; dpio_dev->hw_id = object_id; - dpio_dev->intr_handle.vfio_dev_fd = vdev->fd; + dpio_dev->intr_handle.vfio_dev_fd = vdev_fd; rte_atomic16_init(&dpio_dev->ref_count); /* Using single portal for all devices */ dpio_dev->mc_portal = rte_mcp_ptr_list[MC_PORTAL_INDEX]; @@ -529,7 +530,7 @@ dpaa2_alloc_dq_storage(struct queue_storage_info_t *q_storage) } static struct rte_dpaa2_object rte_dpaa2_dpio_obj = { - .object_id = DPAA2_MC_DPIO_DEVID, + .dev_type = DPAA2_IO, .create = dpaa2_create_dpio_device, }; diff --git a/drivers/bus/fslmc/rte_fslmc.h b/drivers/bus/fslmc/rte_fslmc.h index ff7a49e..2f684d9 100644 --- a/drivers/bus/fslmc/rte_fslmc.h +++ b/drivers/bus/fslmc/rte_fslmc.h @@ -50,6 +50,7 @@ extern "C" { #include #include #include +#include #include #include @@ -80,6 +81,22 @@ enum rte_dpaa2_dev_type { DPAA2_UNKNOWN }; +TAILQ_HEAD(rte_dpaa2_object_list, rte_dpaa2_object); + +typedef int (*rte_dpaa2_obj_create_t)(int vdev_fd, + struct vfio_device_info *obj_info, + int object_id); + +/** + * A structure describing a DPAA2 object. + */ +struct rte_dpaa2_object { + TAILQ_ENTRY(rte_dpaa2_object) next; /**< Next in list. */ + const char *name; /**< Name of Object. */ + enum rte_dpaa2_dev_type dev_type; /**< Type of device */ + rte_dpaa2_obj_create_t create; +}; + /** * A structure describing a DPAA2 device. */ @@ -159,4 +176,23 @@ RTE_PMD_EXPORT_NAME(nm, __COUNTER__) } #endif +/** + * Register a DPAA2 MC Object driver. + * + * @param mc_object + * A pointer to a rte_dpaa_object structure describing the mc object + * to be registered. + */ +void rte_fslmc_object_register(struct rte_dpaa2_object *object); + +/** Helper for DPAA2 object registration */ +#define RTE_PMD_REGISTER_DPAA2_OBJECT(nm, dpaa2_obj) \ +RTE_INIT(dpaa2objinitfn_ ##nm); \ +static void dpaa2objinitfn_ ##nm(void) \ +{\ + (dpaa2_obj).name = RTE_STR(nm);\ + rte_fslmc_object_register(&dpaa2_obj); \ +} \ +RTE_PMD_EXPORT_NAME(nm, __COUNTER__) + #endif /* _RTE_FSLMC_H_ */ diff --git a/drivers/event/dpaa2/dpaa2_hw_dpcon.c b/drivers/event/dpaa2/dpaa2_hw_dpcon.c index d3e73f9..2c416b5 100644 --- a/drivers/event/dpaa2/dpaa2_hw_dpcon.c +++ b/drivers/event/dpaa2/dpaa2_hw_dpcon.c @@ -46,7 +46,7 @@ #include #include -#include +#include #include #include #include "dpaa2_eventdev.h" @@ -56,9 +56,9 @@ static struct dpcon_dev_list dpcon_dev_list = TAILQ_HEAD_INITIALIZER(dpcon_dev_list); /*!< DPCON device list */ static int -rte_dpaa2_create_dpcon_device(struct fslmc_vfio_device *vdev __rte_unused, +rte_dpaa2_create_dpcon_device(int dev_fd __rte_unused, struct vfio_device_info *obj_info __rte_unused, - int dpcon_id) + int dpcon_id) { struct dpaa2_dpcon_dev *dpcon_node; struct dpcon_attr attr; @@ -132,7 +132,7 @@ void rte_dpaa2_free_dpcon_dev(struct dpaa2_dpcon_dev *dpcon) } static struct rte_dpaa2_object rte_dpaa2_dpcon_obj = { - .object_id = DPAA2_MC_DPCON_DEVID, + .dev_type = DPAA2_CON, .create = rte_dpaa2_create_dpcon_device, };