From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 32F4FA0A0C; Thu, 15 Apr 2021 09:51:40 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B361D161FFA; Thu, 15 Apr 2021 09:51:39 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id A3EE7161F64 for ; Thu, 15 Apr 2021 09:51:37 +0200 (CEST) IronPort-SDR: 9z9vig6MKv33aObrDdf6fkgbP99OhCEuIJaIr0GKou1JH9ZIGp2qJc7PpkHtG9ArobW+45p5bT vpTefwfGt6IA== X-IronPort-AV: E=McAfee;i="6200,9189,9954"; a="174912308" X-IronPort-AV: E=Sophos;i="5.82,223,1613462400"; d="scan'208";a="174912308" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Apr 2021 00:51:35 -0700 IronPort-SDR: 37qwlfjWXgyBz9mtRUv8HC8Nn+AmQKGQqxP2pvC85cXrdx1v4prRI4rpmZzi8OCLKLFG9+V0Aq WnpcpmPJXyAg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,223,1613462400"; d="scan'208";a="461527476" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga001.jf.intel.com with ESMTP; 15 Apr 2021 00:51:35 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 15 Apr 2021 00:51:35 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 15 Apr 2021 00:51:34 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Thu, 15 Apr 2021 00:51:34 -0700 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (104.47.46.58) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Thu, 15 Apr 2021 00:51:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FKJczbIJAU22mDVCMLWtQo+17eyqiRFgpqWy5Noxql/D44vsnQaZrxlSlFnNkOPfM57P++Sz8qW68AmkAlFBZI6a+OHcvKeiBtDasxaq1VB2zSp1PNlYnjw2+kTBQTMnRgzQKVgFgl5MIe5iZkJDIMBkVez5LHAcKlOhyfIG2hoBWvW2HDnh8x6ovthJR1bfCKuIaEc9P/qEysTShrjw0AyUe1D5P1Pol2yuynUfeOsSvZ/xZ9JLQhEYpxGKApaQjfTGEtRiKs/55neRFRGVwoJR4WcXAR0Tc9p/pDEU4Ljh3QYjC6qRuWKopFXLq5KwtLQ07mWzCjb98ovjpPHOZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6Mu4DUAq/3Fb7jQYuAVfLAdQHUSTw/WQ4f74i7HiJxE=; b=BQdyWNpkgED6dOU2UZUKfnWZ8IAiSxaYL08fDGnVliw0srRm/WD0VEYjZDFrGjgj385IgxJKZGnMkP5O6/swv8uK5SQJjVzNLuJNASsfzKZGT3Nmee9TEQRj5SnqS+Kjiz5E/cb1evzrNKRcrxFOIDDITiaSvHz2PnsNuPXbJcAcG+PShbtLx/07mhf4VyJfcS4CG0ogOck6vrm4Z9ekOkaO9Vj3ukskMDia+sRapd2nDTWUgKFtTSaCzqTeBRybEi6vMMXVTjTch3VacHw2/rw7tf25zgJeU6QLi1QwGAFIvzvWvhXr/mseQBmdGKSqbPYQEiExlfd73Rz9igTDAw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6Mu4DUAq/3Fb7jQYuAVfLAdQHUSTw/WQ4f74i7HiJxE=; b=DusKI60nNlkMmnusYQp56CGNIisxb2ekC2We748BQBESAfAb/jfBhszJ1ClYeZVf3Sd13ePShxu6skLMtWSopq0+iDOMcVH8zTS9ZtqCartuC1cHZ82adlGgabkAs6Cka3STAYCfUGx+AsCop6tZ2XZne/STHmL1ZNC/L+eurvs= Received: from BN8PR11MB3795.namprd11.prod.outlook.com (2603:10b6:408:82::31) by BN9PR11MB5241.namprd11.prod.outlook.com (2603:10b6:408:132::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.18; Thu, 15 Apr 2021 07:51:32 +0000 Received: from BN8PR11MB3795.namprd11.prod.outlook.com ([fe80::2dfc:3be2:c305:6346]) by BN8PR11MB3795.namprd11.prod.outlook.com ([fe80::2dfc:3be2:c305:6346%6]) with mapi id 15.20.4020.023; Thu, 15 Apr 2021 07:51:32 +0000 From: "Wang, Haiyue" To: "Xueming(Steven) Li" , NBU-Contact-Thomas Monjalon CC: "dev@dpdk.org" , Asaf Penso , Parav Pandit , Ray Kinsella , Neil Horman Thread-Topic: [dpdk-dev] [PATCH v1] bus/auxiliary: introduce auxiliary bus Thread-Index: AQHXMBSKvCrREl25EkK71KLI/BpYYKq1Ms4ggAAD6QCAAAAr4A== Date: Thu, 15 Apr 2021 07:51:32 +0000 Message-ID: References: <20210311130113.31382-1-xuemingl@nvidia.com> <20210413032329.25551-1-xuemingl@nvidia.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.0.76 authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.54] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3ccf1a00-0d6b-4cfa-7b7b-08d8ffe34927 x-ms-traffictypediagnostic: BN9PR11MB5241: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: h1eFFgLsJZvlpCPvVaLBdoao0Ey1WFUd20lQ8zf50D5Q5Eyq+r/32fESEERs8Lso4L80/mRQqMw8V3GVU1VNZ0o1I/3d97gTsCNm5emLBq0bTUSAgxwHcVRnffb1JiX/q9WBJPUcay4dRNBnmicmdGN8zcwp8qEDam3x9ENCLPdrJS6io2TtCVSCtba8dfeT+4xsELSEPvzw112IWcX08l8dO25EvzAi19NA1t4QuhctgZowWva53VaiWWafXb79aVT0GSFvi7oRcLjXDhW0DfvkcDJ3S4d7Y7HgE4xeebQ6WVjj/dddWjahU0reC/4Xpg3ZqIr8ECXLbdnTAvXpj54/qDgyxowtU4xd+P93151lgeQejbvuVMdQy22/NlzGlqKMgrsLdFmshHaLTykiDgdG56USKD4iP/ov7rx0rN9kVjvFXtK4utR2KrYVWujygJYOnTdv7YhfjlnBjsRlJgI5HJslW+wmez5Eyfydz0lF4wESaf2ehIk7lPTFvBm58tBoApshsUn+uTUvbLr3u5XQPv5X2RCUlMBV1tm3qDTN8BpDBK/k/1a2CZebzmzuzvw3iY4p9IqRpZH+rOIxs2RMbTDJuPvr7EwxSaSp8OHcwifPriGgQFy96zf4BApNY7xdOS6v5ZhRP6TBDuUlW/yvKm8BOtkA+a36SccAp3tN6JSAz38w2zzCYldMJNwU x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN8PR11MB3795.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(376002)(136003)(346002)(396003)(39860400002)(8936002)(38100700002)(9686003)(55016002)(122000001)(66446008)(66476007)(76116006)(5660300002)(7696005)(8676002)(66946007)(86362001)(966005)(64756008)(4326008)(71200400001)(6506007)(53546011)(186003)(66556008)(478600001)(26005)(2906002)(52536014)(83380400001)(33656002)(54906003)(316002)(110136005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?QXyDqTYkv6t1lUWJSHmv09dKHpzTplpiODupxJ+/h2WjJ/0v/+lXbQlkgGpv?= =?us-ascii?Q?heToE1Z6Hr7fCLN4DlufqReGzsBGCAOidNS8ScCT7BcIwteNsfeV2Y0ihOcf?= =?us-ascii?Q?vRUPsPAhNRfrVzA+x/fIrEfrUcXFd5c2Fok1wNzK/pXW8zh8teCgUHpvfuM2?= =?us-ascii?Q?LxuLsAqLF4WIl5enf7G4lsQWg8Ugc+8d2KjGS1SYwbBQHNP54tN92P/HjDfI?= =?us-ascii?Q?2/mF6bhmx3Z/VRiNoO4xM60h1EyyKsZvovA/TtQnfGe+Rg6ugVfsc7Zcspck?= =?us-ascii?Q?/2yNqxK4hzcsKx5G2uZNq9P8gBdHdeauUSI43YK15MV0VjGO79RpuoKP73e/?= =?us-ascii?Q?XJ7FNi9/4y3CzVGnwjPNK2ru9/HkEfLGuXo99E8E/ENbVCCuFiUSO9/rFGeZ?= =?us-ascii?Q?X0/SmwXoIjbBeF41hqwLswWaQZHe1NYZOVazFR97MfqJVBKg+75DsKaX9Obn?= =?us-ascii?Q?AK+FpLX2pkzhirWop9wjgp4Qn4U53SATiVcpga24gLEfZfOM10w/epVe7DGZ?= =?us-ascii?Q?66MRsYtBBXRNbT6dDS0ZUFLCYjWR6A0WJgvvuXyHkr8jaoGjrfikkFL008Kz?= =?us-ascii?Q?yiU5Kbi8U0EfPyrP7mZ6C13SxH70VWqa/5bujSNKz58k5X9LDAj1B7FxXtp8?= =?us-ascii?Q?4C71xIIwXM9gDOcR/uF8aWx381aJrYgD2t3G74OAm00aleCAa9p08sb5dEOX?= =?us-ascii?Q?6wO6WLHkVwQaGwse5t6bMHJVRXUHLMSyEJeB1mWLf3eaumxXm8bDv7h0XPvH?= =?us-ascii?Q?OxDJ5ag5cvEIIN//xv2g4CKODw+qjOevGmPZW28xilvfk15AyWoQqL3Ax61C?= =?us-ascii?Q?GPqmFWEIknheXvofwGncUp45/Gzvphmn5YQijjrV33jQoKN22o/dMmmnUh0G?= =?us-ascii?Q?mVdobm/qbVR2N965GdpY0blPI8wwYZtxPQZbYHs/0ucsQpE0HljaWhIo59IY?= =?us-ascii?Q?HgIKqUIRh6pQvh5ZMo8mIf1u0W/9rGVUn73/SppRTA5KPoz2bURqB12nc19L?= =?us-ascii?Q?mgkB+Phz9JyVxp/3Qy2c+YxAe7w6yfnZOf27Y6FjJLqBeZKPTZaWdupq1fwM?= =?us-ascii?Q?S15f2KGC74AfeEKmEvy5/0siDUZLq7Hzwbxa7mlm1K/Ele9awFFtS4OyCPlm?= =?us-ascii?Q?s5XrBejP32ZwmS/0gzS5ZRtJX2hLfG+D8pGAf8NlWzr5or3BmbuUWbVZER8v?= =?us-ascii?Q?6+kKI7wfmODouIhfHijBSON9z005o21pvXN51dyZUaFYmprFALdmFAZ4tv/e?= =?us-ascii?Q?E2oIIXG7VqC33IsL+DSn9NZByuWmdFckTX9dKFZyN58DiNglKzc895cPRPg5?= =?us-ascii?Q?ino=3D?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR11MB3795.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ccf1a00-0d6b-4cfa-7b7b-08d8ffe34927 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Apr 2021 07:51:32.1329 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qMD4a77+4dV08Zt0Q2+1vb3FglQpQvacO00/Q1ZAXRZocK7HLmm9FQf7C2qkEPHuJBQadBjI8lLyYViJ4GyIkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5241 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v1] bus/auxiliary: introduce auxiliary bus X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" > -----Original Message----- > From: Xueming(Steven) Li > Sent: Thursday, April 15, 2021 15:46 > To: Wang, Haiyue ; NBU-Contact-Thomas Monjalon > Cc: dev@dpdk.org; Asaf Penso ; Parav Pandit ; Ray Kinsella > ; Neil Horman > Subject: RE: [dpdk-dev] [PATCH v1] bus/auxiliary: introduce auxiliary bus >=20 >=20 > > -----Original Message----- > > From: Wang, Haiyue > > Sent: Thursday, April 15, 2021 3:36 PM > > To: Xueming(Steven) Li ; NBU-Contact-Thomas Monjal= on > > Cc: dev@dpdk.org; Asaf Penso ; Parav Pandit ; Ray Kinsella > ; Neil Horman > > > > Subject: RE: [dpdk-dev] [PATCH v1] bus/auxiliary: introduce auxiliary b= us > > > > > -----Original Message----- > > > From: dev On Behalf Of Xueming Li > > > Sent: Tuesday, April 13, 2021 11:23 > > > To: Thomas Monjalon > > > Cc: dev@dpdk.org; xuemingl@nvidia.com; Asaf Penso ; > > > Parav Pandit ; Ray Kinsella ; Neil > > > Horman > > > Subject: [dpdk-dev] [PATCH v1] bus/auxiliary: introduce auxiliary bus > > > > > > Auxiliary [1] provides a way to split function into child-devices > > > representing sub-domains of functionality. Each auxiliary_device > > > represents a part of its parent functionality. > > > > > > Auxiliary device is identified by unique device name, sysfs path: > > > /sys/bus/auxiliary/devices/ > > > > > > [1] kernel auxiliary bus document: > > > https://www.kernel.org/doc/html/latest/driver-api/auxiliary_bus.html > > > > > > Signed-off-by: Xueming Li > > > --- > > > MAINTAINERS | 5 + > > > drivers/bus/auxiliary/auxiliary_common.c | 391 > > > ++++++++++++++++++++++ drivers/bus/auxiliary/auxiliary_params.c | = 58 ++++ > > > drivers/bus/auxiliary/linux/auxiliary.c | 147 ++++++++ > > > drivers/bus/auxiliary/meson.build | 17 + > > > drivers/bus/auxiliary/private.h | 118 +++++++ > > > drivers/bus/auxiliary/rte_bus_auxiliary.h | 180 ++++++++++ > > > drivers/bus/auxiliary/version.map | 10 + > > > drivers/bus/meson.build | 2 +- > > > 9 files changed, 927 insertions(+), 1 deletion(-) create mode 10064= 4 > > > drivers/bus/auxiliary/auxiliary_common.c > > > create mode 100644 drivers/bus/auxiliary/auxiliary_params.c > > > create mode 100644 drivers/bus/auxiliary/linux/auxiliary.c > > > create mode 100644 drivers/bus/auxiliary/meson.build create mode > > > 100644 drivers/bus/auxiliary/private.h create mode 100644 > > > drivers/bus/auxiliary/rte_bus_auxiliary.h > > > create mode 100644 drivers/bus/auxiliary/version.map > > > > > > > > > > --- /dev/null > > > +++ b/drivers/bus/auxiliary/rte_bus_auxiliary.h > > > @@ -0,0 +1,180 @@ > > > +/* SPDX-License-Identifier: BSD-3-Clause > > > + * Copyright 2021 Mellanox Technologies, Ltd */ > > > + > > > +#ifndef _RTE_BUS_AUXILIARY_H_ > > > +#define _RTE_BUS_AUXILIARY_H_ > > > + > > > +/** > > > + * @file > > > + * > > > + * RTE Auxiliary Bus Interface. > > > + */ > > > + > > > +#ifdef __cplusplus > > > +extern "C" { > > > +#endif > > > + > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > + > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > + > > > +/* Forward declarations */ > > > +struct rte_auxiliary_driver; > > > +struct rte_auxiliary_bus; > > > +struct rte_auxiliary_device; > > > + > > > +/** > > > + * Match function for the driver to decide if device can be handled. > > > + */ > > > +typedef bool(auxiliary_match_t) (const char *); > > > + > > > +/** > > > + * Initialization function for the driver called during auxiliary pr= obing. > > > + */ > > > +typedef int(auxiliary_probe_t) (struct rte_auxiliary_driver*, > > > + struct rte_auxiliary_device*); > > > + > > > +/** > > > + * Uninitialization function for the driver called during hotpluggin= g. > > > + */ > > > +typedef int (auxiliary_remove_t)(struct rte_auxiliary_device *); > > > + > > > +/** > > > + * Driver-specific DMA mapping. After a successful call the device > > > + * will be able to read/write from/to this segment. > > > + * > > > + * @param dev > > > + * Pointer to the auxiliary device. > > > + * @param addr > > > + * Starting virtual address of memory to be mapped. > > > + * @param iova > > > + * Starting IOVA address of memory to be mapped. > > > + * @param len > > > + * Length of memory segment being mapped. > > > + * @return > > > + * - 0 On success. > > > + * - Negative value and rte_errno is set otherwise. > > > + */ > > > +typedef int (auxiliary_dma_map_t)(struct rte_auxiliary_device *dev, = void *addr, > > > + uint64_t iova, size_t len); > > > + > > > +/** > > > + * Driver-specific DMA un-mapping. After a successful call the devic= e > > > + * will not be able to read/write from/to this segment. > > > + * > > > + * @param dev > > > + * Pointer to the auxiliary device. > > > + * @param addr > > > + * Starting virtual address of memory to be unmapped. > > > + * @param iova > > > + * Starting IOVA address of memory to be unmapped. > > > + * @param len > > > + * Length of memory segment being unmapped. > > > + * @return > > > + * - 0 On success. > > > + * - Negative value and rte_errno is set otherwise. > > > + */ > > > +typedef int (auxiliary_dma_unmap_t)(struct rte_auxiliary_device *dev= , > > > + void *addr, uint64_t iova, size_t len); > > > + > > > +/** > > > + * A structure describing an auxiliary device. > > > + */ > > > +struct rte_auxiliary_device { > > > + TAILQ_ENTRY(rte_auxiliary_device) next; /**< Next probed device. = */ > > > + char name[RTE_DEV_NAME_MAX_LEN + 1]; /**< ASCII device name */ > > > + struct rte_device device; /**< Inherit core device = */ > > > + struct rte_intr_handle intr_handle; /**< Interrupt handle */ > > > + struct rte_auxiliary_driver *driver; /**< driver used in probi= ng */ > > > +}; > > > + > > > +/** List of auxiliary devices */ > > > +TAILQ_HEAD(rte_auxiliary_device_list, rte_auxiliary_device); > > > +/** List of auxiliary drivers */ > > > +TAILQ_HEAD(rte_auxiliary_driver_list, rte_auxiliary_driver); > > > + > > > +/** > > > + * Structure describing the auxiliary bus */ struct > > > +rte_auxiliary_bus { > > > + struct rte_bus bus; /**< Inherit the generic class= */ > > > + struct rte_auxiliary_device_list device_list; /**< List of devices= */ > > > + struct rte_auxiliary_driver_list driver_list; /**< List of drivers > > > +*/ }; > > > + > > > +/** > > > + * A structure describing an auxiliary driver. > > > + */ > > > +struct rte_auxiliary_driver { > > > + TAILQ_ENTRY(rte_auxiliary_driver) next; /**< Next in list. */ > > > + struct rte_driver driver; /**< Inherit core driver. */ > > > + struct rte_auxiliary_bus *bus; /**< Auxiliary bus reference. = */ > > > + auxiliary_match_t *match; /**< Device match function. */ > > > + auxiliary_probe_t *probe; /**< Device Probe function. */ > > > + auxiliary_remove_t *remove; /**< Device Remove function. *= / > > > + auxiliary_dma_map_t *dma_map; /**< Device dma map function. = */ > > > + auxiliary_dma_unmap_t *dma_unmap; /**< Device dma unmap function= . */ > > > > These API type can be pointer type defined, then no need "*": > > > > typedef int (*auxiliary_dma_unmap_t)(struct rte_auxiliary_device *dev, > > void *addr, uint64_t iova, size_t len); > > > > auxiliary_dma_unmap_t dma_unmap; > > > > Like: > > https://patchwork.dpdk.org/project/dpdk/patch/20210331224547.2217759-1-= thomas@monjalon.net/ > > > > typedef int (*rte_dev_dma_map_t)(struct rte_device *dev, > > void *addr, uint64_t iova, size_t len); >=20 > Thanks, is there a reason to prefer pointer type? Good practice to make code beautiful ? ;-) >=20 > Thoma's patch looks good, will rebase on it once accepted. I mean the function type is defined as pointer type. >=20 > > > > > -- > > > 2.25.1