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 66089A0C45; Wed, 22 Sep 2021 18:42:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 35559411EC; Wed, 22 Sep 2021 18:42:25 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 0E1C1411A8 for ; Wed, 22 Sep 2021 18:42:22 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10115"; a="210720696" X-IronPort-AV: E=Sophos;i="5.85,314,1624345200"; d="scan'208";a="210720696" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2021 09:41:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,314,1624345200"; d="scan'208";a="557539589" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga002.fm.intel.com with ESMTP; 22 Sep 2021 09:41:18 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 22 Sep 2021 09:41:17 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 22 Sep 2021 09:41:17 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.170) 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.2242.12; Wed, 22 Sep 2021 09:41:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HkeRZZWL4GFpFRZa7CgkEYnaA4ShTYKq7/9W56alIu6xwpNSIZs+0Si5eaVO+fzYcKwE3CSv9Lpy46R6Z/sUSYDi8qhOGjcYFoD4GKi4Y7cnepzBRtt/gjwkYUh2wznN3aTCcl8am5vilIJ+jtf5EHVFu+FwsddL20p9b2ZZ2zZLnkQ2mUJzvfvmVbcyR5rmRHFq4d0O2N2cBfhUiyCzpako0lfD2QD9lHnzu0VWGV00cyZyenapWwSeYvcx97b8ZxMe4Ot0zcmFqyvK2B7l1oMg3bgXAQ2cYop3ZA0NgCqvzaS+15JovVJUBuVi+QBCwbxyuIF/P53SQ+4PtJ9JQw== 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; bh=IdR+jsf8h17yZlv69MMDrI03A3G13U4PAS5Jd2h79z8=; b=XMJjWQXwKGF7H5z9maOzV+hbKGqbHNNxaolicolmmO0nf3Q3N0JF0RTm2PCPdBa1ChmgcsRdcMqbb8tZHN/MXX4Q1fupEUP1RhkSBQFrLCpDli6By0+RtCjzKj5FGuf6OvDcfj2b+MMK1QMNiH72TN3MvBK2WTnPwpRqUcaEIkm2cYkCQRZ1t05V3Q1mIa7iEMXqWe0u5x7OIvG8bX0O3aVctt+gPMOKDbu5JbIrsC1zUXSr5e/BkNdPHeclQ3ZkSuAsm/Cf00a/VMJJ3e17r+VxF6fDkjri36EJOthuOZMFnA6vz1CobuFkYbdspkNhoCb+jhgX8lwM2400Ihp0PA== 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=IdR+jsf8h17yZlv69MMDrI03A3G13U4PAS5Jd2h79z8=; b=tPSAYv592jOipyv1tuKuKQ3sZj1S0eqghvOWMLw9oV621cWyGVLC7Q5f8wFnLrnH6H1WnxpjDtvw2c8ATYFn/ixBHOsl+EIfp64JvbAQ/6B4NooGCmKmdGe8K0yLm6/wKTGnA1ZTRPbLap41w3Eg4djIz1ZqXvilpXxFByqqBT8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=intel.com; Received: from PH0PR11MB5207.namprd11.prod.outlook.com (2603:10b6:510:32::15) by PH0PR11MB5045.namprd11.prod.outlook.com (2603:10b6:510:3f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.14; Wed, 22 Sep 2021 16:41:14 +0000 Received: from PH0PR11MB5207.namprd11.prod.outlook.com ([fe80::9578:a4b5:2716:fbaa]) by PH0PR11MB5207.namprd11.prod.outlook.com ([fe80::9578:a4b5:2716:fbaa%6]) with mapi id 15.20.4544.014; Wed, 22 Sep 2021 16:41:14 +0000 To: fengchengwen , , , CC: References: <20210827172550.1522362-1-conor.walsh@intel.com> <20210917154227.737554-1-conor.walsh@intel.com> <20210917154227.737554-5-conor.walsh@intel.com> <6d4f6b80-a546-0e6e-418f-1c26f4b3bd92@huawei.com> From: Conor Walsh Message-ID: <664cc42d-1681-51b5-2ad1-8f99ad863227@intel.com> Date: Wed, 22 Sep 2021 17:41:08 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 In-Reply-To: <6d4f6b80-a546-0e6e-418f-1c26f4b3bd92@huawei.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-ClientProxiedBy: DB8P191CA0002.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:130::12) To PH0PR11MB5207.namprd11.prod.outlook.com (2603:10b6:510:32::15) MIME-Version: 1.0 Received: from [192.168.1.20] (109.79.118.85) by DB8P191CA0002.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.15 via Frontend Transport; Wed, 22 Sep 2021 16:41:13 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ae0a1aed-5a64-4f62-1f71-08d97de7cab4 X-MS-TrafficTypeDiagnostic: PH0PR11MB5045: X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jLNfPUNqZmmNLtPkgZNZCHyN1GIIagJ04ZLKxy/OG356P1tQSf2d+m0N2s16BV0AMybiEwg/jBC5meJmYigHJBA3wJz1gXVtPBZv5exnDTd1fEiEH018r5QXhxPicc3hBRJ5V+f5OoXxs+KSxK3bVhAyh4W4V4cO+xvR4w8UkiXUUk7ERfEiNwIkOvW63Zm/BDVTHTvUy4+fm3LY0B2VdLpyjnjF2dkZGnJsQte6L3S1AyzC/TXFlAatz6aWmss2WD8qDa3LqUlbsCv38OLig131ZqTm11NA+xTPCapiHu7tPCyKQYTnaW0WPfNdZb7Vt/ndCBPucgu4XO9gJa/SyYuHjxN89sim+MTNJjGGew4QXYvBCYjZTbTBx/0N2g6PfpQhPQ+qdsDFx76MA+afIuMZQPp1sGczPFNSkkLhdXN6ZH/CUlOh1JPO56UXERI0yo2HBF2vMUVoF68+yAbUL7504lm2OYJlTIF86PYn2bllhzGpHPR4lgr3cQzXfScFC36RmLRfnOErZOjhqVDR/K4ZFMyf3IoVmz5Z2kBR9Sx+NnlkkSM1JYE8eYsjLc6q91Jq29KSmCp+W9hMf195QXvOw6bo9w3O5PhQA8sVnSQWt2bUIHcTp6Jm9Ct8XTUqy8QYcMK8q2XCxPH/Wme/YSLToqIFeY1g3e2VgoUFSkZpAiHC1+UXH7mrx5MUIRt4I9KZo4MmUoBcfLUORjlE+CINrqwliYyK2xJKwGyblZI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB5207.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8936002)(2616005)(186003)(2906002)(26005)(4326008)(38100700002)(31686004)(66476007)(956004)(66556008)(66946007)(6636002)(8676002)(36756003)(508600001)(83380400001)(86362001)(5660300002)(53546011)(6486002)(316002)(6666004)(44832011)(16576012)(31696002)(45980500001)(43740500002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eTh3YWw2dzRScC9YTVN3YTEwZHdaSWI0Sy9RMTVlbkcyN2dLVWIwbVIxZWZP?= =?utf-8?B?S0xZRzVVL095WlN1ZnU0RmJXek5UNHh0ZmNYYTZBL1lhcWNKeGZWSDJBKzVP?= =?utf-8?B?TjdxY1IzN0xpS3preE5lYlErUHFEYkVpbUxVVHNqckpRVVpqRXNCSXIxR0Vp?= =?utf-8?B?MDhnN1Q3RWZaMy94TVZFZVVJZjVNZ2Z6cTJ3SWVrV080NUI2Z2dYMFVxeitG?= =?utf-8?B?OW16OEVQY2x2SUhOWmo2aDU4OTczTVM2SzVLYTg3UExKbDRoOHNOdWhGSHBG?= =?utf-8?B?emVKZGZadmZQMW9FNDZNVW04REZySUQ1QWZHSDJTcE1nMXl1S3Q1N1YyUHkx?= =?utf-8?B?VVBnTHU3UHd3eEJvbEdNNVp0ZjRBWDhZZGF5bzd6eWcySzhoNTZIVGF5N3pw?= =?utf-8?B?TlVReGQ5czJ1bnd1QXRzWHN0c3BML204c0JxMHVkaDdtalV5M25reXJhZzRL?= =?utf-8?B?Q0F6a2IwbVN1WVliZlVxRCtBcnBqT3N3NE9BbElHanhXY3J3TC93and1WmhJ?= =?utf-8?B?eGJyd3R1dTFoRnovV3dVdXkzUUozakU5Z1J0Q0FOVHE3Q1ZtNlFhY0FIRW1B?= =?utf-8?B?OXN3ZEZ4OFNRUXIxek55YzA3emVOU3ZXeVlkdW1zY0tiVlovNGRNVmxXQmc0?= =?utf-8?B?MzRmcmxHK2dQc3d1Um84RUE3MkZpd2ZKZ3JHZmdnSE9rWndJVk4yWFIzYS9r?= =?utf-8?B?QkZXS3BIZlpiOGRiUGFWYXZLT1dIVDN0UEIyRHVLNmNaVzhpNXUvZHZhU2Fw?= =?utf-8?B?TDQvWi9oWVV5U2FqUzg0eEF1WHRWZlhBQVpPUk8xbUpURkJIbmtpWTNFTU1O?= =?utf-8?B?UklIN3VPeEVyT3UrL3BZSDkzalJpZ1Mrd2NBemkvUHlBeWM5bFlCaVVvbFR6?= =?utf-8?B?YWxGWWN4OStnSUhWWmhhUHpnY1hIaDlSako4NGNmY0NjWjE2YUVLNkhRRVhY?= =?utf-8?B?WGU0eFkxNnVWaURJMnpHc3VHb2lNUy91OHZVaWN6SWVpU0VtdzhlRHBtWW1N?= =?utf-8?B?RDdVVHlobFoySDlaS3Q2TnVLK3FnK0JJUmdOeWRmTnNFOWp1bHovVEJRaGhq?= =?utf-8?B?alNGL0NHODAvZytta1VESnAvYlFTcEdvVzdwS3l6V0xiaDl2elBxNWc3b0ls?= =?utf-8?B?L2w4QTJNNjI2YnV0RlROczgzRHRpUFZOcmJnWVI0eHJGL1JsZm11em10OXNI?= =?utf-8?B?VXVMZ3pQN0VwQk5uODlHYWlobU1vK1RSUmN6Tm1VOGMwVGl5c2dsL1BDMklI?= =?utf-8?B?L0RJbFdkanJNYXIrRHFZcG5hU2k2YytVWThnT2VvQ1I3alpUTjA3aUxHMnBF?= =?utf-8?B?QzFDYkFFWG5QYjN0TlVRMStBc1NQTW5WTElNNWNNM2Q4endHZGlWZkd6Zkky?= =?utf-8?B?QmZBQkZKMTVJR05pY29PVXhxQk41WkJzNHVkUXRiRHhZcXprL0RManYrWkFZ?= =?utf-8?B?SitZYURPaGx5NFNXUUZldTNzYkY5ME5CMHJpMVY0WXNuS09Ebk05WUsrbm9s?= =?utf-8?B?YVo0R010UFUwVUJLL1Z4UHJHSC8vYklyNlhpNjYrRTBMNUI4amFzNVEvaFAw?= =?utf-8?B?ZDBPSDNYSXR3a0ZxMFYxd3hJbVBBNUJOb3AxTGtMaUZlTGlYKzZOUzl4eEVZ?= =?utf-8?B?UDhtV1ZabjBBMG9pVjZKeUN0aTZvdTU5ZTUwL0R1SG5zYWt4WjBFQ2pmMFdW?= =?utf-8?B?TDNMSWdjQkFZblFBS29ENkZVSFlMbGo5ZzgzQjZjcE5BU2MwNVlVQWFDbzlw?= =?utf-8?Q?OnmWphBnaOF5b4w+4QUaQO49uNeWlXkUjjU8kGg?= X-MS-Exchange-CrossTenant-Network-Message-Id: ae0a1aed-5a64-4f62-1f71-08d97de7cab4 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5207.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2021 16:41:14.2968 (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: Fk+zDkORCt6UxjDpGhvB+YJykvnkh1SuRZ7Yir3frKf97P4TMqDRPMgNzU8Wp5wa8tW+eZRzM/uJLF9MPlFZ8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5045 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v4 04/11] dma/ioat: add configuration functions 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" On 22/09/2021 09:08, fengchengwen wrote: > On 2021/9/17 23:42, Conor Walsh wrote: >> Add functions for device configuration. The info_get and close functions >> are included here also. info_get can be useful for checking successful >> configuration and close is used by the dmadev api when releasing a >> configured device. >> >> Signed-off-by: Conor Walsh >> Reviewed-by: Kevin Laatz >> --- >> doc/guides/dmadevs/ioat.rst | 24 +++++++++ >> drivers/dma/ioat/ioat_dmadev.c | 93 ++++++++++++++++++++++++++++++++++ >> 2 files changed, 117 insertions(+) >> >> diff --git a/doc/guides/dmadevs/ioat.rst b/doc/guides/dmadevs/ioat.rst >> index 45a2e65d70..6092599fe4 100644 >> --- a/doc/guides/dmadevs/ioat.rst >> +++ b/doc/guides/dmadevs/ioat.rst >> @@ -62,3 +62,27 @@ For example:: >> Once probed successfully, the device will appear as a ``dmadev``, that is a >> "DMA device type" inside DPDK, and can be accessed using APIs from the >> ``rte_dmadev`` library. >> + >> +Device Configuration >> +~~~~~~~~~~~~~~~~~~~~~ >> + >> +Configuring an IOAT dmadev device is done using the ``rte_dma_configure()`` >> +and ``rte_dma_vchan_setup()`` APIs. ``rte_dma_configure()`` uses the structure >> +``rte_dma_conf`` to configure an IOAT device, within this struct the number >> +of virtual DMA channels for the device is set and silent mode can be enabled. >> +Each IOAT device can only use 1 virtual DMA channel and silent mode is not >> +supported so these will always be set to ``1`` and ``false``. >> +``rte_dma_vchan_setup()`` uses the structure ``rte_dma_vchan_conf`` to setup >> +a virtual DMA channel within this struct the transfer direction and ring size >> +are set. Generally for an onboard Intel\ |reg| IOAT device the transfer direction >> +will be set to ``RTE_DMA_DIR_MEM_TO_MEM`` to copy from memory to memory (more info >> +available in the dmadev API guide). The ring size must be a power of two, between >> +64 and 4096. >> + >> +The following code shows how the device is configured in ``test_dmadev.c``: >> + >> +.. literalinclude:: ../../../app/test/test_dmadev.c >> + :language: c >> + :start-after: Setup of the dmadev device. 8< >> + :end-before: >8 End of setup of the dmadev device. >> + :dedent: 1 >> diff --git a/drivers/dma/ioat/ioat_dmadev.c b/drivers/dma/ioat/ioat_dmadev.c >> index 370be3ec72..d58022e258 100644 >> --- a/drivers/dma/ioat/ioat_dmadev.c >> +++ b/drivers/dma/ioat/ioat_dmadev.c >> @@ -12,9 +12,98 @@ static struct rte_pci_driver ioat_pmd_drv; >> >> RTE_LOG_REGISTER_DEFAULT(ioat_pmd_logtype, INFO); >> >> +#define DESC_SZ sizeof(struct ioat_dma_hw_desc) >> + >> #define IOAT_PMD_NAME dmadev_ioat >> #define IOAT_PMD_NAME_STR RTE_STR(IOAT_PMD_NAME) >> >> +/* Configure a device. */ >> +static int >> +ioat_dev_configure(struct rte_dma_dev *dev __rte_unused, const struct rte_dma_conf *dev_conf, >> + uint32_t conf_sz) >> +{ >> + if (sizeof(struct rte_dma_conf) != conf_sz) >> + return -EINVAL; >> + >> + if (dev_conf->nb_vchans != 1) >> + return -EINVAL; >> + >> + return 0; >> +} >> + >> +/* Setup a virtual channel for IOAT, only 1 vchan is supported. */ >> +static int >> +ioat_vchan_setup(struct rte_dma_dev *dev, uint16_t vchan __rte_unused, >> + const struct rte_dma_vchan_conf *qconf, uint32_t qconf_sz) >> +{ >> + struct ioat_dmadev *ioat = dev->dev_private; >> + uint16_t max_desc = qconf->nb_desc; >> + int i; >> + >> + if (sizeof(struct rte_dma_vchan_conf) != qconf_sz) >> + return -EINVAL; >> + >> + ioat->qcfg = *qconf; >> + >> + if (!rte_is_power_of_2(max_desc)) { >> + max_desc = rte_align32pow2(max_desc); >> + IOAT_PMD_DEBUG("DMA dev %u using %u descriptors", dev->data->dev_id, max_desc); >> + ioat->qcfg.nb_desc = max_desc; >> + } >> + >> + /* In case we are reconfiguring a device, free any existing memory. */ >> + rte_free(ioat->desc_ring); >> + >> + ioat->desc_ring = rte_zmalloc(NULL, sizeof(*ioat->desc_ring) * max_desc, 0); >> + if (ioat->desc_ring == NULL) >> + return -ENOMEM; >> + >> + ioat->ring_addr = rte_mem_virt2iova(ioat->desc_ring); >> + >> + ioat->status_addr = rte_mem_virt2iova(ioat) + offsetof(struct ioat_dmadev, status); >> + >> + /* Ensure all counters are reset, if reconfiguring/restarting device. */ >> + ioat->next_read = 0; >> + ioat->next_write = 0; >> + ioat->last_write = 0; >> + ioat->offset = 0; >> + ioat->failure = 0; >> + >> + /* Configure descriptor ring - each one points to next. */ >> + for (i = 0; i < ioat->qcfg.nb_desc; i++) { >> + ioat->desc_ring[i].next = ioat->ring_addr + >> + (((i + 1) % ioat->qcfg.nb_desc) * DESC_SZ); >> + } >> + >> + return 0; >> +} >> + >> +/* Get device information of a device. */ >> +static int >> +ioat_dev_info_get(const struct rte_dma_dev *dev, struct rte_dma_info *info, uint32_t size) >> +{ >> + struct ioat_dmadev *ioat = dev->dev_private; >> + >> + if (size < sizeof(*info)) >> + return -EINVAL; >> + info->dev_capa = RTE_DMA_CAPA_MEM_TO_MEM | >> + RTE_DMA_CAPA_OPS_COPY | >> + RTE_DMA_CAPA_OPS_FILL; >> + info->max_vchans = 1; >> + info->min_desc = 32; >> + info->max_desc = 4096; >> + info->nb_vchans = (ioat->desc_ring == NULL); > The nb_vchans will overwrite by library. Updated for v5, should be upstreamed in the next few days. Thanks for the review Chengwen! /Conor. > >> + return 0; >> +} >> + >> +/* Close a configured device. */ >> +static int >> +ioat_dev_close(struct rte_dma_dev *dev) >> +{ >> + RTE_SET_USED(dev); >> + return 0; >> +} >> + >> /* Dump DMA device info. */ >> static int >> ioat_dev_dump(const struct rte_dma_dev *dev, FILE *f) >> @@ -77,7 +166,11 @@ static int >> ioat_dmadev_create(const char *name, struct rte_pci_device *dev) >> { >> static const struct rte_dma_dev_ops ioat_dmadev_ops = { >> + .dev_close = ioat_dev_close, >> + .dev_configure = ioat_dev_configure, >> .dev_dump = ioat_dev_dump, >> + .dev_info_get = ioat_dev_info_get, >> + .vchan_setup = ioat_vchan_setup, >> }; >> >> struct rte_dma_dev *dmadev = NULL; >>