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 CB12342601; Thu, 21 Sep 2023 05:00:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B82E64026D; Thu, 21 Sep 2023 05:00:56 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 732724014F for ; Thu, 21 Sep 2023 05:00:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1695265254; x=1726801254; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=dmK1jDFtyfZHJUc6bTrz5t/28U0hx9ko/o9eOPoh6lw=; b=frrWfzhwCs33UZQ17dzoobl6a28vH7qnuTVDa0mAEbeH0xIaIAcYNMdt jc3QfxEicSgYbxHv9z6L1AtTmpdsqLgQ9aHBvWhQ2qTMMu2sMlgB6TS2w lxCcKPySGHt5qqCzBYj3ocmUlzH2LYruB7wJVVJEkMpE/4nC/4xeHCLBF zdhatWG659x6iI9xkBRPCtF7WpVsHpEaP7iHlITHd41lsSBy4/ohXABwA BQEdcaZsoATwHGulmT2r3xNLjrUVOjZ3lWXTypxzK6mACI6p6pY4zbgNs f+MLEph9sgm9BWbfy9z7RkJT0decKTD1m3OFQ2p3r1EgiSy91D91L2rpP w==; X-IronPort-AV: E=McAfee;i="6600,9927,10839"; a="446874494" X-IronPort-AV: E=Sophos;i="6.03,164,1694761200"; d="scan'208";a="446874494" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Sep 2023 20:00:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10839"; a="812439850" X-IronPort-AV: E=Sophos;i="6.03,164,1694761200"; d="scan'208";a="812439850" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga008.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 20 Sep 2023 20:00:52 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) 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.2507.32; Wed, 20 Sep 2023 20:00:52 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 20 Sep 2023 20:00:52 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Wed, 20 Sep 2023 20:00:52 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Wed, 20 Sep 2023 20:00:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CUJd36zz7eOKb4D9CmaupfYTCnhhh8n/MQAMNJj+kWPEKVB5xZgSqfrf+lGt9ajxfxJZuTQ4wg60w/xS90xMbvRFlimv9FouuqIPqucXszws9japERA0Lkzb2KIsmXwqthLwlBP6kFbwDjuhy96rR8S4ci/AylOLQ9Prz3cqaHaicI2okHG1g5lCe416Wfbww1sh634KBIr3dJlD4iD1OdyoYI0R6XFc36Lsivk6a9X1IfvMW2CSNnXEC1EGWVDOMCo0h+wmoswuG7bl2sIyaC/70VqGeJRpvB9gk3CUDbIeNbrxXNgF9bK1Vyq0V7myKXa6F5EiSg7fQVEtWyYnXQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=krZIgP556CPeasQQrAaLQZik7droHonmYyBMhDphz4g=; b=oKnQ72MT830exct6EUGo/n19Tk3jiWdaEFhioPqckfRPMjktI56c70S/sujnm5fn/7w0zqo3xR8YMzavGVuFNrk1Mk7A8xXF4Zkg3kAosqNG0m1YFJbw6am7wyxFoMcll8mUK9d9bX0J08b0uAdET1h3h7LqOZ0rzEE4KTpA35MYrloGd4jPkGBeh9K/iXhS8VIxYdP7PQmSJGBNAzcgcQJGkS66xHrpDGfDV37zcDcMlNWrpNrplNP4ohmxmqnWIaWoHpgXKKVlnxd6qRRsIsseQ1S1g75hHV419z6efUJm4tbywmsByzUeymF/8lpBoJd5hnbzQ32nY3zLctrj3g== 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 Received: from SN7PR11MB7019.namprd11.prod.outlook.com (2603:10b6:806:2ae::22) by BN9PR11MB5452.namprd11.prod.outlook.com (2603:10b6:408:101::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.19; Thu, 21 Sep 2023 03:00:50 +0000 Received: from SN7PR11MB7019.namprd11.prod.outlook.com ([fe80::7f2e:e0a:ddb2:753d]) by SN7PR11MB7019.namprd11.prod.outlook.com ([fe80::7f2e:e0a:ddb2:753d%7]) with mapi id 15.20.6792.026; Thu, 21 Sep 2023 03:00:49 +0000 From: "Jiang, Cheng1" To: Amit Prakash Shukla CC: "dev@dpdk.org" , "jerinj@marvell.com" Subject: RE: [PATCH 2/2] app/dma-perf: add PCI device support Thread-Topic: [PATCH 2/2] app/dma-perf: add PCI device support Thread-Index: AQHZyTAQ9kY86IgK4Ui3k0fYO1s227Ak3RrA Date: Thu, 21 Sep 2023 03:00:49 +0000 Message-ID: References: <20230807130621.2023043-1-amitprakashs@marvell.com> <20230807130621.2023043-2-amitprakashs@marvell.com> In-Reply-To: <20230807130621.2023043-2-amitprakashs@marvell.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN7PR11MB7019:EE_|BN9PR11MB5452:EE_ x-ms-office365-filtering-correlation-id: a608f694-fb2c-43b0-114e-08dbba4ef5f0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UsTlxuxc5LT0RBEng1YTPBDdIdz0gflSD8ydmAAf0sNNtqLw66VgcehYKAhUeGVZ4VzTzh7JacV9oSlPt/bgU8e+X4wO6XTzhEcOybe958sUv0pjqVOo2FMOBwHpQ/i5d+SZD4n4okY4Fr302bmNcZuERig6cfol7FqOOV1mEjD1tqEcXDWMzSOiz6Zf2E8n1Vc4yOB91zzIcXVxHzYUURavd0GaU04sImjtbA5t0TpLLeIxPZcIJhoQ1D1b3EI2kTRtRNQMgXgD19pc+gYh7Yu0TPcOm40zdinF4LiCrgSuyoTUU+EdsoXc4xGb7DA7r62OTBAySkebVTyS+OxXz/4LbzrATDMtOJQ1UIaVA9VlugjkBZK29l+0h+7QYsbPWrk3Ejl9aDZWh05FOrlzy5k0y1A93XzQBjQPu+5Vuir0rQpsgSfQHaKHmCOjRfrMh/Cr7Fr/pkHDzXZ/r1B8FPok0T2yvZDQwoNlklKXh7pu+Qp7eWF6pOV8UAArzzt/qukmpiazNT9wUetTHs+J/tmV/b4rR1eRtk+koodsazy5ux/vQtdnhwVjOHIR2FWvtHOQmJIOtLkVNkRTf4ZrLm8BPXqqLwIVBF4Xx6wtVXw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7019.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(366004)(346002)(396003)(376002)(136003)(1800799009)(186009)(451199024)(9686003)(71200400001)(6506007)(7696005)(53546011)(83380400001)(86362001)(122000001)(33656002)(38100700002)(82960400001)(38070700005)(66556008)(55016003)(26005)(30864003)(316002)(64756008)(6916009)(66476007)(54906003)(66946007)(76116006)(41300700001)(66446008)(2906002)(52536014)(5660300002)(8936002)(8676002)(4326008)(478600001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?pI58AG1j7xjwxC6a1WwtrEuGO4ITZmV6wqH3bdg1t7bfA4YJ3UW7zwA62VrO?= =?us-ascii?Q?k/iqZ9aNsSV70mJKGp0peLQN8qVgkUdNhI7d16gbmBw3mTQ14KRPz12B7rfy?= =?us-ascii?Q?bj6BoXFiyv6haXmqsa6m0gHF3QHEI8ckDYOz7HV/BYa1eaP4AqfI0XzIhnAa?= =?us-ascii?Q?Ty45TIU42RtX0A7f3ow6c8u7R2LHMIHw3iQjTMX729p8v6w8Et5nLIYGjFg6?= =?us-ascii?Q?5fgPtpd0IOd9bWYq7N4e2Le2vIy3MdfOPLqz9cN2ROt8SvqWTV2xTdZBv1ss?= =?us-ascii?Q?yFePspVHJxOqc2OpNHhfT0CPc9wgxUSyYT8Y1eDx/7SVGVH+vMthtPdJuMKI?= =?us-ascii?Q?25hWyDA5733BoVqHuMEHzUveoKVTjPOFD3KcX3h0i772aRBqEoaocHoHcAS3?= =?us-ascii?Q?eVNXttZrU06YU4eTvBBcMGLoqS7Uw23Fc9INEbzv1PK0y74DDDZFh0H6izGv?= =?us-ascii?Q?cetQqy2JXcoex5Ul812Zj0oD0Vh1MF9JEDoNk43+rgNv+ApFYcrplVd35ApV?= =?us-ascii?Q?wxX48oSjqIKN0RZxAT0T66M0dVLneyptaXsps9AXkMCE/bskLIny0hdWweww?= =?us-ascii?Q?O2wEfimWN4KIHwSHIgFyKYZFwZKkJeSijwyrHriNpNejaAovy13XN6X4O/iS?= =?us-ascii?Q?sIsJ9ZKUIXtzkmVjVkxcKVezK+DcWuvTHZExmVrAv/osJcToo2NiqfJk1Q6F?= =?us-ascii?Q?FV+LXHvfn1GgKbp8NCilU0vm6LJy53y3+pI/iUVGDnKrCrzBOpsGRjOo3YfQ?= =?us-ascii?Q?sMfKroAj9yb2Q/m8VjrVmDMwzeTUnA7XsaLGbA78AZ/+IAjl6Qfh85MSMSTe?= =?us-ascii?Q?hGb4MmwoPB0Wb/Z13gvx/csLvkJHSPztC/7HHb6Bt3EgFXLMTLZDw/5INrDU?= =?us-ascii?Q?ZbF6gO68preRWw5ej2XNEB0tjRfmVTgewQEeR9mCN16H9tXOMzmiygv0xIYR?= =?us-ascii?Q?b8FfB0LtQTEAgYrQptz5ApsTvHYxDoaDL+1vNgllVUlwd4GFNiGtkdCGsGjZ?= =?us-ascii?Q?yNnx2YXCVp3WLwpthHSYPolSXsnNQdsPiH+DFmPdKuTICh2EIPCkYLWUK69W?= =?us-ascii?Q?LVjpdrwOEH2t8gtR4HbnYwV22NrB1Dndl+XQbgrOP/4e8vQQQf1kLbRXFQ+3?= =?us-ascii?Q?cJnFGV/+VirqivYqJ4lt6lQTb+o4J5nPx5b4rtQ3yXd97OnzBeFFVoxx+18j?= =?us-ascii?Q?Hvh05YGvUeLFXHFMw8ej5ZO6Es+y2dn5fVhKFcNcsZtaBeP08CdS251q6BC1?= =?us-ascii?Q?v3ZfqDt02jsikHw+RHDost+4x2lUVblm75ozuqmVCPshgbRkKQsnJHqfJavt?= =?us-ascii?Q?onQgKEIGwX0BTdiseUNat0gxkFwx0a5ev1IAoERTU+xE9V3gsGcBVKGuNW4f?= =?us-ascii?Q?qtIDReAXwo7xO6tNMheXXD+37o8URXiS49i+KlLEqDUrGJ9wfTGjoohTsshh?= =?us-ascii?Q?wpvC3QoXrIieNPfMitHyxkACAoiLyHe4973rCeRj9JchygEQZtnEn2qqOono?= =?us-ascii?Q?0BKR4neoOV8PgBGizwIRWB58cv0sSjoSKAGd+aTTEJYx87ffF5MHQdjORKsQ?= =?us-ascii?Q?ooXVtVZ7DkS4lRLUHmsp4CEBcS4jNuapIv6xQ0YL?= 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: SN7PR11MB7019.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a608f694-fb2c-43b0-114e-08dbba4ef5f0 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Sep 2023 03:00:49.9365 (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: oSaeFomkCg5qAS+47QJpkGASV2IYpbt05CksfbmfcEjzzYbRqNyZC9BgEnY/3gc3naOEbrh5BfCTaHLZpYY9YQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5452 X-OriginatorOrg: intel.com 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 Hi, > -----Original Message----- > From: Amit Prakash Shukla > Sent: Monday, August 7, 2023 9:06 PM > To: Jiang, Cheng1 > Cc: dev@dpdk.org; jerinj@marvell.com; Amit Prakash Shukla > > Subject: [PATCH 2/2] app/dma-perf: add PCI device support >=20 > Add support to test performance for "device to memory" and "memory to > device" data transfer. Sorry for the late reply. Generally I like your idea. But I might not be able to review in a timely m= anner, as I'm leaving Intel. If you're in a hurry, you might need to find someone else to help with the = review. Thanks for your work, Cheng >=20 > Signed-off-by: Amit Prakash Shukla > --- > app/test-dma-perf/benchmark.c | 67 > +++++++++++++++++++++++++++++++---- > app/test-dma-perf/config.ini | 37 +++++++++++++++++++ > app/test-dma-perf/main.c | 67 > +++++++++++++++++++++++++++++++++++ > app/test-dma-perf/main.h | 6 ++++ > 4 files changed, 170 insertions(+), 7 deletions(-) >=20 > diff --git a/app/test-dma-perf/benchmark.c b/app/test-dma- > perf/benchmark.c index 0601e0d171..523f2fbb5a 100644 > --- a/app/test-dma-perf/benchmark.c > +++ b/app/test-dma-perf/benchmark.c > @@ -127,17 +127,54 @@ cache_flush_buf(__rte_unused struct rte_mbuf > **array, #endif } >=20 > +static int > +vchan_data_populate(uint32_t dev_id, struct rte_dma_vchan_conf *qconf, > + struct test_configure *cfg) > +{ > + struct rte_dma_info info; > + > + qconf->direction =3D cfg->transfer_dir; > + > + rte_dma_info_get(dev_id, &info); > + if (!(RTE_BIT64(qconf->direction) & info.dev_capa)) > + return -1; > + > + qconf->nb_desc =3D cfg->ring_size.cur; > + > + switch (qconf->direction) { > + case RTE_DMA_DIR_MEM_TO_DEV: > + qconf->dst_port.pcie.vfen =3D 1; > + qconf->dst_port.port_type =3D RTE_DMA_PORT_PCIE; > + qconf->dst_port.pcie.coreid =3D cfg->dcoreid; > + qconf->dst_port.pcie.vfid =3D cfg->vfid; > + qconf->dst_port.pcie.pfid =3D cfg->pfid; > + break; > + case RTE_DMA_DIR_DEV_TO_MEM: > + qconf->src_port.pcie.vfen =3D 1; > + qconf->src_port.port_type =3D RTE_DMA_PORT_PCIE; > + qconf->src_port.pcie.coreid =3D cfg->scoreid; > + qconf->src_port.pcie.vfid =3D cfg->vfid; > + qconf->src_port.pcie.pfid =3D cfg->pfid; > + break; > + case RTE_DMA_DIR_MEM_TO_MEM: > + case RTE_DMA_DIR_DEV_TO_DEV: > + break; > + } > + > + return 0; > +} > + > /* Configuration of device. */ > static void > -configure_dmadev_queue(uint32_t dev_id, uint32_t ring_size) > +configure_dmadev_queue(uint32_t dev_id, struct test_configure *cfg) > { > uint16_t vchan =3D 0; > struct rte_dma_info info; > struct rte_dma_conf dev_config =3D { .nb_vchans =3D 1 }; > - struct rte_dma_vchan_conf qconf =3D { > - .direction =3D RTE_DMA_DIR_MEM_TO_MEM, > - .nb_desc =3D ring_size > - }; > + struct rte_dma_vchan_conf qconf =3D { 0 }; > + > + if (vchan_data_populate(dev_id, &qconf, cfg) !=3D 0) > + rte_exit(EXIT_FAILURE, "Error with vchan data populate.\n"); >=20 > if (rte_dma_configure(dev_id, &dev_config) !=3D 0) > rte_exit(EXIT_FAILURE, "Error with dma configure.\n"); @@ - > 159,7 +196,6 @@ configure_dmadev_queue(uint32_t dev_id, uint32_t > ring_size) static int config_dmadevs(struct test_configure *cfg) { > - uint32_t ring_size =3D cfg->ring_size.cur; > struct lcore_dma_map_t *ldm =3D &cfg->lcore_dma_map; > uint32_t nb_workers =3D ldm->cnt; > uint32_t i; > @@ -176,7 +212,7 @@ config_dmadevs(struct test_configure *cfg) > } >=20 > ldm->dma_ids[i] =3D dev_id; > - configure_dmadev_queue(dev_id, ring_size); > + configure_dmadev_queue(dev_id, cfg); > ++nb_dmadevs; > } >=20 > @@ -308,6 +344,7 @@ setup_memory_env(struct test_configure *cfg, > struct rte_mbuf ***srcs, > unsigned int buf_size =3D cfg->buf_size.cur; > unsigned int nr_sockets; > uint32_t nr_buf =3D cfg->nr_buf; > + uint32_t i; >=20 > nr_sockets =3D rte_socket_count(); > if (cfg->src_numa_node >=3D nr_sockets || @@ -360,6 +397,22 @@ > setup_memory_env(struct test_configure *cfg, struct rte_mbuf ***srcs, > return -1; > } >=20 > + if (cfg->transfer_dir =3D=3D RTE_DMA_DIR_DEV_TO_MEM) { > + for (i =3D 0; i < nr_buf; i++) { > + /* Using mbuf structure to hold remote iova address. > */ > + rte_mbuf_iova_set(*srcs[i], (rte_iova_t)cfg->raddr); > + ((*srcs)[i])->data_off =3D 0; > + } > + } > + > + if (cfg->transfer_dir =3D=3D RTE_DMA_DIR_MEM_TO_DEV) { > + for (i =3D 0; i < nr_buf; i++) { > + /* Using mbuf structure to hold remote iova address. > */ > + rte_mbuf_iova_set(*dsts[i], (rte_iova_t)cfg->raddr); > + ((*dsts)[i])->data_off =3D 0; > + } > + } > + > return 0; > } >=20 > diff --git a/app/test-dma-perf/config.ini b/app/test-dma-perf/config.ini > index 4d59234b2a..cddcf93c6e 100644 > --- a/app/test-dma-perf/config.ini > +++ b/app/test-dma-perf/config.ini > @@ -38,6 +38,23 @@ >=20 > ; "skip" To skip a test-case set skip to 1. >=20 > +; Parameters to be configured for data transfers from "mem to dev" and > "dev to mem": > +; > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ; "direction" denotes the direction of= data transfer. It > +can take 3 values: > +; 0 - mem to mem transfer > +; 1 - mem to dev transfer > +; 2 - dev to mem transfer > +; If not specified the default value is 0 (mem to mem transfer). > + > +; "raddr" remote iova address for "mem to dev" and "dev to mem" transfer= . > + > +; "scoreid" denotes source PCIe core index. > +; "dcoreid" denotes destination PCIe core index. > +; "pfid" denotes PF-id to be used for data transfer ; "vfid" denotes > +VF-id of PF-id to be used for data transfer. > + > +; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D End of "mem to dev" and "dev to mem"= config parameters. > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > [case1] > type=3DDMA_MEM_COPY > mem_size=3D10 > @@ -52,6 +69,26 @@ lcore_dma=3Dlcore10@0000:00:04.2, > lcore11@0000:00:04.3 eal_args=3D--in-memory --file-prefix=3Dtest >=20 > [case2] > +skip=3D1 > +type=3DDMA_MEM_COPY > +direction=3D2 > +raddr=3D0x200000000 > +scoreid=3D0 > +dcoreid=3D0 > +pfid=3D0 > +vfid=3D0 > +mem_size=3D10 > +buf_size=3D64,4096,2,MUL > +dma_ring_size=3D1024 > +kick_batch=3D32 > +src_numa_node=3D0 > +dst_numa_node=3D0 > +cache_flush=3D0 > +test_seconds=3D2 > +lcore_dma=3Dlcore10@0000:00:04.2, lcore11@0000:00:04.3 > +eal_args=3D--in-memory --file-prefix=3Dtest > + > +[case3] > type=3DCPU_MEM_COPY > mem_size=3D10 > buf_size=3D64,8192,2,MUL > diff --git a/app/test-dma-perf/main.c b/app/test-dma-perf/main.c index > 61260fa072..9640356592 100644 > --- a/app/test-dma-perf/main.c > +++ b/app/test-dma-perf/main.c > @@ -16,6 +16,7 @@ > #include > #include > #include > +#include >=20 > #include "main.h" >=20 > @@ -318,9 +319,11 @@ load_configs(const char *path) > struct test_configure *test_case; > char section_name[CFG_NAME_LEN]; > const char *case_type; > + const char *transfer_dir; > const char *lcore_dma; > const char *mem_size_str, *buf_size_str, *ring_size_str, > *kick_batch_str; > const char *skip; > + const char *raddr, *scoreid, *dcoreid, *vfid, *pfid; > int args_nr, nb_vp; > bool is_dma; >=20 > @@ -358,6 +361,20 @@ load_configs(const char *path) > if (strcmp(case_type, DMA_MEM_COPY) =3D=3D 0) { > test_case->test_type =3D > TEST_TYPE_DMA_MEM_COPY; > test_case->test_type_str =3D DMA_MEM_COPY; > + > + transfer_dir =3D rte_cfgfile_get_entry(cfgfile, > section_name, "direction"); > + if (transfer_dir =3D=3D NULL) { > + printf("Transfer direction not configured." > + " Defaulting it to MEM to MEM > transfer.\n"); > + test_case->transfer_dir =3D > RTE_DMA_DIR_MEM_TO_MEM; > + } else > + test_case->transfer_dir =3D > (uint8_t)atoi(transfer_dir); > + > + if (test_case->transfer_dir >=3D > RTE_DMA_DIR_DEV_TO_DEV) { > + printf("Error: Invalid transfer direction > configured.\n"); > + test_case->is_valid =3D false; > + continue; > + } > is_dma =3D true; > } else if (strcmp(case_type, CPU_MEM_COPY) =3D=3D 0) { > test_case->test_type =3D > TEST_TYPE_CPU_MEM_COPY; @@ -369,6 +386,56 @@ load_configs(const > char *path) > continue; > } >=20 > + if (test_case->transfer_dir =3D=3D RTE_DMA_DIR_MEM_TO_DEV > || > + test_case->transfer_dir =3D=3D > RTE_DMA_DIR_DEV_TO_MEM) { > + char *endptr; > + > + raddr =3D rte_cfgfile_get_entry(cfgfile, section_name, > "raddr"); > + if (raddr =3D=3D NULL) { > + printf("Error: No raddr configured for > case%d.\n", i + 1); > + test_case->is_valid =3D false; > + continue; > + } > + test_case->raddr =3D strtoull(raddr, &endptr, 16); > + > + vfid =3D rte_cfgfile_get_entry(cfgfile, section_name, > "vfid"); > + if (vfid =3D=3D NULL) { > + printf("Error: No vfid configured for > case%d.\n", i + 1); > + test_case->is_valid =3D false; > + continue; > + } > + test_case->vfid =3D (uint16_t)atoi(vfid); > + > + pfid =3D rte_cfgfile_get_entry(cfgfile, section_name, > "pfid"); > + if (pfid =3D=3D NULL) { > + printf("Error: No pfid configured for > case%d.\n", i + 1); > + test_case->is_valid =3D false; > + continue; > + } > + test_case->pfid =3D (uint8_t)atoi(pfid); > + > + } > + > + if (test_case->transfer_dir =3D=3D RTE_DMA_DIR_DEV_TO_MEM) > { > + scoreid =3D rte_cfgfile_get_entry(cfgfile, section_name, > "scoreid"); > + if (scoreid =3D=3D NULL) { > + printf("Error: No scoreid configured for > case%d.\n", i + 1); > + test_case->is_valid =3D false; > + continue; > + } > + test_case->scoreid =3D (uint8_t)atoi(scoreid); > + } > + > + if (test_case->transfer_dir =3D=3D RTE_DMA_DIR_MEM_TO_DEV) > { > + dcoreid =3D rte_cfgfile_get_entry(cfgfile, > section_name, "dcoreid"); > + if (dcoreid =3D=3D NULL) { > + printf("Error: No dcoreid configured for > case%d.\n", i + 1); > + test_case->is_valid =3D false; > + continue; > + } > + test_case->dcoreid =3D (uint8_t)atoi(dcoreid); > + } > + > test_case->src_numa_node =3D > (int)atoi(rte_cfgfile_get_entry(cfgfile, >=20 > section_name, "src_numa_node")); > test_case->dst_numa_node =3D > (int)atoi(rte_cfgfile_get_entry(cfgfile, > diff --git a/app/test-dma-perf/main.h b/app/test-dma-perf/main.h index > be89cb2b65..617f62f085 100644 > --- a/app/test-dma-perf/main.h > +++ b/app/test-dma-perf/main.h > @@ -43,6 +43,7 @@ struct test_configure { > bool is_valid; > bool is_skip; > uint8_t test_type; > + uint8_t transfer_dir; > const char *test_type_str; > uint16_t src_numa_node; > uint16_t dst_numa_node; > @@ -58,6 +59,11 @@ struct test_configure { > uint16_t test_secs; > const char *eal_args; > uint8_t scenario_id; > + uint8_t scoreid; > + uint8_t dcoreid; > + uint8_t pfid; > + uint16_t vfid; > + uint64_t raddr; > }; >=20 > void mem_copy_benchmark(struct test_configure *cfg, bool is_dma); > -- > 2.25.1