From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Pavan.Bhagavatula@cavium.com>
Received: from NAM02-BL2-obe.outbound.protection.outlook.com
 (mail-bl2nam02on0077.outbound.protection.outlook.com [104.47.38.77])
 by dpdk.org (Postfix) with ESMTP id 447431B1A0
 for <dev@dpdk.org>; Mon, 11 Dec 2017 12:13:25 +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=r+KheLniIetb+IqxRsNsm25NFvFzxrvRJ721KMZnTd0=;
 b=AEjnJcKrjZk9O4YjFoI3xsjg5vDxpy54VfYeDLw/pYBZuyDdGCpx8+/iBH53VtRDHluEqzEHGqPAZT6iVHxhTwvaA6MikFHQOGjDnhq+ukgW3+0NsOzB71ZMSAkwtNQVxEn5Ujqb8uiYRU9f/Hi9z2LjvltdH9heST9zX2aJnF8=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Pavan.Bhagavatula@cavium.com; 
Received: from Pavan-LT.caveonetworks.com (111.93.218.67) by
 BN6PR07MB3458.namprd07.prod.outlook.com (10.161.153.21) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id
 15.20.302.9; Mon, 11 Dec 2017 11:13:20 +0000
From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
To: jerin.jacob@caviumnetworks.com, bruce.richardson@intel.com,
 harry.van.haaren@intel.com, gage.eads@intel.com, hemant.agrawal@nxp.com,
 nipun.gupta@nxp.com, nikhil.rao@intel.com,
 santosh.shukla@caviumnetworks.com
Cc: dev@dpdk.org,
	Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Date: Mon, 11 Dec 2017 16:42:34 +0530
Message-Id: <20171211111236.1331-6-pbhagavatula@caviumnetworks.com>
X-Mailer: git-send-email 2.14.1
In-Reply-To: <20171211111236.1331-1-pbhagavatula@caviumnetworks.com>
References: <1508330348-30060-1-git-send-email-pbhagavatula@caviumnetworks.com>
 <20171211111236.1331-1-pbhagavatula@caviumnetworks.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [111.93.218.67]
X-ClientProxiedBy: BN6PR1301CA0010.namprd13.prod.outlook.com (10.174.84.151)
 To BN6PR07MB3458.namprd07.prod.outlook.com (10.161.153.21)
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 3b7e90fc-d9b9-40ed-d110-08d54088316a
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603307);
 SRVR:BN6PR07MB3458; 
X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3458;
 3:gePIy0m+IG6go8sUXo9CuMEAsYUHH4IgKDO8ILHZZBEI0mXvcnQNyktFKsJBWKS+I1LWDiqGbOaik7rAB+WKJL8C1GMwJXPSO7/FQavL64pJgEjtcd+zUq0p2aCyPoktX3sJTxdSYbRrlcaKJMIYGhIEoCJrhPAUmstDpiH4lv17omK+79r98RGRiFTyqmPB9aJvb3WhBDfcOu1USOLk2Eh1o/QiS6bLs0NLbIsfeDWA3dDYetn/AMs3+vqI6x+d;
 25:i6vd6e/nnfxL7mpAX6QyFTPMRpK5cQys8uw79x6Yc0ZQkQYJu1D9T65zT1AUV4/DENpHGaPkrabz3fagFzs1MGhjc+R1Co52hdDpz7lrAPEba1TatNAqbkzxqmpLa3SAwJYNWha2lIipzrBGVp4eOLej+JlxWvILNdLBFirwZGBsKpFozMUQv7uO0NO/61NDKWNXaXTRnRpPPX8Dnl3GSnPd6gxbNSVvDGdlAszbfjLeh6gYze3cJU7tTqslsH6w20I25wj5cF2HtKT6lJC/DXpVlh3YULhaGYLus209r8DGMjYDk/z2gGn0APZjjT9LoAzdLGjMedT9BrDiPXcNffNeB0PHva2RnHA90YKNLuw=;
 31:QV5n8beExqWsFuml+cXHf6mJDYPYg8FqaX3icfGL62+rttav+jq9KwuOxTKjGo2SQesrepHHdqPCjJoNgi7dEbFd2XyRlaKT2ByIm/BswbCYxL/K9BSV2JQMywd/Y1LqWNRDPBot1YZ8JOMe2yF95RZVluPv9B/kwVNWjBXGcTNSMxHREUz4eIdXhHMb3jWCs9ujtXrWfMzxNmOPeXzzmBQVQcubLNe9AtMlt07mnWI=
X-MS-TrafficTypeDiagnostic: BN6PR07MB3458:
X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3458;
 20:TlXdfkfV/ap5c1QXAzdoDBcfbEEiAUuf8c6agYiaosAtvwpQ5jYieeyTkA/FAbk2M80A701YDTybUjrU+z6buEl/N0LANatnjML4L01Mv4V7nNMsy7cmCdaUPk6PWfDZeHpZyehhAca6jArmv0iMU5Hh7Ea985o/PoI4QHzLoGyUUSHzF0cPZ8wagq2/37+No1t2HEDa5SyG6vu0l8/WCRwrWZlAQgQ4a8cNzpN/4p0t4wMyz8nKkYmz1+KSsCHRTnFw6ZLvjASZBFH0/pa25yN0LOL+EpZwWIJy9mwX4alclUPoTFKRWThrjJqd2tAqHeFvfKKEKcYxQMAS5lpuP9VGufsAh8u3unnA1jbLtAKpkBcSCrUPL7uQ1/PHSl/RZw0nGJfTM6eBXLeSk/igmdMR7Q9Q6/NzRp+tWjsE9h2Yd0/cQlt9UHeC40e8RT00eI85fVYImGE9XhXo4Xd8wpj8nJ7melhpda2rZ4VfU2cp2wmYDqXfdt8aHpqkmfe+ENEg4dbnRQC89tM6JS9IDNloD8PaHOcSKjHNMyzSc3NSUg4p+2/h3aSv8hbIAL8vG8dRdWba/1CxyTlLAMf+RytrnvFWyA7VWPhXyOBVdZA=;
 4:YCwL2PkrrUlL/r21x4qHSDq5Uk9OLyVVOur8ZOb7kayk4hJxAnen+xGAiN8D/8MUM65Zfy4dcUQGVMaQ7f7/qaeBJrI2gRDdQ6CyjjDHcIZK2NpDWdyuuZHyeRSbkJX+PbxElrYiWDIW+TC+gz5Ms0YbkhINLVLITT/X0JqDVzA1qoJZFPmNewIOO9bFpyp76ecQ0CDNSl7av2gO1Um6ff/pZW64s0EHOeZ5cYfz4B9AQvAiij7kgnsfRoGd1J04MajXGaNU2tUJqQsz6s5Dvg==
X-Microsoft-Antispam-PRVS: <BN6PR07MB345863118A7FA68DCC9CFF7E80370@BN6PR07MB3458.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(3231022)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(6072148)(201708071742011);
 SRVR:BN6PR07MB3458; BCL:0; PCL:0; RULEID:(100000803101)(100110400095);
 SRVR:BN6PR07MB3458; 
X-Forefront-PRVS: 0518EEFB48
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(346002)(366004)(376002)(189003)(199004)(76176011)(51416003)(105586002)(48376002)(59450400001)(5660300001)(52116002)(6506006)(3846002)(2906002)(50466002)(106356001)(97736004)(66066001)(316002)(25786009)(305945005)(2950100002)(8656006)(478600001)(4326008)(16586007)(16526018)(42882006)(81166006)(6636002)(8676002)(81156014)(72206003)(8936002)(33646002)(107886003)(36756003)(68736007)(69596002)(6486002)(6666003)(50226002)(53936002)(47776003)(6116002)(53416004)(5009440100003)(1076002)(6512007)(7736002)(42262002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3458; H:Pavan-LT.caveonetworks.com;
 FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR07MB3458;
 23:gKjmAO752UqjfAZzpUqZuVPxH36yoQ5h2eH23IjiD?=
 =?us-ascii?Q?qkCM4WAFwl+rBPavvprkZJOB0s7nydtS+GZvfKeK7Mj0fDH6/Prs6Kwfl0QY?=
 =?us-ascii?Q?QT3ty4zaCdhMuBpdfDvmPnqo163EyzNQui+Hf+AkdE3NmM9aEXY9PShi1C2x?=
 =?us-ascii?Q?Q/NhRldSZT4iBte5pdS7jMqxDVo5suUHjKTl/zWfKT4cBzTBlUa4PmlC2vFD?=
 =?us-ascii?Q?XsGr6AE5gcqo0kHHimFfS9oVZlmyDRQ2/6vMjIM6qQ8Jc+jDAZBF/RpKTFKs?=
 =?us-ascii?Q?0TZ5dsm9gad/6cKj+xgpSNJaLh+XN8ReVvKazRuLJo/7yHiM0BYs6NOhJJYE?=
 =?us-ascii?Q?DsBfBR5w1z+SSn6o4RJekUdnGHJQr1OdAILI8SvJUNxW/3Q0F+s2M15GOb1a?=
 =?us-ascii?Q?YOHz7yMai/Dt5JKi9eAiOh1THc5l47z704v+78gpVKTbeJClwhMQ9x5T/zd+?=
 =?us-ascii?Q?JQ3j8bzwBGPyqIoZm7IVukFnJEfnuNS8RplY3keNKHrzAr3f94eEvYanXEVG?=
 =?us-ascii?Q?vxA/8+w9PfjW0KX2rTuaPNNw7Yh0MgftnkrLqBvSexyqEVh43jr8om9li/q0?=
 =?us-ascii?Q?2er/ImtO/rQk+bmcq5l48X41ilR2KmE+F4InyWteoQ8RXQL6xEuKZURkBOUB?=
 =?us-ascii?Q?jGUGf2BzoMpEhL9uaZry57vNHk96tVch2kBpBde8zarYzUErPoO8PDn16gBc?=
 =?us-ascii?Q?co8s4NsscgEXyKrs0pCnzp7vXMcUzNu5umIhSRp2LVxyZawq0ApTK5CdNHHI?=
 =?us-ascii?Q?jJtE6g7DlCyJ2KUP/Oko8OqJHJwSEqwv5sld2ZYLUWyBGf9nJ2o365cL/B8i?=
 =?us-ascii?Q?MDdxOFlelPXnJ8H6gslhbRniMjQ2o7bnreNqXx9MyswS4FguvejNGA0gdFAU?=
 =?us-ascii?Q?twqK5LO0eKWu/PnDosm900UxT2ThNCjTeuQz/1oIluIZvYxw9VCUqM960HsY?=
 =?us-ascii?Q?6h9yArEwO0D6ZYACSmzCm20OYdEgCf/8ytj0wL6EV3mDSd9Wb0D1Qwm/FTgZ?=
 =?us-ascii?Q?BqKWSU0lobY67wVdS6H6aunXctURr501ctikxROk+eyJEGyykHasKyhaqnci?=
 =?us-ascii?Q?yT0PPv7ukaWX5NJ1R2phq16TeuKLFFv91fzLF3yYWrn7yi1kGpvGKTyKCrvf?=
 =?us-ascii?Q?EY9uYii9ekvGxZWNG46er9t/g5hSta1QMYpNPpcCJ6mmk60Cmn1EG+7uQ6Xe?=
 =?us-ascii?Q?P4oMD4gCjtBOIhfEHvLQzi1Y3om2mMkK5M1?=
X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3458;
 6:uI16Wm7vH9rgv6tH4gUiwAoFulEyEkXRpXlRi0pCCvstwf9gWv47YehS9tEHAmbC2IM/jR0e24tZJMzOnkemfgCllrRLzYc/CAd0z//vV6upcmgzy2L6i0ufs9hcL6Pp6v09M+Fp0dzKPeCMPZ0jV2wQFYZYTME4peRJUXufv7t98jW9JvW1f6lyITx2Y3BUnCHY6CIEGZzmbL5evuPTiQlNOBjltS7sfdvy1jNhCfva4W59Jcz+XUAB27589w2Aq8yCcldZgxGVIleLLT4HWYgFlQeaOZoYCMQ9G2z/gg55uqwlSD9ED4xzYIw46V18TLKpfkONKAb1jHQRKj9d5zMrmo3c1OjUvpwzFoOxwkY=;
 5:TgNu9SLsJ4PjYbZu5NLonyRzDdWk7h2BBbLL8O+HuusFpH3Pptr72nEIvHbFCwzYRok54mZxYdQjMUCPryZsKbqcp5zt1BZ69/N9pO8/HpUQBrkYvg20roJwM55zslD3O95Lvvhmpf2COlct21UWoL+winNivILTGquoFFLY2so=;
 24:KPL0GGpgrUrPvFAimZpL25sJTETZZzcgs5ZqWUNKem374atPCIERlbftx4aORYcKswslcNgiyf/W3eE4FR5P1ZvvHBOzU/2mgkINSAZVoI8=;
 7:AF+dWu/ozwxeW5Gn61FjC/ooZCKBOG17qn3UodbPlQJHCyR1zxl9xzDnhVwrCXrjMd9rrYNkU9jBIwj3vyOAwlIK09GkfK77hbSwTuTb4WRz/tUPKsNINDg0WnNIMITtO+oF3TvxTrPTVJ0n5HQ/Q9Nxh8fKCU9j/Nfwf1CUDfKyiRHzyddbn6+zRbD4GTcGp8siOTlL+pxUhNdFXQXkK1Gbniamd0vHB17jnIfzUZzERnopYmbNeMpoMrkl1+Ek
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2017 11:13:20.1763 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3b7e90fc-d9b9-40ed-d110-08d54088316a
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3458
Subject: [dpdk-dev] [PATCH v2 6/8] app/eventdev: add event Rx adapter setup
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Mon, 11 Dec 2017 11:13:25 -0000

Add functions to setup and configure Rx adapter based on the number of
ethdev ports setup.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---

 v2 Changes:
  - Used default eventdev config values instead of hardcoded values.

 app/test-eventdev/test_perf_atq.c    |  19 ++++--
 app/test-eventdev/test_perf_common.c | 111 +++++++++++++++++++++++++++++------
 app/test-eventdev/test_perf_common.h |   1 +
 app/test-eventdev/test_perf_queue.c  |  16 ++++-
 4 files changed, 120 insertions(+), 27 deletions(-)

diff --git a/app/test-eventdev/test_perf_atq.c b/app/test-eventdev/test_perf_atq.c
index 3aa12f56f..1fe16ed63 100644
--- a/app/test-eventdev/test_perf_atq.c
+++ b/app/test-eventdev/test_perf_atq.c
@@ -187,6 +187,7 @@ perf_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt)
 	uint8_t queue;
 	uint8_t nb_queues;
 	uint8_t nb_ports;
+	struct rte_event_dev_info dev_info;

 	nb_ports = evt_nr_active_lcores(opt->wlcores);
 	nb_ports += opt->prod_type == EVT_PROD_TYPE_ETH_RX_ADPTR ? 0 :
@@ -195,13 +196,22 @@ perf_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt)
 	nb_queues = opt->prod_type == EVT_PROD_TYPE_ETH_RX_ADPTR ?
 		rte_eth_dev_count() : atq_nb_event_queues(opt);

+	memset(&dev_info, 0, sizeof(struct rte_event_dev_info));
+	ret = rte_event_dev_info_get(opt->dev_id, &dev_info);
+	if (ret) {
+		evt_err("failed to get eventdev info %d", opt->dev_id);
+		return ret;
+	}
+
 	const struct rte_event_dev_config config = {
 			.nb_event_queues = nb_queues,
 			.nb_event_ports = nb_ports,
-			.nb_events_limit  = 4096,
+			.nb_events_limit  = dev_info.max_num_events,
 			.nb_event_queue_flows = opt->nb_flows,
-			.nb_event_port_dequeue_depth = 128,
-			.nb_event_port_enqueue_depth = 128,
+			.nb_event_port_dequeue_depth =
+				dev_info.max_event_port_dequeue_depth,
+			.nb_event_port_enqueue_depth =
+				dev_info.max_event_port_enqueue_depth,
 	};

 	ret = rte_event_dev_configure(opt->dev_id, &config);
@@ -225,8 +235,7 @@ perf_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt)
 		}
 	}

-	ret = perf_event_dev_port_setup(test, opt, 1 /* stride */,
-					nb_queues);
+	ret = perf_event_dev_port_setup(test, opt, 1 /* stride */, nb_queues);
 	if (ret)
 		return ret;

diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index 03be8171c..483103b11 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -231,19 +231,79 @@ perf_launch_lcores(struct evt_test *test, struct evt_options *opt,
 	return 0;
 }

+static int
+perf_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
+		struct rte_event_port_conf prod_conf)
+{
+	int ret = 0;
+	uint16_t prod;
+
+	struct rte_event_eth_rx_adapter_queue_conf queue_conf = {
+		.ev.event = 0,
+		.ev.sched_type = opt->sched_type_list[0],
+	};
+
+	for (prod = 0; prod < rte_eth_dev_count(); prod++) {
+		uint32_t cap;
+
+		ret = rte_event_eth_rx_adapter_caps_get(opt->dev_id,
+				prod, &cap);
+		if (ret) {
+			evt_err("failed to get event rx adapter[%d]"
+					" capabilities",
+					opt->dev_id);
+			return ret;
+		}
+		queue_conf.ev.queue_id = prod * stride;
+		ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
+				&prod_conf);
+		if (ret) {
+			evt_err("failed to create rx adapter[%d]", prod);
+			return ret;
+		}
+		ret = rte_event_eth_rx_adapter_queue_add(prod, prod, -1,
+				&queue_conf);
+		if (ret) {
+			evt_err("failed to add rx queues to adapter[%d]", prod);
+			return ret;
+		}
+
+		ret = rte_eth_dev_start(prod);
+		if (ret) {
+			evt_err("Ethernet dev [%d] failed to start."
+					" Using synthetic producer", prod);
+			return ret;
+		}
+
+		ret = rte_event_eth_rx_adapter_start(prod);
+		if (ret) {
+			evt_err("Rx adapter[%d] start failed", prod);
+			return ret;
+		}
+		printf("%s: Port[%d] using Rx adapter[%d] started\n", __func__,
+				prod, prod);
+	}
+
+	return ret;
+}
+
 int
 perf_event_dev_port_setup(struct evt_test *test, struct evt_options *opt,
 				uint8_t stride, uint8_t nb_queues)
 {
 	struct test_perf *t = evt_test_priv(test);
-	uint8_t port, prod;
+	uint16_t port, prod;
 	int ret = -1;
+	struct rte_event_port_conf port_conf;
+
+	memset(&port_conf, 0, sizeof(struct rte_event_port_conf));
+	rte_event_port_default_conf_get(opt->dev_id, 0, &port_conf);

 	/* port configuration */
 	const struct rte_event_port_conf wkr_p_conf = {
 			.dequeue_depth = opt->wkr_deq_dep,
-			.enqueue_depth = 64,
-			.new_event_threshold = 4096,
+			.enqueue_depth = port_conf.enqueue_depth,
+			.new_event_threshold = port_conf.new_event_threshold,
 	};

 	/* setup one port per worker, linking to all queues */
@@ -271,26 +331,38 @@ perf_event_dev_port_setup(struct evt_test *test, struct evt_options *opt,
 	}

 	/* port for producers, no links */
-	const struct rte_event_port_conf prod_conf = {
-			.dequeue_depth = 8,
-			.enqueue_depth = 32,
-			.new_event_threshold = 1200,
+	struct rte_event_port_conf prod_conf = {
+			.dequeue_depth = port_conf.dequeue_depth,
+			.enqueue_depth = port_conf.enqueue_depth,
+			.new_event_threshold = port_conf.new_event_threshold,
 	};
-	prod = 0;
-	for ( ; port < perf_nb_event_ports(opt); port++) {
-		struct prod_data *p = &t->prod[port];
-
-		p->dev_id = opt->dev_id;
-		p->port_id = port;
-		p->queue_id = prod * stride;
-		p->t = t;
+	if (opt->prod_type == EVT_PROD_TYPE_ETH_RX_ADPTR) {
+		for ( ; port < perf_nb_event_ports(opt); port++) {
+			struct prod_data *p = &t->prod[port];
+			p->t = t;
+		}

-		ret = rte_event_port_setup(opt->dev_id, port, &prod_conf);
-		if (ret) {
-			evt_err("failed to setup port %d", port);
+		ret = perf_event_rx_adapter_setup(opt, stride, prod_conf);
+		if (ret)
 			return ret;
+	} else {
+		prod = 0;
+		for ( ; port < perf_nb_event_ports(opt); port++) {
+			struct prod_data *p = &t->prod[port];
+
+			p->dev_id = opt->dev_id;
+			p->port_id = port;
+			p->queue_id = prod * stride;
+			p->t = t;
+
+			ret = rte_event_port_setup(opt->dev_id, port,
+					&prod_conf);
+			if (ret) {
+				evt_err("failed to setup port %d", port);
+				return ret;
+			}
+			prod++;
 		}
-		prod++;
 	}

 	return ret;
@@ -479,6 +551,7 @@ void perf_ethdev_destroy(struct evt_test *test, struct evt_options *opt)

 	if (opt->prod_type == EVT_PROD_TYPE_ETH_RX_ADPTR) {
 		for (i = 0; i < rte_eth_dev_count(); i++) {
+			rte_event_eth_rx_adapter_stop(i);
 			rte_eth_dev_stop(i);
 			rte_eth_dev_close(i);
 		}
diff --git a/app/test-eventdev/test_perf_common.h b/app/test-eventdev/test_perf_common.h
index f33365628..95a217495 100644
--- a/app/test-eventdev/test_perf_common.h
+++ b/app/test-eventdev/test_perf_common.h
@@ -40,6 +40,7 @@
 #include <rte_cycles.h>
 #include <rte_ethdev.h>
 #include <rte_eventdev.h>
+#include <rte_event_eth_rx_adapter.h>
 #include <rte_lcore.h>
 #include <rte_malloc.h>
 #include <rte_mempool.h>
diff --git a/app/test-eventdev/test_perf_queue.c b/app/test-eventdev/test_perf_queue.c
index d606878a1..e446c5437 100644
--- a/app/test-eventdev/test_perf_queue.c
+++ b/app/test-eventdev/test_perf_queue.c
@@ -184,6 +184,7 @@ perf_queue_eventdev_setup(struct evt_test *test, struct evt_options *opt)
 	int ret;
 	int nb_ports;
 	int nb_queues;
+	struct rte_event_dev_info dev_info;

 	nb_ports = evt_nr_active_lcores(opt->wlcores);
 	nb_ports += opt->prod_type == EVT_PROD_TYPE_ETH_RX_ADPTR ? 0 :
@@ -193,13 +194,22 @@ perf_queue_eventdev_setup(struct evt_test *test, struct evt_options *opt)
 		rte_eth_dev_count() * nb_stages :
 		perf_queue_nb_event_queues(opt);

+	memset(&dev_info, 0, sizeof(struct rte_event_dev_info));
+	ret = rte_event_dev_info_get(opt->dev_id, &dev_info);
+	if (ret) {
+		evt_err("failed to get eventdev info %d", opt->dev_id);
+		return ret;
+	}
+
 	const struct rte_event_dev_config config = {
 			.nb_event_queues = nb_queues,
 			.nb_event_ports = nb_ports,
-			.nb_events_limit  = 4096,
+			.nb_events_limit  = dev_info.max_num_events,
 			.nb_event_queue_flows = opt->nb_flows,
-			.nb_event_port_dequeue_depth = 128,
-			.nb_event_port_enqueue_depth = 128,
+			.nb_event_port_dequeue_depth =
+				dev_info.max_event_port_dequeue_depth,
+			.nb_event_port_enqueue_depth =
+				dev_info.max_event_port_enqueue_depth,
 	};

 	ret = rte_event_dev_configure(opt->dev_id, &config);
--
2.14.1