xref: /dpdk/app/test/test_eventdev.c (revision 6305afee038f47b64236069eeb4355d28ef8fec9)
1a9de470cSBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
2a9de470cSBruce Richardson  * Copyright(c) 2016 Cavium, Inc
3a9de470cSBruce Richardson  */
4a9de470cSBruce Richardson 
53c60274cSJie Zhou #include "test.h"
63c60274cSJie Zhou 
7a9de470cSBruce Richardson #include <rte_common.h>
8a9de470cSBruce Richardson #include <rte_hexdump.h>
9a9de470cSBruce Richardson #include <rte_mbuf.h>
10a9de470cSBruce Richardson #include <rte_malloc.h>
11a9de470cSBruce Richardson #include <rte_memcpy.h>
123c60274cSJie Zhou 
133c60274cSJie Zhou #ifdef RTE_EXEC_ENV_WINDOWS
143c60274cSJie Zhou static int
153c60274cSJie Zhou test_eventdev_common(void)
163c60274cSJie Zhou {
173c60274cSJie Zhou 	printf("eventdev_common not supported on Windows, skipping test\n");
183c60274cSJie Zhou 	return TEST_SKIPPED;
193c60274cSJie Zhou }
203c60274cSJie Zhou 
213c60274cSJie Zhou #else
223c60274cSJie Zhou 
23a9de470cSBruce Richardson #include <rte_eventdev.h>
24a9de470cSBruce Richardson #include <rte_dev.h>
25a9de470cSBruce Richardson #include <rte_bus_vdev.h>
26a9de470cSBruce Richardson 
27a9de470cSBruce Richardson #define TEST_DEV_ID   0
28a9de470cSBruce Richardson 
29a9de470cSBruce Richardson static int
30a9de470cSBruce Richardson testsuite_setup(void)
31a9de470cSBruce Richardson {
32a9de470cSBruce Richardson 	RTE_BUILD_BUG_ON(sizeof(struct rte_event) != 16);
33a9de470cSBruce Richardson 	uint8_t count;
34a9de470cSBruce Richardson 	count = rte_event_dev_count();
35a9de470cSBruce Richardson 	if (!count) {
36f1caf6ffSDavid Marchand 		int ret;
37f1caf6ffSDavid Marchand 
38a9de470cSBruce Richardson 		printf("Failed to find a valid event device,"
39f1caf6ffSDavid Marchand 			" trying with event_skeleton device\n");
40f1caf6ffSDavid Marchand 		ret = rte_vdev_init("event_skeleton", NULL);
41f1caf6ffSDavid Marchand 		if (ret != 0) {
42f1caf6ffSDavid Marchand 			printf("No event device, skipping\n");
43f1caf6ffSDavid Marchand 			return TEST_SKIPPED;
44f1caf6ffSDavid Marchand 		}
45a9de470cSBruce Richardson 	}
46a9de470cSBruce Richardson 	return TEST_SUCCESS;
47a9de470cSBruce Richardson }
48a9de470cSBruce Richardson 
49a9de470cSBruce Richardson static void
50a9de470cSBruce Richardson testsuite_teardown(void)
51a9de470cSBruce Richardson {
52a9de470cSBruce Richardson }
53a9de470cSBruce Richardson 
54a9de470cSBruce Richardson static int
55a9de470cSBruce Richardson test_eventdev_count(void)
56a9de470cSBruce Richardson {
57a9de470cSBruce Richardson 	uint8_t count;
58a9de470cSBruce Richardson 	count = rte_event_dev_count();
59a9de470cSBruce Richardson 	TEST_ASSERT(count > 0, "Invalid eventdev count %" PRIu8, count);
60a9de470cSBruce Richardson 	return TEST_SUCCESS;
61a9de470cSBruce Richardson }
62a9de470cSBruce Richardson 
63a9de470cSBruce Richardson static int
64a9de470cSBruce Richardson test_eventdev_get_dev_id(void)
65a9de470cSBruce Richardson {
66a9de470cSBruce Richardson 	int ret;
67a9de470cSBruce Richardson 	ret = rte_event_dev_get_dev_id("not_a_valid_eventdev_driver");
68a9de470cSBruce Richardson 	TEST_ASSERT_FAIL(ret, "Expected <0 for invalid dev name ret=%d", ret);
69a9de470cSBruce Richardson 	return TEST_SUCCESS;
70a9de470cSBruce Richardson }
71a9de470cSBruce Richardson 
72a9de470cSBruce Richardson static int
73a9de470cSBruce Richardson test_eventdev_socket_id(void)
74a9de470cSBruce Richardson {
75a9de470cSBruce Richardson 	int socket_id;
76a9de470cSBruce Richardson 	socket_id = rte_event_dev_socket_id(TEST_DEV_ID);
77a9de470cSBruce Richardson 	TEST_ASSERT(socket_id != -EINVAL, "Failed to get socket_id %d",
78a9de470cSBruce Richardson 				socket_id);
79a9de470cSBruce Richardson 	socket_id = rte_event_dev_socket_id(RTE_EVENT_MAX_DEVS);
80a9de470cSBruce Richardson 	TEST_ASSERT(socket_id == -EINVAL, "Expected -EINVAL %d", socket_id);
81a9de470cSBruce Richardson 
82a9de470cSBruce Richardson 	return TEST_SUCCESS;
83a9de470cSBruce Richardson }
84a9de470cSBruce Richardson 
85a9de470cSBruce Richardson static int
86a9de470cSBruce Richardson test_eventdev_info_get(void)
87a9de470cSBruce Richardson {
88a9de470cSBruce Richardson 	int ret;
89a9de470cSBruce Richardson 	struct rte_event_dev_info info;
90a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, NULL);
91a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
92a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
93a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
94a9de470cSBruce Richardson 	TEST_ASSERT(info.max_event_ports > 0,
95a9de470cSBruce Richardson 			"Not enough event ports %d", info.max_event_ports);
96a9de470cSBruce Richardson 	TEST_ASSERT(info.max_event_queues > 0,
97a9de470cSBruce Richardson 			"Not enough event queues %d", info.max_event_queues);
98a9de470cSBruce Richardson 	return TEST_SUCCESS;
99a9de470cSBruce Richardson }
100a9de470cSBruce Richardson 
101a9de470cSBruce Richardson static inline void
102a9de470cSBruce Richardson devconf_set_default_sane_values(struct rte_event_dev_config *dev_conf,
103a9de470cSBruce Richardson 			struct rte_event_dev_info *info)
104a9de470cSBruce Richardson {
105a9de470cSBruce Richardson 	memset(dev_conf, 0, sizeof(struct rte_event_dev_config));
106a9de470cSBruce Richardson 	dev_conf->dequeue_timeout_ns = info->min_dequeue_timeout_ns;
107a9de470cSBruce Richardson 	dev_conf->nb_event_ports = info->max_event_ports;
108a9de470cSBruce Richardson 	dev_conf->nb_event_queues = info->max_event_queues;
109a9de470cSBruce Richardson 	dev_conf->nb_event_queue_flows = info->max_event_queue_flows;
110a9de470cSBruce Richardson 	dev_conf->nb_event_port_dequeue_depth =
111a9de470cSBruce Richardson 			info->max_event_port_dequeue_depth;
112a9de470cSBruce Richardson 	dev_conf->nb_event_port_enqueue_depth =
113a9de470cSBruce Richardson 			info->max_event_port_enqueue_depth;
114a9de470cSBruce Richardson 	dev_conf->nb_event_port_enqueue_depth =
115a9de470cSBruce Richardson 			info->max_event_port_enqueue_depth;
116a9de470cSBruce Richardson 	dev_conf->nb_events_limit =
117a9de470cSBruce Richardson 			info->max_num_events;
118a9de470cSBruce Richardson }
119a9de470cSBruce Richardson 
120a9de470cSBruce Richardson static int
121a9de470cSBruce Richardson test_ethdev_config_run(struct rte_event_dev_config *dev_conf,
122a9de470cSBruce Richardson 		struct rte_event_dev_info *info,
123a9de470cSBruce Richardson 		void (*fn)(struct rte_event_dev_config *dev_conf,
124a9de470cSBruce Richardson 			struct rte_event_dev_info *info))
125a9de470cSBruce Richardson {
126a9de470cSBruce Richardson 	devconf_set_default_sane_values(dev_conf, info);
127a9de470cSBruce Richardson 	fn(dev_conf, info);
128a9de470cSBruce Richardson 	return rte_event_dev_configure(TEST_DEV_ID, dev_conf);
129a9de470cSBruce Richardson }
130a9de470cSBruce Richardson 
131a9de470cSBruce Richardson static void
132a9de470cSBruce Richardson max_dequeue_limit(struct rte_event_dev_config *dev_conf,
133a9de470cSBruce Richardson 		  struct rte_event_dev_info *info)
134a9de470cSBruce Richardson {
135a9de470cSBruce Richardson 	dev_conf->dequeue_timeout_ns = info->max_dequeue_timeout_ns + 1;
136a9de470cSBruce Richardson }
137a9de470cSBruce Richardson 
138a9de470cSBruce Richardson static void
139a9de470cSBruce Richardson max_events_limit(struct rte_event_dev_config *dev_conf,
140a9de470cSBruce Richardson 		  struct rte_event_dev_info *info)
141a9de470cSBruce Richardson {
142a9de470cSBruce Richardson 	dev_conf->nb_events_limit  = info->max_num_events + 1;
143a9de470cSBruce Richardson }
144a9de470cSBruce Richardson 
145a9de470cSBruce Richardson static void
146a9de470cSBruce Richardson max_event_ports(struct rte_event_dev_config *dev_conf,
147a9de470cSBruce Richardson 		  struct rte_event_dev_info *info)
148a9de470cSBruce Richardson {
149a9de470cSBruce Richardson 	dev_conf->nb_event_ports = info->max_event_ports + 1;
150a9de470cSBruce Richardson }
151a9de470cSBruce Richardson 
152a9de470cSBruce Richardson static void
153a9de470cSBruce Richardson max_event_queues(struct rte_event_dev_config *dev_conf,
154a9de470cSBruce Richardson 		  struct rte_event_dev_info *info)
155a9de470cSBruce Richardson {
156a9de470cSBruce Richardson 	dev_conf->nb_event_queues = info->max_event_queues + 1;
157a9de470cSBruce Richardson }
158a9de470cSBruce Richardson 
159a9de470cSBruce Richardson static void
160a9de470cSBruce Richardson max_event_queue_flows(struct rte_event_dev_config *dev_conf,
161a9de470cSBruce Richardson 		  struct rte_event_dev_info *info)
162a9de470cSBruce Richardson {
163a9de470cSBruce Richardson 	dev_conf->nb_event_queue_flows = info->max_event_queue_flows + 1;
164a9de470cSBruce Richardson }
165a9de470cSBruce Richardson 
166a9de470cSBruce Richardson static void
167a9de470cSBruce Richardson max_event_port_dequeue_depth(struct rte_event_dev_config *dev_conf,
168a9de470cSBruce Richardson 		  struct rte_event_dev_info *info)
169a9de470cSBruce Richardson {
170a9de470cSBruce Richardson 	dev_conf->nb_event_port_dequeue_depth =
171a9de470cSBruce Richardson 		info->max_event_port_dequeue_depth + 1;
172a9de470cSBruce Richardson }
173a9de470cSBruce Richardson 
174a9de470cSBruce Richardson static void
175a9de470cSBruce Richardson max_event_port_enqueue_depth(struct rte_event_dev_config *dev_conf,
176a9de470cSBruce Richardson 		  struct rte_event_dev_info *info)
177a9de470cSBruce Richardson {
178a9de470cSBruce Richardson 	dev_conf->nb_event_port_enqueue_depth =
179a9de470cSBruce Richardson 		info->max_event_port_enqueue_depth + 1;
180a9de470cSBruce Richardson }
181a9de470cSBruce Richardson 
182a9de470cSBruce Richardson 
183a9de470cSBruce Richardson static int
184a9de470cSBruce Richardson test_eventdev_configure(void)
185a9de470cSBruce Richardson {
186a9de470cSBruce Richardson 	int ret;
187a9de470cSBruce Richardson 	struct rte_event_dev_config dev_conf;
188a9de470cSBruce Richardson 	struct rte_event_dev_info info;
189a9de470cSBruce Richardson 	ret = rte_event_dev_configure(TEST_DEV_ID, NULL);
190a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
191a9de470cSBruce Richardson 
192a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
193a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
194a9de470cSBruce Richardson 
195a9de470cSBruce Richardson 	/* Check limits */
196a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(-EINVAL,
197a9de470cSBruce Richardson 		test_ethdev_config_run(&dev_conf, &info, max_dequeue_limit),
198a9de470cSBruce Richardson 		 "Config negative test failed");
199a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(-EINVAL,
200a9de470cSBruce Richardson 		test_ethdev_config_run(&dev_conf, &info, max_events_limit),
201a9de470cSBruce Richardson 		 "Config negative test failed");
202a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(-EINVAL,
203a9de470cSBruce Richardson 		test_ethdev_config_run(&dev_conf, &info, max_event_ports),
204a9de470cSBruce Richardson 		 "Config negative test failed");
205a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(-EINVAL,
206a9de470cSBruce Richardson 		test_ethdev_config_run(&dev_conf, &info, max_event_queues),
207a9de470cSBruce Richardson 		 "Config negative test failed");
208a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(-EINVAL,
209a9de470cSBruce Richardson 		test_ethdev_config_run(&dev_conf, &info, max_event_queue_flows),
210a9de470cSBruce Richardson 		"Config negative test failed");
211a9de470cSBruce Richardson 
212a9de470cSBruce Richardson 	if (info.event_dev_cap & RTE_EVENT_DEV_CAP_BURST_MODE) {
213a9de470cSBruce Richardson 		TEST_ASSERT_EQUAL(-EINVAL,
214a9de470cSBruce Richardson 				test_ethdev_config_run(&dev_conf, &info,
215a9de470cSBruce Richardson 					max_event_port_dequeue_depth),
216a9de470cSBruce Richardson 				"Config negative test failed");
217a9de470cSBruce Richardson 		TEST_ASSERT_EQUAL(-EINVAL,
218a9de470cSBruce Richardson 				test_ethdev_config_run(&dev_conf, &info,
219a9de470cSBruce Richardson 					max_event_port_enqueue_depth),
220a9de470cSBruce Richardson 				"Config negative test failed");
221a9de470cSBruce Richardson 	}
222a9de470cSBruce Richardson 
223a9de470cSBruce Richardson 	/* Positive case */
224a9de470cSBruce Richardson 	devconf_set_default_sane_values(&dev_conf, &info);
225a9de470cSBruce Richardson 	ret = rte_event_dev_configure(TEST_DEV_ID, &dev_conf);
226a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to configure eventdev");
227a9de470cSBruce Richardson 
228a9de470cSBruce Richardson 	/* re-configure */
229a9de470cSBruce Richardson 	devconf_set_default_sane_values(&dev_conf, &info);
230a9de470cSBruce Richardson 	dev_conf.nb_event_ports = RTE_MAX(info.max_event_ports/2, 1);
231a9de470cSBruce Richardson 	dev_conf.nb_event_queues = RTE_MAX(info.max_event_queues/2, 1);
232a9de470cSBruce Richardson 	ret = rte_event_dev_configure(TEST_DEV_ID, &dev_conf);
233a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to re configure eventdev");
234a9de470cSBruce Richardson 
235a9de470cSBruce Richardson 	/* re-configure back to max_event_queues and max_event_ports */
236a9de470cSBruce Richardson 	devconf_set_default_sane_values(&dev_conf, &info);
237a9de470cSBruce Richardson 	ret = rte_event_dev_configure(TEST_DEV_ID, &dev_conf);
238a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to re-configure eventdev");
239a9de470cSBruce Richardson 
240a9de470cSBruce Richardson 	return TEST_SUCCESS;
241a9de470cSBruce Richardson 
242a9de470cSBruce Richardson }
243a9de470cSBruce Richardson 
244a9de470cSBruce Richardson static int
245a9de470cSBruce Richardson eventdev_configure_setup(void)
246a9de470cSBruce Richardson {
247a9de470cSBruce Richardson 	int ret;
248a9de470cSBruce Richardson 	struct rte_event_dev_config dev_conf;
249a9de470cSBruce Richardson 	struct rte_event_dev_info info;
250a9de470cSBruce Richardson 
251a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
252a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
253a9de470cSBruce Richardson 	devconf_set_default_sane_values(&dev_conf, &info);
254a9de470cSBruce Richardson 	ret = rte_event_dev_configure(TEST_DEV_ID, &dev_conf);
255a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to configure eventdev");
256a9de470cSBruce Richardson 
257a9de470cSBruce Richardson 	return TEST_SUCCESS;
258a9de470cSBruce Richardson }
259a9de470cSBruce Richardson 
260a9de470cSBruce Richardson static int
261a9de470cSBruce Richardson test_eventdev_queue_default_conf_get(void)
262a9de470cSBruce Richardson {
263a9de470cSBruce Richardson 	int i, ret;
264a9de470cSBruce Richardson 	struct rte_event_queue_conf qconf;
265a9de470cSBruce Richardson 
266a9de470cSBruce Richardson 	ret = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, NULL);
267a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
268a9de470cSBruce Richardson 
269a9de470cSBruce Richardson 	uint32_t queue_count;
270a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
271a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
272a9de470cSBruce Richardson 			    "Queue count get failed");
273a9de470cSBruce Richardson 
274a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
275a9de470cSBruce Richardson 		ret = rte_event_queue_default_conf_get(TEST_DEV_ID, i,
276a9de470cSBruce Richardson 						 &qconf);
277a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to get queue%d info", i);
278a9de470cSBruce Richardson 	}
279a9de470cSBruce Richardson 
280a9de470cSBruce Richardson 	return TEST_SUCCESS;
281a9de470cSBruce Richardson }
282a9de470cSBruce Richardson 
283a9de470cSBruce Richardson static int
284a9de470cSBruce Richardson test_eventdev_queue_setup(void)
285a9de470cSBruce Richardson {
286a9de470cSBruce Richardson 	int i, ret;
287a9de470cSBruce Richardson 	struct rte_event_dev_info info;
288a9de470cSBruce Richardson 	struct rte_event_queue_conf qconf;
289a9de470cSBruce Richardson 
290a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
291a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
292a9de470cSBruce Richardson 
293a9de470cSBruce Richardson 	/* Negative cases */
294a9de470cSBruce Richardson 	ret = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, &qconf);
295a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get queue0 info");
296a9de470cSBruce Richardson 	qconf.event_queue_cfg =	RTE_EVENT_QUEUE_CFG_ALL_TYPES;
297a9de470cSBruce Richardson 	qconf.nb_atomic_flows = info.max_event_queue_flows + 1;
298a9de470cSBruce Richardson 	ret = rte_event_queue_setup(TEST_DEV_ID, 0, &qconf);
299a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
300a9de470cSBruce Richardson 
301a9de470cSBruce Richardson 	qconf.nb_atomic_flows = info.max_event_queue_flows;
302a9de470cSBruce Richardson 	qconf.schedule_type = RTE_SCHED_TYPE_ORDERED;
303a9de470cSBruce Richardson 	qconf.nb_atomic_order_sequences = info.max_event_queue_flows + 1;
304a9de470cSBruce Richardson 	ret = rte_event_queue_setup(TEST_DEV_ID, 0, &qconf);
305a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
306a9de470cSBruce Richardson 
307a9de470cSBruce Richardson 	ret = rte_event_queue_setup(TEST_DEV_ID, info.max_event_queues,
308a9de470cSBruce Richardson 					&qconf);
309a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
310a9de470cSBruce Richardson 
311a9de470cSBruce Richardson 	/* Positive case */
312a9de470cSBruce Richardson 	ret = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, &qconf);
313a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get queue0 info");
314a9de470cSBruce Richardson 	ret = rte_event_queue_setup(TEST_DEV_ID, 0, &qconf);
315a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to setup queue0");
316a9de470cSBruce Richardson 
317a9de470cSBruce Richardson 	uint32_t queue_count;
318a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
319a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
320a9de470cSBruce Richardson 			    "Queue count get failed");
321a9de470cSBruce Richardson 
3225c52220aSBruce Richardson 	for (i = 1; i < (int)queue_count; i++) {
323a9de470cSBruce Richardson 		ret = rte_event_queue_setup(TEST_DEV_ID, i, NULL);
324a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
325a9de470cSBruce Richardson 	}
326a9de470cSBruce Richardson 
327a9de470cSBruce Richardson 	return TEST_SUCCESS;
328a9de470cSBruce Richardson }
329a9de470cSBruce Richardson 
330a9de470cSBruce Richardson static int
331a9de470cSBruce Richardson test_eventdev_queue_count(void)
332a9de470cSBruce Richardson {
333a9de470cSBruce Richardson 	int ret;
334a9de470cSBruce Richardson 	struct rte_event_dev_info info;
335a9de470cSBruce Richardson 
336a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
337a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
338a9de470cSBruce Richardson 
339a9de470cSBruce Richardson 	uint32_t queue_count;
340a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
341a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
342a9de470cSBruce Richardson 			    "Queue count get failed");
343a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(queue_count, info.max_event_queues,
344a9de470cSBruce Richardson 			  "Wrong queue count");
345a9de470cSBruce Richardson 
346a9de470cSBruce Richardson 	return TEST_SUCCESS;
347a9de470cSBruce Richardson }
348a9de470cSBruce Richardson 
349a9de470cSBruce Richardson static int
350a9de470cSBruce Richardson test_eventdev_queue_attr_priority(void)
351a9de470cSBruce Richardson {
352a9de470cSBruce Richardson 	int i, ret;
353a9de470cSBruce Richardson 	struct rte_event_dev_info info;
354a9de470cSBruce Richardson 	struct rte_event_queue_conf qconf;
355a9de470cSBruce Richardson 	uint8_t priority;
356a9de470cSBruce Richardson 
357a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
358a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
359a9de470cSBruce Richardson 
360a9de470cSBruce Richardson 	uint32_t queue_count;
361a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
362a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
363a9de470cSBruce Richardson 			    "Queue count get failed");
364a9de470cSBruce Richardson 
365a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
366a9de470cSBruce Richardson 		ret = rte_event_queue_default_conf_get(TEST_DEV_ID, i,
367a9de470cSBruce Richardson 					&qconf);
368a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to get queue%d def conf", i);
369a9de470cSBruce Richardson 		qconf.priority = i %  RTE_EVENT_DEV_PRIORITY_LOWEST;
370a9de470cSBruce Richardson 		ret = rte_event_queue_setup(TEST_DEV_ID, i, &qconf);
371a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
372a9de470cSBruce Richardson 	}
373a9de470cSBruce Richardson 
374a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
375a9de470cSBruce Richardson 		uint32_t tmp;
376a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(rte_event_queue_attr_get(TEST_DEV_ID, i,
377a9de470cSBruce Richardson 				    RTE_EVENT_QUEUE_ATTR_PRIORITY, &tmp),
378a9de470cSBruce Richardson 				    "Queue priority get failed");
379a9de470cSBruce Richardson 		priority = tmp;
380a9de470cSBruce Richardson 
381a9de470cSBruce Richardson 		if (info.event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_QOS)
382a9de470cSBruce Richardson 			TEST_ASSERT_EQUAL(priority,
383a9de470cSBruce Richardson 			 i %  RTE_EVENT_DEV_PRIORITY_LOWEST,
384a9de470cSBruce Richardson 			 "Wrong priority value for queue%d", i);
385a9de470cSBruce Richardson 		else
386a9de470cSBruce Richardson 			TEST_ASSERT_EQUAL(priority,
387a9de470cSBruce Richardson 			 RTE_EVENT_DEV_PRIORITY_NORMAL,
388a9de470cSBruce Richardson 			 "Wrong priority value for queue%d", i);
389a9de470cSBruce Richardson 	}
390a9de470cSBruce Richardson 
391a9de470cSBruce Richardson 	return TEST_SUCCESS;
392a9de470cSBruce Richardson }
393a9de470cSBruce Richardson 
394a9de470cSBruce Richardson static int
395deb450c4SShijith Thotton test_eventdev_queue_attr_priority_runtime(void)
396deb450c4SShijith Thotton {
397deb450c4SShijith Thotton 	uint32_t queue_count, queue_req, prio, deq_cnt;
398deb450c4SShijith Thotton 	struct rte_event_queue_conf qconf;
399deb450c4SShijith Thotton 	struct rte_event_port_conf pconf;
400deb450c4SShijith Thotton 	struct rte_event_dev_info info;
401deb450c4SShijith Thotton 	struct rte_event event = {
402deb450c4SShijith Thotton 		.op = RTE_EVENT_OP_NEW,
403deb450c4SShijith Thotton 		.event_type = RTE_EVENT_TYPE_CPU,
404deb450c4SShijith Thotton 		.sched_type = RTE_SCHED_TYPE_ATOMIC,
405deb450c4SShijith Thotton 		.u64 = 0xbadbadba,
406deb450c4SShijith Thotton 	};
407deb450c4SShijith Thotton 	int i, ret;
408deb450c4SShijith Thotton 
409deb450c4SShijith Thotton 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
410deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
411deb450c4SShijith Thotton 
412deb450c4SShijith Thotton 	if (!(info.event_dev_cap & RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR))
413deb450c4SShijith Thotton 		return TEST_SKIPPED;
414deb450c4SShijith Thotton 
415deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(
416deb450c4SShijith Thotton 				    TEST_DEV_ID, RTE_EVENT_DEV_ATTR_QUEUE_COUNT,
417deb450c4SShijith Thotton 				    &queue_count),
418deb450c4SShijith Thotton 			    "Queue count get failed");
419deb450c4SShijith Thotton 
420deb450c4SShijith Thotton 	/* Need at least 2 queues to test LOW and HIGH priority. */
421deb450c4SShijith Thotton 	TEST_ASSERT(queue_count > 1, "Not enough event queues, needed 2");
422deb450c4SShijith Thotton 	queue_req = 2;
423deb450c4SShijith Thotton 
424deb450c4SShijith Thotton 	for (i = 0; i < (int)queue_count; i++) {
425deb450c4SShijith Thotton 		ret = rte_event_queue_default_conf_get(TEST_DEV_ID, i, &qconf);
426deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Failed to get queue%d def conf", i);
427deb450c4SShijith Thotton 		ret = rte_event_queue_setup(TEST_DEV_ID, i, &qconf);
428deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
429deb450c4SShijith Thotton 	}
430deb450c4SShijith Thotton 
431deb450c4SShijith Thotton 	ret = rte_event_queue_attr_set(TEST_DEV_ID, 0,
432deb450c4SShijith Thotton 				       RTE_EVENT_QUEUE_ATTR_PRIORITY,
433deb450c4SShijith Thotton 				       RTE_EVENT_DEV_PRIORITY_LOWEST);
434deb450c4SShijith Thotton 	if (ret == -ENOTSUP)
435deb450c4SShijith Thotton 		return TEST_SKIPPED;
436deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Queue0 priority set failed");
437deb450c4SShijith Thotton 
438deb450c4SShijith Thotton 	ret = rte_event_queue_attr_set(TEST_DEV_ID, 1,
439deb450c4SShijith Thotton 				       RTE_EVENT_QUEUE_ATTR_PRIORITY,
440deb450c4SShijith Thotton 				       RTE_EVENT_DEV_PRIORITY_HIGHEST);
441deb450c4SShijith Thotton 	if (ret == -ENOTSUP)
442deb450c4SShijith Thotton 		return TEST_SKIPPED;
443deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Queue1 priority set failed");
444deb450c4SShijith Thotton 
445deb450c4SShijith Thotton 	/* Setup event port 0 */
446deb450c4SShijith Thotton 	ret = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pconf);
447deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Failed to get port0 info");
448deb450c4SShijith Thotton 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
449deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Failed to setup port0");
450deb450c4SShijith Thotton 	ret = rte_event_port_link(TEST_DEV_ID, 0, NULL, NULL, 0);
451deb450c4SShijith Thotton 	TEST_ASSERT(ret == (int)queue_count, "Failed to link port, device %d",
452deb450c4SShijith Thotton 		    TEST_DEV_ID);
453deb450c4SShijith Thotton 
454deb450c4SShijith Thotton 	ret = rte_event_dev_start(TEST_DEV_ID);
455deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Failed to start device%d", TEST_DEV_ID);
456deb450c4SShijith Thotton 
457deb450c4SShijith Thotton 	for (i = 0; i < (int)queue_req; i++) {
458deb450c4SShijith Thotton 		event.queue_id = i;
459deb450c4SShijith Thotton 		while (rte_event_enqueue_burst(TEST_DEV_ID, 0, &event, 1) != 1)
460deb450c4SShijith Thotton 			rte_pause();
461deb450c4SShijith Thotton 	}
462deb450c4SShijith Thotton 
463deb450c4SShijith Thotton 	prio = RTE_EVENT_DEV_PRIORITY_HIGHEST;
464deb450c4SShijith Thotton 	deq_cnt = 0;
465deb450c4SShijith Thotton 	while (deq_cnt < queue_req) {
466deb450c4SShijith Thotton 		uint32_t queue_prio;
467deb450c4SShijith Thotton 
468deb450c4SShijith Thotton 		if (rte_event_dequeue_burst(TEST_DEV_ID, 0, &event, 1, 0) == 0)
469deb450c4SShijith Thotton 			continue;
470deb450c4SShijith Thotton 
471deb450c4SShijith Thotton 		ret = rte_event_queue_attr_get(TEST_DEV_ID, event.queue_id,
472deb450c4SShijith Thotton 					       RTE_EVENT_QUEUE_ATTR_PRIORITY,
473deb450c4SShijith Thotton 					       &queue_prio);
474deb450c4SShijith Thotton 		if (ret == -ENOTSUP)
475deb450c4SShijith Thotton 			return TEST_SKIPPED;
476deb450c4SShijith Thotton 
477deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Queue priority get failed");
478deb450c4SShijith Thotton 		TEST_ASSERT(queue_prio >= prio,
479deb450c4SShijith Thotton 			    "Received event from a lower priority queue first");
480deb450c4SShijith Thotton 		prio = queue_prio;
481deb450c4SShijith Thotton 		deq_cnt++;
482deb450c4SShijith Thotton 	}
483deb450c4SShijith Thotton 
484deb450c4SShijith Thotton 	return TEST_SUCCESS;
485deb450c4SShijith Thotton }
486deb450c4SShijith Thotton 
487deb450c4SShijith Thotton static int
488deb450c4SShijith Thotton test_eventdev_queue_attr_weight_runtime(void)
489deb450c4SShijith Thotton {
490deb450c4SShijith Thotton 	struct rte_event_queue_conf qconf;
491deb450c4SShijith Thotton 	struct rte_event_dev_info info;
492deb450c4SShijith Thotton 	uint32_t queue_count;
493deb450c4SShijith Thotton 	int i, ret;
494deb450c4SShijith Thotton 
495deb450c4SShijith Thotton 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
496deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
497deb450c4SShijith Thotton 
498deb450c4SShijith Thotton 	if (!(info.event_dev_cap & RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR))
499deb450c4SShijith Thotton 		return TEST_SKIPPED;
500deb450c4SShijith Thotton 
501deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(
502deb450c4SShijith Thotton 				    TEST_DEV_ID, RTE_EVENT_DEV_ATTR_QUEUE_COUNT,
503deb450c4SShijith Thotton 				    &queue_count),
504deb450c4SShijith Thotton 			    "Queue count get failed");
505deb450c4SShijith Thotton 
506deb450c4SShijith Thotton 	for (i = 0; i < (int)queue_count; i++) {
507deb450c4SShijith Thotton 		ret = rte_event_queue_default_conf_get(TEST_DEV_ID, i, &qconf);
508deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Failed to get queue%d def conf", i);
509deb450c4SShijith Thotton 		ret = rte_event_queue_setup(TEST_DEV_ID, i, &qconf);
510deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
511deb450c4SShijith Thotton 	}
512deb450c4SShijith Thotton 
513deb450c4SShijith Thotton 	for (i = 0; i < (int)queue_count; i++) {
514deb450c4SShijith Thotton 		uint32_t get_val;
515deb450c4SShijith Thotton 		uint64_t set_val;
516deb450c4SShijith Thotton 
517deb450c4SShijith Thotton 		set_val = i % RTE_EVENT_QUEUE_WEIGHT_HIGHEST;
518deb450c4SShijith Thotton 		ret = rte_event_queue_attr_set(
519deb450c4SShijith Thotton 			TEST_DEV_ID, i, RTE_EVENT_QUEUE_ATTR_WEIGHT, set_val);
520deb450c4SShijith Thotton 		if (ret == -ENOTSUP)
521deb450c4SShijith Thotton 			return TEST_SKIPPED;
522deb450c4SShijith Thotton 
523deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Queue weight set failed");
524deb450c4SShijith Thotton 
525deb450c4SShijith Thotton 		ret = rte_event_queue_attr_get(
526deb450c4SShijith Thotton 			TEST_DEV_ID, i, RTE_EVENT_QUEUE_ATTR_WEIGHT, &get_val);
527deb450c4SShijith Thotton 		if (ret == -ENOTSUP)
528deb450c4SShijith Thotton 			return TEST_SKIPPED;
529deb450c4SShijith Thotton 
530deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Queue weight get failed");
531deb450c4SShijith Thotton 		TEST_ASSERT_EQUAL(get_val, set_val,
532deb450c4SShijith Thotton 				  "Wrong weight value for queue%d", i);
533deb450c4SShijith Thotton 	}
534deb450c4SShijith Thotton 
535deb450c4SShijith Thotton 	return TEST_SUCCESS;
536deb450c4SShijith Thotton }
537deb450c4SShijith Thotton 
538deb450c4SShijith Thotton static int
539deb450c4SShijith Thotton test_eventdev_queue_attr_affinity_runtime(void)
540deb450c4SShijith Thotton {
541deb450c4SShijith Thotton 	struct rte_event_queue_conf qconf;
542deb450c4SShijith Thotton 	struct rte_event_dev_info info;
543deb450c4SShijith Thotton 	uint32_t queue_count;
544deb450c4SShijith Thotton 	int i, ret;
545deb450c4SShijith Thotton 
546deb450c4SShijith Thotton 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
547deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
548deb450c4SShijith Thotton 
549deb450c4SShijith Thotton 	if (!(info.event_dev_cap & RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR))
550deb450c4SShijith Thotton 		return TEST_SKIPPED;
551deb450c4SShijith Thotton 
552deb450c4SShijith Thotton 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(
553deb450c4SShijith Thotton 				    TEST_DEV_ID, RTE_EVENT_DEV_ATTR_QUEUE_COUNT,
554deb450c4SShijith Thotton 				    &queue_count),
555deb450c4SShijith Thotton 			    "Queue count get failed");
556deb450c4SShijith Thotton 
557deb450c4SShijith Thotton 	for (i = 0; i < (int)queue_count; i++) {
558deb450c4SShijith Thotton 		ret = rte_event_queue_default_conf_get(TEST_DEV_ID, i, &qconf);
559deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Failed to get queue%d def conf", i);
560deb450c4SShijith Thotton 		ret = rte_event_queue_setup(TEST_DEV_ID, i, &qconf);
561deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
562deb450c4SShijith Thotton 	}
563deb450c4SShijith Thotton 
564deb450c4SShijith Thotton 	for (i = 0; i < (int)queue_count; i++) {
565deb450c4SShijith Thotton 		uint32_t get_val;
566deb450c4SShijith Thotton 		uint64_t set_val;
567deb450c4SShijith Thotton 
568deb450c4SShijith Thotton 		set_val = i % RTE_EVENT_QUEUE_AFFINITY_HIGHEST;
569deb450c4SShijith Thotton 		ret = rte_event_queue_attr_set(
570deb450c4SShijith Thotton 			TEST_DEV_ID, i, RTE_EVENT_QUEUE_ATTR_AFFINITY, set_val);
571deb450c4SShijith Thotton 		if (ret == -ENOTSUP)
572deb450c4SShijith Thotton 			return TEST_SKIPPED;
573deb450c4SShijith Thotton 
574deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Queue affinity set failed");
575deb450c4SShijith Thotton 
576deb450c4SShijith Thotton 		ret = rte_event_queue_attr_get(
577deb450c4SShijith Thotton 			TEST_DEV_ID, i, RTE_EVENT_QUEUE_ATTR_AFFINITY, &get_val);
578deb450c4SShijith Thotton 		if (ret == -ENOTSUP)
579deb450c4SShijith Thotton 			return TEST_SKIPPED;
580deb450c4SShijith Thotton 
581deb450c4SShijith Thotton 		TEST_ASSERT_SUCCESS(ret, "Queue affinity get failed");
582deb450c4SShijith Thotton 		TEST_ASSERT_EQUAL(get_val, set_val,
583deb450c4SShijith Thotton 				  "Wrong affinity value for queue%d", i);
584deb450c4SShijith Thotton 	}
585deb450c4SShijith Thotton 
586deb450c4SShijith Thotton 	return TEST_SUCCESS;
587deb450c4SShijith Thotton }
588deb450c4SShijith Thotton 
589deb450c4SShijith Thotton static int
590a9de470cSBruce Richardson test_eventdev_queue_attr_nb_atomic_flows(void)
591a9de470cSBruce Richardson {
592a9de470cSBruce Richardson 	int i, ret;
593a9de470cSBruce Richardson 	struct rte_event_dev_info info;
594a9de470cSBruce Richardson 	struct rte_event_queue_conf qconf;
595a9de470cSBruce Richardson 	uint32_t nb_atomic_flows;
596a9de470cSBruce Richardson 
597a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
598a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
599a9de470cSBruce Richardson 
600a9de470cSBruce Richardson 	uint32_t queue_count;
601a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
602a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
603a9de470cSBruce Richardson 			    "Queue count get failed");
604a9de470cSBruce Richardson 
605a9de470cSBruce Richardson 	ret = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, &qconf);
606a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get queue 0's def conf");
607a9de470cSBruce Richardson 
608a9de470cSBruce Richardson 	if (qconf.nb_atomic_flows == 0)
609a9de470cSBruce Richardson 		/* Assume PMD doesn't support atomic flows, return early */
610a9de470cSBruce Richardson 		return -ENOTSUP;
611a9de470cSBruce Richardson 
612a9de470cSBruce Richardson 	qconf.schedule_type = RTE_SCHED_TYPE_ATOMIC;
613a9de470cSBruce Richardson 
614a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
615a9de470cSBruce Richardson 		ret = rte_event_queue_setup(TEST_DEV_ID, i, &qconf);
616a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
617a9de470cSBruce Richardson 	}
618a9de470cSBruce Richardson 
619a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
620a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(rte_event_queue_attr_get(TEST_DEV_ID, i,
621a9de470cSBruce Richardson 				    RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_FLOWS,
622a9de470cSBruce Richardson 				    &nb_atomic_flows),
623a9de470cSBruce Richardson 				    "Queue nb_atomic_flows get failed");
624a9de470cSBruce Richardson 
625a9de470cSBruce Richardson 		TEST_ASSERT_EQUAL(nb_atomic_flows, qconf.nb_atomic_flows,
626a9de470cSBruce Richardson 				  "Wrong atomic flows value for queue%d", i);
627a9de470cSBruce Richardson 	}
628a9de470cSBruce Richardson 
629a9de470cSBruce Richardson 	return TEST_SUCCESS;
630a9de470cSBruce Richardson }
631a9de470cSBruce Richardson 
632a9de470cSBruce Richardson static int
633a9de470cSBruce Richardson test_eventdev_queue_attr_nb_atomic_order_sequences(void)
634a9de470cSBruce Richardson {
635a9de470cSBruce Richardson 	int i, ret;
636a9de470cSBruce Richardson 	struct rte_event_dev_info info;
637a9de470cSBruce Richardson 	struct rte_event_queue_conf qconf;
638a9de470cSBruce Richardson 	uint32_t nb_atomic_order_sequences;
639a9de470cSBruce Richardson 
640a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
641a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
642a9de470cSBruce Richardson 
643a9de470cSBruce Richardson 	uint32_t queue_count;
644a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
645a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
646a9de470cSBruce Richardson 			    "Queue count get failed");
647a9de470cSBruce Richardson 
648a9de470cSBruce Richardson 	ret = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, &qconf);
649a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get queue 0's def conf");
650a9de470cSBruce Richardson 
651a9de470cSBruce Richardson 	if (qconf.nb_atomic_order_sequences == 0)
652a9de470cSBruce Richardson 		/* Assume PMD doesn't support reordering */
653a9de470cSBruce Richardson 		return -ENOTSUP;
654a9de470cSBruce Richardson 
655a9de470cSBruce Richardson 	qconf.schedule_type = RTE_SCHED_TYPE_ORDERED;
656a9de470cSBruce Richardson 
657a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
658a9de470cSBruce Richardson 		ret = rte_event_queue_setup(TEST_DEV_ID, i, &qconf);
659a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
660a9de470cSBruce Richardson 	}
661a9de470cSBruce Richardson 
662a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
663a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(rte_event_queue_attr_get(TEST_DEV_ID, i,
664a9de470cSBruce Richardson 			    RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_ORDER_SEQUENCES,
665a9de470cSBruce Richardson 			    &nb_atomic_order_sequences),
666a9de470cSBruce Richardson 			    "Queue nb_atomic_order_sequencess get failed");
667a9de470cSBruce Richardson 
668a9de470cSBruce Richardson 		TEST_ASSERT_EQUAL(nb_atomic_order_sequences,
669a9de470cSBruce Richardson 				  qconf.nb_atomic_order_sequences,
670a9de470cSBruce Richardson 				  "Wrong atomic order sequences value for queue%d",
671a9de470cSBruce Richardson 				  i);
672a9de470cSBruce Richardson 	}
673a9de470cSBruce Richardson 
674a9de470cSBruce Richardson 	return TEST_SUCCESS;
675a9de470cSBruce Richardson }
676a9de470cSBruce Richardson 
677a9de470cSBruce Richardson static int
678a9de470cSBruce Richardson test_eventdev_queue_attr_event_queue_cfg(void)
679a9de470cSBruce Richardson {
680a9de470cSBruce Richardson 	int i, ret;
681a9de470cSBruce Richardson 	struct rte_event_dev_info info;
682a9de470cSBruce Richardson 	struct rte_event_queue_conf qconf;
683a9de470cSBruce Richardson 	uint32_t event_queue_cfg;
684a9de470cSBruce Richardson 
685a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
686a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
687a9de470cSBruce Richardson 
688a9de470cSBruce Richardson 	uint32_t queue_count;
689a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
690a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
691a9de470cSBruce Richardson 			    "Queue count get failed");
692a9de470cSBruce Richardson 
693a9de470cSBruce Richardson 	ret = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, &qconf);
694a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get queue0 def conf");
695a9de470cSBruce Richardson 
696a9de470cSBruce Richardson 	qconf.event_queue_cfg = RTE_EVENT_QUEUE_CFG_SINGLE_LINK;
697a9de470cSBruce Richardson 
698a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
699a9de470cSBruce Richardson 		ret = rte_event_queue_setup(TEST_DEV_ID, i, &qconf);
700a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
701a9de470cSBruce Richardson 	}
702a9de470cSBruce Richardson 
703a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
704a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(rte_event_queue_attr_get(TEST_DEV_ID, i,
705a9de470cSBruce Richardson 				    RTE_EVENT_QUEUE_ATTR_EVENT_QUEUE_CFG,
706a9de470cSBruce Richardson 				    &event_queue_cfg),
707a9de470cSBruce Richardson 				    "Queue event_queue_cfg get failed");
708a9de470cSBruce Richardson 
709a9de470cSBruce Richardson 		TEST_ASSERT_EQUAL(event_queue_cfg, qconf.event_queue_cfg,
710a9de470cSBruce Richardson 				  "Wrong event_queue_cfg value for queue%d",
711a9de470cSBruce Richardson 				  i);
712a9de470cSBruce Richardson 	}
713a9de470cSBruce Richardson 
714a9de470cSBruce Richardson 	return TEST_SUCCESS;
715a9de470cSBruce Richardson }
716a9de470cSBruce Richardson 
717a9de470cSBruce Richardson static int
718a9de470cSBruce Richardson test_eventdev_port_default_conf_get(void)
719a9de470cSBruce Richardson {
720a9de470cSBruce Richardson 	int i, ret;
721a9de470cSBruce Richardson 	struct rte_event_port_conf pconf;
722a9de470cSBruce Richardson 
723a9de470cSBruce Richardson 	ret = rte_event_port_default_conf_get(TEST_DEV_ID, 0, NULL);
724a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
725a9de470cSBruce Richardson 
726a9de470cSBruce Richardson 	uint32_t port_count;
727a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
728a9de470cSBruce Richardson 				RTE_EVENT_DEV_ATTR_PORT_COUNT,
729a9de470cSBruce Richardson 				&port_count), "Port count get failed");
730a9de470cSBruce Richardson 
731a9de470cSBruce Richardson 	ret = rte_event_port_default_conf_get(TEST_DEV_ID,
732a9de470cSBruce Richardson 			port_count + 1, NULL);
733a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
734a9de470cSBruce Richardson 
735a9de470cSBruce Richardson 	for (i = 0; i < (int)port_count; i++) {
736a9de470cSBruce Richardson 		ret = rte_event_port_default_conf_get(TEST_DEV_ID, i,
737a9de470cSBruce Richardson 							&pconf);
738a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to get port%d info", i);
739a9de470cSBruce Richardson 	}
740a9de470cSBruce Richardson 
741a9de470cSBruce Richardson 	return TEST_SUCCESS;
742a9de470cSBruce Richardson }
743a9de470cSBruce Richardson 
744a9de470cSBruce Richardson static int
745a9de470cSBruce Richardson test_eventdev_port_setup(void)
746a9de470cSBruce Richardson {
747a9de470cSBruce Richardson 	int i, ret;
748a9de470cSBruce Richardson 	struct rte_event_dev_info info;
749a9de470cSBruce Richardson 	struct rte_event_port_conf pconf;
750a9de470cSBruce Richardson 
751a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
752a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
753a9de470cSBruce Richardson 
754a9de470cSBruce Richardson 	/* Negative cases */
755a9de470cSBruce Richardson 	ret = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pconf);
756a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get port0 info");
757a9de470cSBruce Richardson 	pconf.new_event_threshold = info.max_num_events + 1;
758a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
759a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
760a9de470cSBruce Richardson 
761a9de470cSBruce Richardson 	pconf.new_event_threshold = info.max_num_events;
762a9de470cSBruce Richardson 	pconf.dequeue_depth = info.max_event_port_dequeue_depth + 1;
763a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
764a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
765a9de470cSBruce Richardson 
766a9de470cSBruce Richardson 	pconf.dequeue_depth = info.max_event_port_dequeue_depth;
767a9de470cSBruce Richardson 	pconf.enqueue_depth = info.max_event_port_enqueue_depth + 1;
768a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
769a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
770a9de470cSBruce Richardson 
771a9de470cSBruce Richardson 	if (!(info.event_dev_cap &
772a9de470cSBruce Richardson 	      RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE)) {
773a9de470cSBruce Richardson 		pconf.enqueue_depth = info.max_event_port_enqueue_depth;
77475d11313STimothy McDaniel 		pconf.event_port_cfg = RTE_EVENT_PORT_CFG_DISABLE_IMPL_REL;
775a9de470cSBruce Richardson 		ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
776a9de470cSBruce Richardson 		TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
77775d11313STimothy McDaniel 		pconf.event_port_cfg = 0;
778a9de470cSBruce Richardson 	}
779a9de470cSBruce Richardson 
780a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, info.max_event_ports,
781a9de470cSBruce Richardson 					&pconf);
782a9de470cSBruce Richardson 	TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret);
783a9de470cSBruce Richardson 
784a9de470cSBruce Richardson 	/* Positive case */
785a9de470cSBruce Richardson 	ret = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pconf);
786a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get port0 info");
787a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
788a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to setup port0");
789a9de470cSBruce Richardson 
790a9de470cSBruce Richardson 	uint32_t port_count;
791a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
792a9de470cSBruce Richardson 				RTE_EVENT_DEV_ATTR_PORT_COUNT,
793a9de470cSBruce Richardson 				&port_count), "Port count get failed");
794a9de470cSBruce Richardson 
7955c52220aSBruce Richardson 	for (i = 1; i < (int)port_count; i++) {
796a9de470cSBruce Richardson 		ret = rte_event_port_setup(TEST_DEV_ID, i, NULL);
797a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup port%d", i);
798a9de470cSBruce Richardson 	}
799a9de470cSBruce Richardson 
800a9de470cSBruce Richardson 	return TEST_SUCCESS;
801a9de470cSBruce Richardson }
802a9de470cSBruce Richardson 
803a9de470cSBruce Richardson static int
804a9de470cSBruce Richardson test_eventdev_port_attr_dequeue_depth(void)
805a9de470cSBruce Richardson {
806a9de470cSBruce Richardson 	int ret;
807a9de470cSBruce Richardson 	struct rte_event_dev_info info;
808a9de470cSBruce Richardson 	struct rte_event_port_conf pconf;
809a9de470cSBruce Richardson 
810a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
811a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
812a9de470cSBruce Richardson 
813a9de470cSBruce Richardson 	ret = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pconf);
814a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get port0 info");
815a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
816a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to setup port0");
817a9de470cSBruce Richardson 
818a9de470cSBruce Richardson 	uint32_t value;
819a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(rte_event_port_attr_get(TEST_DEV_ID, 0,
820a9de470cSBruce Richardson 			RTE_EVENT_PORT_ATTR_DEQ_DEPTH, &value),
821a9de470cSBruce Richardson 			0, "Call to get port dequeue depth failed");
822a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(value, pconf.dequeue_depth,
823a9de470cSBruce Richardson 			"Wrong port dequeue depth");
824a9de470cSBruce Richardson 
825a9de470cSBruce Richardson 	return TEST_SUCCESS;
826a9de470cSBruce Richardson }
827a9de470cSBruce Richardson 
828a9de470cSBruce Richardson static int
829a9de470cSBruce Richardson test_eventdev_port_attr_enqueue_depth(void)
830a9de470cSBruce Richardson {
831a9de470cSBruce Richardson 	int ret;
832a9de470cSBruce Richardson 	struct rte_event_dev_info info;
833a9de470cSBruce Richardson 	struct rte_event_port_conf pconf;
834a9de470cSBruce Richardson 
835a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
836a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
837a9de470cSBruce Richardson 
838a9de470cSBruce Richardson 	ret = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pconf);
839a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get port0 info");
840a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
841a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to setup port0");
842a9de470cSBruce Richardson 
843a9de470cSBruce Richardson 	uint32_t value;
844a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(rte_event_port_attr_get(TEST_DEV_ID, 0,
845a9de470cSBruce Richardson 			RTE_EVENT_PORT_ATTR_ENQ_DEPTH, &value),
846a9de470cSBruce Richardson 			0, "Call to get port enqueue depth failed");
847a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(value, pconf.enqueue_depth,
848a9de470cSBruce Richardson 			"Wrong port enqueue depth");
849a9de470cSBruce Richardson 
850a9de470cSBruce Richardson 	return TEST_SUCCESS;
851a9de470cSBruce Richardson }
852a9de470cSBruce Richardson 
853a9de470cSBruce Richardson static int
854a9de470cSBruce Richardson test_eventdev_port_attr_new_event_threshold(void)
855a9de470cSBruce Richardson {
856a9de470cSBruce Richardson 	int ret;
857a9de470cSBruce Richardson 	struct rte_event_dev_info info;
858a9de470cSBruce Richardson 	struct rte_event_port_conf pconf;
859a9de470cSBruce Richardson 
860a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
861a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
862a9de470cSBruce Richardson 
863a9de470cSBruce Richardson 	ret = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pconf);
864a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get port0 info");
865a9de470cSBruce Richardson 	ret = rte_event_port_setup(TEST_DEV_ID, 0, &pconf);
866a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to setup port0");
867a9de470cSBruce Richardson 
868a9de470cSBruce Richardson 	uint32_t value;
869a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(rte_event_port_attr_get(TEST_DEV_ID, 0,
870a9de470cSBruce Richardson 			RTE_EVENT_PORT_ATTR_NEW_EVENT_THRESHOLD, &value),
871a9de470cSBruce Richardson 			0, "Call to get port new event threshold failed");
872a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL((int32_t) value, pconf.new_event_threshold,
873a9de470cSBruce Richardson 			"Wrong port new event threshold");
874a9de470cSBruce Richardson 
875a9de470cSBruce Richardson 	return TEST_SUCCESS;
876a9de470cSBruce Richardson }
877a9de470cSBruce Richardson 
878a9de470cSBruce Richardson static int
879a9de470cSBruce Richardson test_eventdev_port_count(void)
880a9de470cSBruce Richardson {
881a9de470cSBruce Richardson 	int ret;
882a9de470cSBruce Richardson 	struct rte_event_dev_info info;
883a9de470cSBruce Richardson 
884a9de470cSBruce Richardson 	ret = rte_event_dev_info_get(TEST_DEV_ID, &info);
885a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to get event dev info");
886a9de470cSBruce Richardson 
887a9de470cSBruce Richardson 	uint32_t port_count;
888a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
889a9de470cSBruce Richardson 				RTE_EVENT_DEV_ATTR_PORT_COUNT,
890a9de470cSBruce Richardson 				&port_count), "Port count get failed");
891a9de470cSBruce Richardson 	TEST_ASSERT_EQUAL(port_count, info.max_event_ports, "Wrong port count");
892a9de470cSBruce Richardson 
893a9de470cSBruce Richardson 	return TEST_SUCCESS;
894a9de470cSBruce Richardson }
895a9de470cSBruce Richardson 
896a9de470cSBruce Richardson static int
897a9de470cSBruce Richardson test_eventdev_timeout_ticks(void)
898a9de470cSBruce Richardson {
899a9de470cSBruce Richardson 	int ret;
900a9de470cSBruce Richardson 	uint64_t timeout_ticks;
901a9de470cSBruce Richardson 
902a9de470cSBruce Richardson 	ret = rte_event_dequeue_timeout_ticks(TEST_DEV_ID, 100, &timeout_ticks);
903a9de470cSBruce Richardson 	if (ret != -ENOTSUP)
904a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Fail to get timeout_ticks");
905a9de470cSBruce Richardson 
906a9de470cSBruce Richardson 	return ret;
907a9de470cSBruce Richardson }
908a9de470cSBruce Richardson 
909a9de470cSBruce Richardson 
910a9de470cSBruce Richardson static int
911a9de470cSBruce Richardson test_eventdev_start_stop(void)
912a9de470cSBruce Richardson {
913a9de470cSBruce Richardson 	int i, ret;
914a9de470cSBruce Richardson 
915a9de470cSBruce Richardson 	ret = eventdev_configure_setup();
916a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to configure eventdev");
917a9de470cSBruce Richardson 
918a9de470cSBruce Richardson 	uint32_t queue_count;
919a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
920a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
921a9de470cSBruce Richardson 			    "Queue count get failed");
922a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
923a9de470cSBruce Richardson 		ret = rte_event_queue_setup(TEST_DEV_ID, i, NULL);
924a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
925a9de470cSBruce Richardson 	}
926a9de470cSBruce Richardson 
927a9de470cSBruce Richardson 	uint32_t port_count;
928a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
929a9de470cSBruce Richardson 				RTE_EVENT_DEV_ATTR_PORT_COUNT,
930a9de470cSBruce Richardson 				&port_count), "Port count get failed");
931a9de470cSBruce Richardson 
932a9de470cSBruce Richardson 	for (i = 0; i < (int)port_count; i++) {
933a9de470cSBruce Richardson 		ret = rte_event_port_setup(TEST_DEV_ID, i, NULL);
934a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup port%d", i);
935a9de470cSBruce Richardson 	}
936a9de470cSBruce Richardson 
937a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, NULL, NULL, 0);
938a9de470cSBruce Richardson 	TEST_ASSERT(ret == (int)queue_count, "Failed to link port, device %d",
939a9de470cSBruce Richardson 		    TEST_DEV_ID);
940a9de470cSBruce Richardson 
941a9de470cSBruce Richardson 	ret = rte_event_dev_start(TEST_DEV_ID);
942a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to start device%d", TEST_DEV_ID);
943a9de470cSBruce Richardson 
944a9de470cSBruce Richardson 	rte_event_dev_stop(TEST_DEV_ID);
945a9de470cSBruce Richardson 	return TEST_SUCCESS;
946a9de470cSBruce Richardson }
947a9de470cSBruce Richardson 
948a9de470cSBruce Richardson 
949a9de470cSBruce Richardson static int
950a9de470cSBruce Richardson eventdev_setup_device(void)
951a9de470cSBruce Richardson {
952a9de470cSBruce Richardson 	int i, ret;
953a9de470cSBruce Richardson 
954a9de470cSBruce Richardson 	ret = eventdev_configure_setup();
955a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to configure eventdev");
956a9de470cSBruce Richardson 
957a9de470cSBruce Richardson 	uint32_t queue_count;
958a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
959a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
960a9de470cSBruce Richardson 			    "Queue count get failed");
961a9de470cSBruce Richardson 	for (i = 0; i < (int)queue_count; i++) {
962a9de470cSBruce Richardson 		ret = rte_event_queue_setup(TEST_DEV_ID, i, NULL);
963a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup queue%d", i);
964a9de470cSBruce Richardson 	}
965a9de470cSBruce Richardson 
966a9de470cSBruce Richardson 	uint32_t port_count;
967a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
968a9de470cSBruce Richardson 				RTE_EVENT_DEV_ATTR_PORT_COUNT,
969a9de470cSBruce Richardson 				&port_count), "Port count get failed");
970a9de470cSBruce Richardson 
971a9de470cSBruce Richardson 	for (i = 0; i < (int)port_count; i++) {
972a9de470cSBruce Richardson 		ret = rte_event_port_setup(TEST_DEV_ID, i, NULL);
973a9de470cSBruce Richardson 		TEST_ASSERT_SUCCESS(ret, "Failed to setup port%d", i);
974a9de470cSBruce Richardson 	}
975a9de470cSBruce Richardson 
976a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, NULL, NULL, 0);
977a9de470cSBruce Richardson 	TEST_ASSERT(ret == (int)queue_count, "Failed to link port, device %d",
978a9de470cSBruce Richardson 		    TEST_DEV_ID);
979a9de470cSBruce Richardson 
980a9de470cSBruce Richardson 	ret = rte_event_dev_start(TEST_DEV_ID);
981a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(ret, "Failed to start device%d", TEST_DEV_ID);
982a9de470cSBruce Richardson 
983a9de470cSBruce Richardson 	return TEST_SUCCESS;
984a9de470cSBruce Richardson }
985a9de470cSBruce Richardson 
986a9de470cSBruce Richardson static void
987a9de470cSBruce Richardson eventdev_stop_device(void)
988a9de470cSBruce Richardson {
989a9de470cSBruce Richardson 	rte_event_dev_stop(TEST_DEV_ID);
990a9de470cSBruce Richardson }
991a9de470cSBruce Richardson 
992a9de470cSBruce Richardson static int
993a9de470cSBruce Richardson test_eventdev_link(void)
994a9de470cSBruce Richardson {
995a9de470cSBruce Richardson 	int ret, nb_queues, i;
996a9de470cSBruce Richardson 	uint8_t queues[RTE_EVENT_MAX_QUEUES_PER_DEV];
997a9de470cSBruce Richardson 	uint8_t priorities[RTE_EVENT_MAX_QUEUES_PER_DEV];
998a9de470cSBruce Richardson 
999a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, NULL, NULL, 0);
1000a9de470cSBruce Richardson 	TEST_ASSERT(ret >= 0, "Failed to link with NULL device%d",
1001a9de470cSBruce Richardson 				 TEST_DEV_ID);
1002a9de470cSBruce Richardson 
1003a9de470cSBruce Richardson 	uint32_t queue_count;
1004a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
1005a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
1006a9de470cSBruce Richardson 			    "Queue count get failed");
1007a9de470cSBruce Richardson 	nb_queues = queue_count;
1008a9de470cSBruce Richardson 	for (i = 0; i < nb_queues; i++) {
1009a9de470cSBruce Richardson 		queues[i] = i;
1010a9de470cSBruce Richardson 		priorities[i] = RTE_EVENT_DEV_PRIORITY_NORMAL;
1011a9de470cSBruce Richardson 	}
1012a9de470cSBruce Richardson 
1013a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, queues,
1014a9de470cSBruce Richardson 					priorities, nb_queues);
1015a9de470cSBruce Richardson 	TEST_ASSERT(ret == nb_queues, "Failed to link(device%d) ret=%d",
1016a9de470cSBruce Richardson 				 TEST_DEV_ID, ret);
1017a9de470cSBruce Richardson 	return TEST_SUCCESS;
1018a9de470cSBruce Richardson }
1019a9de470cSBruce Richardson 
1020a9de470cSBruce Richardson static int
1021a9de470cSBruce Richardson test_eventdev_unlink(void)
1022a9de470cSBruce Richardson {
1023a9de470cSBruce Richardson 	int ret, nb_queues, i;
1024a9de470cSBruce Richardson 	uint8_t queues[RTE_EVENT_MAX_QUEUES_PER_DEV];
1025a9de470cSBruce Richardson 
1026a9de470cSBruce Richardson 	ret = rte_event_port_unlink(TEST_DEV_ID, 0, NULL, 0);
1027a9de470cSBruce Richardson 	TEST_ASSERT(ret >= 0, "Failed to unlink with NULL device%d",
1028a9de470cSBruce Richardson 				 TEST_DEV_ID);
1029a9de470cSBruce Richardson 
1030a9de470cSBruce Richardson 	uint32_t queue_count;
1031a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
1032a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
1033a9de470cSBruce Richardson 			    "Queue count get failed");
1034a9de470cSBruce Richardson 	nb_queues = queue_count;
1035a9de470cSBruce Richardson 	for (i = 0; i < nb_queues; i++)
1036a9de470cSBruce Richardson 		queues[i] = i;
1037a9de470cSBruce Richardson 
1038a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, NULL, NULL, 0);
1039a9de470cSBruce Richardson 	TEST_ASSERT(ret >= 0, "Failed to link with NULL device%d",
1040a9de470cSBruce Richardson 				 TEST_DEV_ID);
1041a9de470cSBruce Richardson 
1042a9de470cSBruce Richardson 	ret = rte_event_port_unlink(TEST_DEV_ID, 0, queues, nb_queues);
1043a9de470cSBruce Richardson 	TEST_ASSERT(ret == nb_queues, "Failed to unlink(device%d) ret=%d",
1044a9de470cSBruce Richardson 				 TEST_DEV_ID, ret);
1045a9de470cSBruce Richardson 	return TEST_SUCCESS;
1046a9de470cSBruce Richardson }
1047a9de470cSBruce Richardson 
1048a9de470cSBruce Richardson static int
1049a9de470cSBruce Richardson test_eventdev_link_get(void)
1050a9de470cSBruce Richardson {
1051a9de470cSBruce Richardson 	int ret, i;
1052a9de470cSBruce Richardson 	uint8_t queues[RTE_EVENT_MAX_QUEUES_PER_DEV];
1053a9de470cSBruce Richardson 	uint8_t priorities[RTE_EVENT_MAX_QUEUES_PER_DEV];
1054a9de470cSBruce Richardson 
1055a9de470cSBruce Richardson 	/* link all queues */
1056a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, NULL, NULL, 0);
1057a9de470cSBruce Richardson 	TEST_ASSERT(ret >= 0, "Failed to link with NULL device%d",
1058a9de470cSBruce Richardson 				 TEST_DEV_ID);
1059a9de470cSBruce Richardson 
1060a9de470cSBruce Richardson 	uint32_t queue_count;
1061a9de470cSBruce Richardson 	TEST_ASSERT_SUCCESS(rte_event_dev_attr_get(TEST_DEV_ID,
1062a9de470cSBruce Richardson 			    RTE_EVENT_DEV_ATTR_QUEUE_COUNT, &queue_count),
1063a9de470cSBruce Richardson 			    "Queue count get failed");
1064a9de470cSBruce Richardson 	const int nb_queues = queue_count;
1065a9de470cSBruce Richardson 	for (i = 0; i < nb_queues; i++)
1066a9de470cSBruce Richardson 		queues[i] = i;
1067a9de470cSBruce Richardson 
1068a9de470cSBruce Richardson 	ret = rte_event_port_unlink(TEST_DEV_ID, 0, queues, nb_queues);
1069a9de470cSBruce Richardson 	TEST_ASSERT(ret == nb_queues, "Failed to unlink(device%d) ret=%d",
1070a9de470cSBruce Richardson 				 TEST_DEV_ID, ret);
1071a9de470cSBruce Richardson 
1072a9de470cSBruce Richardson 	ret = rte_event_port_links_get(TEST_DEV_ID, 0, queues, priorities);
1073a9de470cSBruce Richardson 	TEST_ASSERT(ret == 0, "(%d)Wrong link get=%d", TEST_DEV_ID, ret);
1074a9de470cSBruce Richardson 
1075a9de470cSBruce Richardson 	/* link all queues and get the links */
1076a9de470cSBruce Richardson 	for (i = 0; i < nb_queues; i++) {
1077a9de470cSBruce Richardson 		queues[i] = i;
1078a9de470cSBruce Richardson 		priorities[i] = RTE_EVENT_DEV_PRIORITY_NORMAL;
1079a9de470cSBruce Richardson 	}
1080a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, queues, priorities,
1081a9de470cSBruce Richardson 					 nb_queues);
1082a9de470cSBruce Richardson 	TEST_ASSERT(ret == nb_queues, "Failed to link(device%d) ret=%d",
1083a9de470cSBruce Richardson 				 TEST_DEV_ID, ret);
1084a9de470cSBruce Richardson 	ret = rte_event_port_links_get(TEST_DEV_ID, 0, queues, priorities);
1085a9de470cSBruce Richardson 	TEST_ASSERT(ret == nb_queues, "(%d)Wrong link get ret=%d expected=%d",
1086a9de470cSBruce Richardson 				 TEST_DEV_ID, ret, nb_queues);
1087a9de470cSBruce Richardson 	/* unlink all*/
1088a9de470cSBruce Richardson 	ret = rte_event_port_unlink(TEST_DEV_ID, 0, NULL, 0);
1089a9de470cSBruce Richardson 	TEST_ASSERT(ret == nb_queues, "Failed to unlink(device%d) ret=%d",
1090a9de470cSBruce Richardson 				 TEST_DEV_ID, ret);
1091a9de470cSBruce Richardson 	/* link just one queue */
1092a9de470cSBruce Richardson 	queues[0] = 0;
1093a9de470cSBruce Richardson 	priorities[0] = RTE_EVENT_DEV_PRIORITY_NORMAL;
1094a9de470cSBruce Richardson 
1095a9de470cSBruce Richardson 	ret = rte_event_port_link(TEST_DEV_ID, 0, queues, priorities, 1);
1096a9de470cSBruce Richardson 	TEST_ASSERT(ret == 1, "Failed to link(device%d) ret=%d",
1097a9de470cSBruce Richardson 				 TEST_DEV_ID, ret);
1098a9de470cSBruce Richardson 	ret = rte_event_port_links_get(TEST_DEV_ID, 0, queues, priorities);
1099a9de470cSBruce Richardson 	TEST_ASSERT(ret == 1, "(%d)Wrong link get ret=%d expected=%d",
1100a9de470cSBruce Richardson 					TEST_DEV_ID, ret, 1);
1101a9de470cSBruce Richardson 	/* unlink the queue */
1102a9de470cSBruce Richardson 	ret = rte_event_port_unlink(TEST_DEV_ID, 0, NULL, 0);
1103a9de470cSBruce Richardson 	TEST_ASSERT(ret == 1, "Failed to unlink(device%d) ret=%d",
1104a9de470cSBruce Richardson 				 TEST_DEV_ID, ret);
1105a9de470cSBruce Richardson 
1106a9de470cSBruce Richardson 	/* 4links and 2 unlinks */
1107a9de470cSBruce Richardson 	if (nb_queues >= 4) {
1108a9de470cSBruce Richardson 		for (i = 0; i < 4; i++) {
1109a9de470cSBruce Richardson 			queues[i] = i;
1110a9de470cSBruce Richardson 			priorities[i] = 0x40;
1111a9de470cSBruce Richardson 		}
1112a9de470cSBruce Richardson 		ret = rte_event_port_link(TEST_DEV_ID, 0, queues, priorities,
1113a9de470cSBruce Richardson 						4);
1114a9de470cSBruce Richardson 		TEST_ASSERT(ret == 4, "Failed to link(device%d) ret=%d",
1115a9de470cSBruce Richardson 					 TEST_DEV_ID, ret);
1116a9de470cSBruce Richardson 
1117a9de470cSBruce Richardson 		for (i = 0; i < 2; i++)
1118a9de470cSBruce Richardson 			queues[i] = i;
1119a9de470cSBruce Richardson 
1120a9de470cSBruce Richardson 		ret = rte_event_port_unlink(TEST_DEV_ID, 0, queues, 2);
1121a9de470cSBruce Richardson 		TEST_ASSERT(ret == 2, "Failed to unlink(device%d) ret=%d",
1122a9de470cSBruce Richardson 					 TEST_DEV_ID, ret);
1123a9de470cSBruce Richardson 		ret = rte_event_port_links_get(TEST_DEV_ID, 0,
1124a9de470cSBruce Richardson 						queues, priorities);
1125a9de470cSBruce Richardson 		TEST_ASSERT(ret == 2, "(%d)Wrong link get ret=%d expected=%d",
1126a9de470cSBruce Richardson 						TEST_DEV_ID, ret, 2);
1127a9de470cSBruce Richardson 		TEST_ASSERT(queues[0] == 2, "ret=%d expected=%d", ret, 2);
1128a9de470cSBruce Richardson 		TEST_ASSERT(priorities[0] == 0x40, "ret=%d expected=%d",
1129a9de470cSBruce Richardson 							ret, 0x40);
1130a9de470cSBruce Richardson 		TEST_ASSERT(queues[1] == 3, "ret=%d expected=%d", ret, 3);
1131a9de470cSBruce Richardson 		TEST_ASSERT(priorities[1] == 0x40, "ret=%d expected=%d",
1132a9de470cSBruce Richardson 					ret, 0x40);
1133a9de470cSBruce Richardson 	}
1134a9de470cSBruce Richardson 
1135a9de470cSBruce Richardson 	return TEST_SUCCESS;
1136a9de470cSBruce Richardson }
1137a9de470cSBruce Richardson 
1138a9de470cSBruce Richardson static int
1139d007a7f3SPavan Nikhilesh test_eventdev_profile_switch(void)
1140d007a7f3SPavan Nikhilesh {
1141d007a7f3SPavan Nikhilesh #define MAX_RETRIES   4
1142d007a7f3SPavan Nikhilesh 	uint8_t priorities[RTE_EVENT_MAX_QUEUES_PER_DEV];
1143d007a7f3SPavan Nikhilesh 	uint8_t queues[RTE_EVENT_MAX_QUEUES_PER_DEV];
1144d007a7f3SPavan Nikhilesh 	struct rte_event_queue_conf qcfg;
1145d007a7f3SPavan Nikhilesh 	struct rte_event_port_conf pcfg;
1146d007a7f3SPavan Nikhilesh 	struct rte_event_dev_info info;
1147d007a7f3SPavan Nikhilesh 	struct rte_event ev;
1148d007a7f3SPavan Nikhilesh 	uint8_t q, re;
1149d007a7f3SPavan Nikhilesh 	int rc;
1150d007a7f3SPavan Nikhilesh 
1151d007a7f3SPavan Nikhilesh 	rte_event_dev_info_get(TEST_DEV_ID, &info);
1152d007a7f3SPavan Nikhilesh 
1153d007a7f3SPavan Nikhilesh 	if (info.max_profiles_per_port <= 1)
1154d007a7f3SPavan Nikhilesh 		return TEST_SKIPPED;
1155d007a7f3SPavan Nikhilesh 
1156d007a7f3SPavan Nikhilesh 	if (info.max_event_queues <= 1)
1157d007a7f3SPavan Nikhilesh 		return TEST_SKIPPED;
1158d007a7f3SPavan Nikhilesh 
1159d007a7f3SPavan Nikhilesh 	rc = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pcfg);
1160d007a7f3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to get port0 default config");
1161d007a7f3SPavan Nikhilesh 	rc = rte_event_port_setup(TEST_DEV_ID, 0, &pcfg);
1162d007a7f3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to setup port0");
1163d007a7f3SPavan Nikhilesh 
1164d007a7f3SPavan Nikhilesh 	rc = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, &qcfg);
1165d007a7f3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to get queue0 default config");
1166d007a7f3SPavan Nikhilesh 	rc = rte_event_queue_setup(TEST_DEV_ID, 0, &qcfg);
1167d007a7f3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to setup queue0");
1168d007a7f3SPavan Nikhilesh 
1169d007a7f3SPavan Nikhilesh 	q = 0;
1170d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_links_set(TEST_DEV_ID, 0, &q, NULL, 1, 0);
1171d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to link queue 0 to port 0 with profile 0");
1172d007a7f3SPavan Nikhilesh 	q = 1;
1173d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_links_set(TEST_DEV_ID, 0, &q, NULL, 1, 1);
1174d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to link queue 1 to port 0 with profile 1");
1175d007a7f3SPavan Nikhilesh 
1176d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_links_get(TEST_DEV_ID, 0, queues, priorities, 0);
1177d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to links");
1178d007a7f3SPavan Nikhilesh 	TEST_ASSERT(queues[0] == 0, "Invalid queue found in link");
1179d007a7f3SPavan Nikhilesh 
1180d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_links_get(TEST_DEV_ID, 0, queues, priorities, 1);
1181d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to links");
1182d007a7f3SPavan Nikhilesh 	TEST_ASSERT(queues[0] == 1, "Invalid queue found in link");
1183d007a7f3SPavan Nikhilesh 
1184d007a7f3SPavan Nikhilesh 	rc = rte_event_dev_start(TEST_DEV_ID);
1185d007a7f3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to start event device");
1186d007a7f3SPavan Nikhilesh 
1187d007a7f3SPavan Nikhilesh 	ev.event_type = RTE_EVENT_TYPE_CPU;
1188d007a7f3SPavan Nikhilesh 	ev.queue_id = 0;
1189d007a7f3SPavan Nikhilesh 	ev.op = RTE_EVENT_OP_NEW;
1190d007a7f3SPavan Nikhilesh 	ev.flow_id = 0;
1191d007a7f3SPavan Nikhilesh 	ev.u64 = 0xBADF00D0;
1192adadb558SPavan Nikhilesh 	ev.sched_type = RTE_SCHED_TYPE_PARALLEL;
1193d007a7f3SPavan Nikhilesh 	rc = rte_event_enqueue_burst(TEST_DEV_ID, 0, &ev, 1);
1194d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to enqueue event");
1195d007a7f3SPavan Nikhilesh 	ev.queue_id = 1;
1196d007a7f3SPavan Nikhilesh 	ev.flow_id = 1;
1197d007a7f3SPavan Nikhilesh 	rc = rte_event_enqueue_burst(TEST_DEV_ID, 0, &ev, 1);
1198d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to enqueue event");
1199d007a7f3SPavan Nikhilesh 
1200d007a7f3SPavan Nikhilesh 	ev.event = 0;
1201d007a7f3SPavan Nikhilesh 	ev.u64 = 0;
1202d007a7f3SPavan Nikhilesh 
1203d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_switch(TEST_DEV_ID, 0, 1);
1204d007a7f3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to change profile");
1205d007a7f3SPavan Nikhilesh 
1206d007a7f3SPavan Nikhilesh 	re = MAX_RETRIES;
1207d007a7f3SPavan Nikhilesh 	while (re--) {
1208d007a7f3SPavan Nikhilesh 		rc = rte_event_dequeue_burst(TEST_DEV_ID, 0, &ev, 1, 0);
1209d007a7f3SPavan Nikhilesh 		printf("rc %d\n", rc);
1210d007a7f3SPavan Nikhilesh 		if (rc)
1211d007a7f3SPavan Nikhilesh 			break;
1212d007a7f3SPavan Nikhilesh 	}
1213d007a7f3SPavan Nikhilesh 
1214d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to dequeue event from profile 1");
1215d007a7f3SPavan Nikhilesh 	TEST_ASSERT(ev.flow_id == 1, "Incorrect flow identifier from profile 1");
1216d007a7f3SPavan Nikhilesh 	TEST_ASSERT(ev.queue_id == 1, "Incorrect queue identifier from profile 1");
1217d007a7f3SPavan Nikhilesh 
1218d007a7f3SPavan Nikhilesh 	re = MAX_RETRIES;
1219d007a7f3SPavan Nikhilesh 	while (re--) {
1220d007a7f3SPavan Nikhilesh 		rc = rte_event_dequeue_burst(TEST_DEV_ID, 0, &ev, 1, 0);
1221d007a7f3SPavan Nikhilesh 		TEST_ASSERT(rc == 0, "Unexpected event dequeued from active profile");
1222d007a7f3SPavan Nikhilesh 	}
1223d007a7f3SPavan Nikhilesh 
1224d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_switch(TEST_DEV_ID, 0, 0);
1225d007a7f3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to change profile");
1226d007a7f3SPavan Nikhilesh 
1227d007a7f3SPavan Nikhilesh 	re = MAX_RETRIES;
1228d007a7f3SPavan Nikhilesh 	while (re--) {
1229d007a7f3SPavan Nikhilesh 		rc = rte_event_dequeue_burst(TEST_DEV_ID, 0, &ev, 1, 0);
1230d007a7f3SPavan Nikhilesh 		if (rc)
1231d007a7f3SPavan Nikhilesh 			break;
1232d007a7f3SPavan Nikhilesh 	}
1233d007a7f3SPavan Nikhilesh 
1234d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to dequeue event from profile 1");
1235d007a7f3SPavan Nikhilesh 	TEST_ASSERT(ev.flow_id == 0, "Incorrect flow identifier from profile 0");
1236d007a7f3SPavan Nikhilesh 	TEST_ASSERT(ev.queue_id == 0, "Incorrect queue identifier from profile 0");
1237d007a7f3SPavan Nikhilesh 
1238d007a7f3SPavan Nikhilesh 	re = MAX_RETRIES;
1239d007a7f3SPavan Nikhilesh 	while (re--) {
1240d007a7f3SPavan Nikhilesh 		rc = rte_event_dequeue_burst(TEST_DEV_ID, 0, &ev, 1, 0);
1241d007a7f3SPavan Nikhilesh 		TEST_ASSERT(rc == 0, "Unexpected event dequeued from active profile");
1242d007a7f3SPavan Nikhilesh 	}
1243d007a7f3SPavan Nikhilesh 
1244d007a7f3SPavan Nikhilesh 	q = 0;
1245d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_unlink(TEST_DEV_ID, 0, &q, 1, 0);
1246d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to unlink queue 0 to port 0 with profile 0");
1247d007a7f3SPavan Nikhilesh 	q = 1;
1248d007a7f3SPavan Nikhilesh 	rc = rte_event_port_profile_unlink(TEST_DEV_ID, 0, &q, 1, 1);
1249d007a7f3SPavan Nikhilesh 	TEST_ASSERT(rc == 1, "Failed to unlink queue 1 to port 0 with profile 1");
1250d007a7f3SPavan Nikhilesh 
1251d007a7f3SPavan Nikhilesh 	return TEST_SUCCESS;
1252d007a7f3SPavan Nikhilesh }
1253d007a7f3SPavan Nikhilesh 
1254d007a7f3SPavan Nikhilesh static int
1255c1bdd86dSPavan Nikhilesh preschedule_test(enum rte_event_dev_preschedule_type preschedule_type, const char *preschedule_name,
1256c1bdd86dSPavan Nikhilesh 		 uint8_t modify)
1257acc65ee3SPavan Nikhilesh {
1258acc65ee3SPavan Nikhilesh #define NB_EVENTS     1024
1259acc65ee3SPavan Nikhilesh 	uint64_t start, total;
1260acc65ee3SPavan Nikhilesh 	struct rte_event ev;
1261acc65ee3SPavan Nikhilesh 	int rc, cnt;
1262acc65ee3SPavan Nikhilesh 
1263acc65ee3SPavan Nikhilesh 	ev.event_type = RTE_EVENT_TYPE_CPU;
1264acc65ee3SPavan Nikhilesh 	ev.queue_id = 0;
1265acc65ee3SPavan Nikhilesh 	ev.op = RTE_EVENT_OP_NEW;
1266acc65ee3SPavan Nikhilesh 	ev.u64 = 0xBADF00D0;
1267acc65ee3SPavan Nikhilesh 
1268acc65ee3SPavan Nikhilesh 	for (cnt = 0; cnt < NB_EVENTS; cnt++) {
1269acc65ee3SPavan Nikhilesh 		ev.flow_id = cnt;
1270acc65ee3SPavan Nikhilesh 		rc = rte_event_enqueue_burst(TEST_DEV_ID, 0, &ev, 1);
1271acc65ee3SPavan Nikhilesh 		TEST_ASSERT(rc == 1, "Failed to enqueue event");
1272acc65ee3SPavan Nikhilesh 	}
1273acc65ee3SPavan Nikhilesh 
1274c1bdd86dSPavan Nikhilesh 	if (modify) {
1275c1bdd86dSPavan Nikhilesh 		rc = rte_event_port_preschedule_modify(TEST_DEV_ID, 0, preschedule_type);
1276c1bdd86dSPavan Nikhilesh 		TEST_ASSERT_SUCCESS(rc, "Failed to modify preschedule type");
1277c1bdd86dSPavan Nikhilesh 	}
1278c1bdd86dSPavan Nikhilesh 
1279acc65ee3SPavan Nikhilesh 	total = 0;
1280acc65ee3SPavan Nikhilesh 	while (cnt) {
1281acc65ee3SPavan Nikhilesh 		start = rte_rdtsc_precise();
1282acc65ee3SPavan Nikhilesh 		rc = rte_event_dequeue_burst(TEST_DEV_ID, 0, &ev, 1, 0);
1283acc65ee3SPavan Nikhilesh 		if (rc) {
1284acc65ee3SPavan Nikhilesh 			total += rte_rdtsc_precise() - start;
1285acc65ee3SPavan Nikhilesh 			cnt--;
1286acc65ee3SPavan Nikhilesh 		}
1287acc65ee3SPavan Nikhilesh 	}
1288acc65ee3SPavan Nikhilesh 	printf("Preschedule type : %s, avg cycles %" PRIu64 "\n", preschedule_name,
1289acc65ee3SPavan Nikhilesh 	       total / NB_EVENTS);
1290acc65ee3SPavan Nikhilesh 
1291acc65ee3SPavan Nikhilesh 	return TEST_SUCCESS;
1292acc65ee3SPavan Nikhilesh }
1293acc65ee3SPavan Nikhilesh 
1294acc65ee3SPavan Nikhilesh static int
1295acc65ee3SPavan Nikhilesh preschedule_configure(enum rte_event_dev_preschedule_type type, struct rte_event_dev_info *info)
1296acc65ee3SPavan Nikhilesh {
1297acc65ee3SPavan Nikhilesh 	struct rte_event_dev_config dev_conf;
1298acc65ee3SPavan Nikhilesh 	struct rte_event_queue_conf qcfg;
1299acc65ee3SPavan Nikhilesh 	struct rte_event_port_conf pcfg;
1300acc65ee3SPavan Nikhilesh 	int rc;
1301acc65ee3SPavan Nikhilesh 
1302acc65ee3SPavan Nikhilesh 	devconf_set_default_sane_values(&dev_conf, info);
1303acc65ee3SPavan Nikhilesh 	dev_conf.nb_event_ports = 1;
1304acc65ee3SPavan Nikhilesh 	dev_conf.nb_event_queues = 1;
1305acc65ee3SPavan Nikhilesh 	dev_conf.preschedule_type = type;
1306acc65ee3SPavan Nikhilesh 
1307acc65ee3SPavan Nikhilesh 	rc = rte_event_dev_configure(TEST_DEV_ID, &dev_conf);
1308acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to configure eventdev");
1309acc65ee3SPavan Nikhilesh 
1310acc65ee3SPavan Nikhilesh 	rc = rte_event_port_default_conf_get(TEST_DEV_ID, 0, &pcfg);
1311acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to get port0 default config");
1312acc65ee3SPavan Nikhilesh 	rc = rte_event_port_setup(TEST_DEV_ID, 0, &pcfg);
1313acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to setup port0");
1314acc65ee3SPavan Nikhilesh 
1315acc65ee3SPavan Nikhilesh 	rc = rte_event_queue_default_conf_get(TEST_DEV_ID, 0, &qcfg);
1316acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to get queue0 default config");
1317acc65ee3SPavan Nikhilesh 	rc = rte_event_queue_setup(TEST_DEV_ID, 0, &qcfg);
1318acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to setup queue0");
1319acc65ee3SPavan Nikhilesh 
1320acc65ee3SPavan Nikhilesh 	rc = rte_event_port_link(TEST_DEV_ID, 0, NULL, NULL, 0);
1321acc65ee3SPavan Nikhilesh 	TEST_ASSERT(rc == (int)dev_conf.nb_event_queues, "Failed to link port, device %d",
1322acc65ee3SPavan Nikhilesh 		    TEST_DEV_ID);
1323acc65ee3SPavan Nikhilesh 
1324acc65ee3SPavan Nikhilesh 	rc = rte_event_dev_start(TEST_DEV_ID);
1325acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to start event device");
1326acc65ee3SPavan Nikhilesh 
1327acc65ee3SPavan Nikhilesh 	return 0;
1328acc65ee3SPavan Nikhilesh }
1329acc65ee3SPavan Nikhilesh 
1330acc65ee3SPavan Nikhilesh static int
1331acc65ee3SPavan Nikhilesh test_eventdev_preschedule_configure(void)
1332acc65ee3SPavan Nikhilesh {
1333acc65ee3SPavan Nikhilesh 	struct rte_event_dev_info info;
1334acc65ee3SPavan Nikhilesh 	int rc;
1335acc65ee3SPavan Nikhilesh 
1336acc65ee3SPavan Nikhilesh 	rte_event_dev_info_get(TEST_DEV_ID, &info);
1337acc65ee3SPavan Nikhilesh 
1338acc65ee3SPavan Nikhilesh 	if ((info.event_dev_cap & RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE) == 0)
1339acc65ee3SPavan Nikhilesh 		return TEST_SKIPPED;
1340acc65ee3SPavan Nikhilesh 
1341acc65ee3SPavan Nikhilesh 	rc = preschedule_configure(RTE_EVENT_PRESCHEDULE_NONE, &info);
1342acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to configure eventdev");
1343c1bdd86dSPavan Nikhilesh 	rc = preschedule_test(RTE_EVENT_PRESCHEDULE_NONE, "RTE_EVENT_PRESCHEDULE_NONE", 0);
1344acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to test preschedule RTE_EVENT_PRESCHEDULE_NONE");
1345acc65ee3SPavan Nikhilesh 
1346acc65ee3SPavan Nikhilesh 	rte_event_dev_stop(TEST_DEV_ID);
1347acc65ee3SPavan Nikhilesh 	rc = preschedule_configure(RTE_EVENT_PRESCHEDULE, &info);
1348acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to configure eventdev");
1349c1bdd86dSPavan Nikhilesh 	rc = preschedule_test(RTE_EVENT_PRESCHEDULE, "RTE_EVENT_PRESCHEDULE", 0);
1350acc65ee3SPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to test preschedule RTE_EVENT_PRESCHEDULE");
1351acc65ee3SPavan Nikhilesh 
1352acc65ee3SPavan Nikhilesh 	if (info.event_dev_cap & RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE_ADAPTIVE) {
1353acc65ee3SPavan Nikhilesh 		rte_event_dev_stop(TEST_DEV_ID);
1354acc65ee3SPavan Nikhilesh 		rc = preschedule_configure(RTE_EVENT_PRESCHEDULE_ADAPTIVE, &info);
1355acc65ee3SPavan Nikhilesh 		TEST_ASSERT_SUCCESS(rc, "Failed to configure eventdev");
1356acc65ee3SPavan Nikhilesh 		rc = preschedule_test(RTE_EVENT_PRESCHEDULE_ADAPTIVE,
1357c1bdd86dSPavan Nikhilesh 				      "RTE_EVENT_PRESCHEDULE_ADAPTIVE", 0);
1358acc65ee3SPavan Nikhilesh 		TEST_ASSERT_SUCCESS(rc,
1359acc65ee3SPavan Nikhilesh 				    "Failed to test preschedule RTE_EVENT_PRESCHEDULE_ADAPTIVE");
1360acc65ee3SPavan Nikhilesh 	}
1361acc65ee3SPavan Nikhilesh 
1362acc65ee3SPavan Nikhilesh 	return TEST_SUCCESS;
1363acc65ee3SPavan Nikhilesh }
1364acc65ee3SPavan Nikhilesh 
1365acc65ee3SPavan Nikhilesh static int
1366c1bdd86dSPavan Nikhilesh test_eventdev_preschedule_modify(void)
1367c1bdd86dSPavan Nikhilesh {
1368c1bdd86dSPavan Nikhilesh 	struct rte_event_dev_info info;
1369c1bdd86dSPavan Nikhilesh 	int rc;
1370c1bdd86dSPavan Nikhilesh 
1371c1bdd86dSPavan Nikhilesh 	rte_event_dev_info_get(TEST_DEV_ID, &info);
1372c1bdd86dSPavan Nikhilesh 	if ((info.event_dev_cap & RTE_EVENT_DEV_CAP_PER_PORT_PRESCHEDULE) == 0)
1373c1bdd86dSPavan Nikhilesh 		return TEST_SKIPPED;
1374c1bdd86dSPavan Nikhilesh 
1375c1bdd86dSPavan Nikhilesh 	rc = preschedule_configure(RTE_EVENT_PRESCHEDULE_NONE, &info);
1376c1bdd86dSPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to configure eventdev");
1377c1bdd86dSPavan Nikhilesh 	rc = preschedule_test(RTE_EVENT_PRESCHEDULE_NONE, "RTE_EVENT_PRESCHEDULE_NONE", 1);
1378c1bdd86dSPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to test per port preschedule RTE_EVENT_PRESCHEDULE_NONE");
1379c1bdd86dSPavan Nikhilesh 
1380c1bdd86dSPavan Nikhilesh 	rc = preschedule_test(RTE_EVENT_PRESCHEDULE, "RTE_EVENT_PRESCHEDULE", 1);
1381c1bdd86dSPavan Nikhilesh 	TEST_ASSERT_SUCCESS(rc, "Failed to test per port preschedule RTE_EVENT_PRESCHEDULE");
1382c1bdd86dSPavan Nikhilesh 
1383c1bdd86dSPavan Nikhilesh 	if (info.event_dev_cap & RTE_EVENT_DEV_CAP_EVENT_PRESCHEDULE_ADAPTIVE) {
1384c1bdd86dSPavan Nikhilesh 		rc = preschedule_test(RTE_EVENT_PRESCHEDULE_ADAPTIVE,
1385c1bdd86dSPavan Nikhilesh 				      "RTE_EVENT_PRESCHEDULE_ADAPTIVE", 1);
1386c1bdd86dSPavan Nikhilesh 		TEST_ASSERT_SUCCESS(
1387c1bdd86dSPavan Nikhilesh 			rc, "Failed to test per port preschedule RTE_EVENT_PRESCHEDULE_ADAPTIVE");
1388c1bdd86dSPavan Nikhilesh 	}
1389c1bdd86dSPavan Nikhilesh 
1390c1bdd86dSPavan Nikhilesh 	return TEST_SUCCESS;
1391c1bdd86dSPavan Nikhilesh }
1392c1bdd86dSPavan Nikhilesh 
1393c1bdd86dSPavan Nikhilesh static int
1394a9de470cSBruce Richardson test_eventdev_close(void)
1395a9de470cSBruce Richardson {
1396a9de470cSBruce Richardson 	rte_event_dev_stop(TEST_DEV_ID);
1397a9de470cSBruce Richardson 	return rte_event_dev_close(TEST_DEV_ID);
1398a9de470cSBruce Richardson }
1399a9de470cSBruce Richardson 
1400a9de470cSBruce Richardson static struct unit_test_suite eventdev_common_testsuite  = {
1401a9de470cSBruce Richardson 	.suite_name = "eventdev common code unit test suite",
1402a9de470cSBruce Richardson 	.setup = testsuite_setup,
1403a9de470cSBruce Richardson 	.teardown = testsuite_teardown,
1404a9de470cSBruce Richardson 	.unit_test_cases = {
1405a9de470cSBruce Richardson 		TEST_CASE_ST(NULL, NULL,
1406a9de470cSBruce Richardson 			test_eventdev_count),
1407a9de470cSBruce Richardson 		TEST_CASE_ST(NULL, NULL,
1408a9de470cSBruce Richardson 			test_eventdev_get_dev_id),
1409a9de470cSBruce Richardson 		TEST_CASE_ST(NULL, NULL,
1410a9de470cSBruce Richardson 			test_eventdev_socket_id),
1411a9de470cSBruce Richardson 		TEST_CASE_ST(NULL, NULL,
1412a9de470cSBruce Richardson 			test_eventdev_info_get),
1413a9de470cSBruce Richardson 		TEST_CASE_ST(NULL, NULL,
1414a9de470cSBruce Richardson 			test_eventdev_configure),
1415a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1416a9de470cSBruce Richardson 			test_eventdev_queue_default_conf_get),
1417a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1418a9de470cSBruce Richardson 			test_eventdev_queue_setup),
1419a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1420a9de470cSBruce Richardson 			test_eventdev_queue_count),
1421a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1422a9de470cSBruce Richardson 			test_eventdev_queue_attr_priority),
1423deb450c4SShijith Thotton 		TEST_CASE_ST(eventdev_configure_setup, eventdev_stop_device,
1424deb450c4SShijith Thotton 			test_eventdev_queue_attr_priority_runtime),
1425deb450c4SShijith Thotton 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1426deb450c4SShijith Thotton 			test_eventdev_queue_attr_weight_runtime),
1427deb450c4SShijith Thotton 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1428deb450c4SShijith Thotton 			test_eventdev_queue_attr_affinity_runtime),
1429a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1430a9de470cSBruce Richardson 			test_eventdev_queue_attr_nb_atomic_flows),
1431a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1432a9de470cSBruce Richardson 			test_eventdev_queue_attr_nb_atomic_order_sequences),
1433a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1434a9de470cSBruce Richardson 			test_eventdev_queue_attr_event_queue_cfg),
1435a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1436a9de470cSBruce Richardson 			test_eventdev_port_default_conf_get),
1437a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1438a9de470cSBruce Richardson 			test_eventdev_port_setup),
1439a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1440a9de470cSBruce Richardson 			test_eventdev_port_attr_dequeue_depth),
1441a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1442a9de470cSBruce Richardson 			test_eventdev_port_attr_enqueue_depth),
1443a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1444a9de470cSBruce Richardson 			test_eventdev_port_attr_new_event_threshold),
1445a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1446a9de470cSBruce Richardson 			test_eventdev_port_count),
1447a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_configure_setup, NULL,
1448a9de470cSBruce Richardson 			test_eventdev_timeout_ticks),
1449a9de470cSBruce Richardson 		TEST_CASE_ST(NULL, NULL,
1450a9de470cSBruce Richardson 			test_eventdev_start_stop),
1451d007a7f3SPavan Nikhilesh 		TEST_CASE_ST(eventdev_configure_setup, eventdev_stop_device,
1452d007a7f3SPavan Nikhilesh 			test_eventdev_profile_switch),
1453b74f298fSPavan Nikhilesh 		TEST_CASE_ST(eventdev_configure_setup, eventdev_stop_device,
1454acc65ee3SPavan Nikhilesh 			test_eventdev_preschedule_configure),
1455c1bdd86dSPavan Nikhilesh 		TEST_CASE_ST(eventdev_configure_setup, eventdev_stop_device,
1456c1bdd86dSPavan Nikhilesh 			test_eventdev_preschedule_modify),
1457a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_setup_device, eventdev_stop_device,
1458a9de470cSBruce Richardson 			test_eventdev_link),
1459a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_setup_device, eventdev_stop_device,
1460a9de470cSBruce Richardson 			test_eventdev_unlink),
1461a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_setup_device, eventdev_stop_device,
1462a9de470cSBruce Richardson 			test_eventdev_link_get),
1463a9de470cSBruce Richardson 		TEST_CASE_ST(eventdev_setup_device, NULL,
1464a9de470cSBruce Richardson 			test_eventdev_close),
1465a9de470cSBruce Richardson 		TEST_CASES_END() /**< NULL terminate unit test array */
1466a9de470cSBruce Richardson 	}
1467a9de470cSBruce Richardson };
1468a9de470cSBruce Richardson 
1469a9de470cSBruce Richardson static int
1470a9de470cSBruce Richardson test_eventdev_common(void)
1471a9de470cSBruce Richardson {
1472a9de470cSBruce Richardson 	return unit_test_suite_runner(&eventdev_common_testsuite);
1473a9de470cSBruce Richardson }
1474a9de470cSBruce Richardson 
1475a9de470cSBruce Richardson static int
1476a9de470cSBruce Richardson test_eventdev_selftest_impl(const char *pmd, const char *opts)
1477a9de470cSBruce Richardson {
14782155b9caSPavan Nikhilesh 	int ret = 0;
14792155b9caSPavan Nikhilesh 
1480e0f4a0edSDavid Marchand 	if (rte_event_dev_get_dev_id(pmd) == -ENODEV)
14812155b9caSPavan Nikhilesh 		ret = rte_vdev_init(pmd, opts);
14822155b9caSPavan Nikhilesh 	if (ret)
1483e0f4a0edSDavid Marchand 		return TEST_SKIPPED;
14842155b9caSPavan Nikhilesh 
1485a9de470cSBruce Richardson 	return rte_event_dev_selftest(rte_event_dev_get_dev_id(pmd));
1486a9de470cSBruce Richardson }
1487a9de470cSBruce Richardson 
1488a9de470cSBruce Richardson static int
1489a9de470cSBruce Richardson test_eventdev_selftest_sw(void)
1490a9de470cSBruce Richardson {
1491a9de470cSBruce Richardson 	return test_eventdev_selftest_impl("event_sw", "");
1492a9de470cSBruce Richardson }
1493a9de470cSBruce Richardson 
1494a9de470cSBruce Richardson static int
1495a9de470cSBruce Richardson test_eventdev_selftest_octeontx(void)
1496a9de470cSBruce Richardson {
1497a9de470cSBruce Richardson 	return test_eventdev_selftest_impl("event_octeontx", "");
1498a9de470cSBruce Richardson }
1499a9de470cSBruce Richardson 
150062561532SPavan Nikhilesh static int
1501a439f622SHemant Agrawal test_eventdev_selftest_dpaa2(void)
1502a439f622SHemant Agrawal {
1503a439f622SHemant Agrawal 	return test_eventdev_selftest_impl("event_dpaa2", "");
1504a439f622SHemant Agrawal }
1505a439f622SHemant Agrawal 
15066f1b8288STimothy McDaniel static int
15076f1b8288STimothy McDaniel test_eventdev_selftest_dlb2(void)
15086f1b8288STimothy McDaniel {
15096f1b8288STimothy McDaniel 	return test_eventdev_selftest_impl("dlb2_event", "");
15106f1b8288STimothy McDaniel }
15116f1b8288STimothy McDaniel 
151223515064SPavan Nikhilesh static int
151323515064SPavan Nikhilesh test_eventdev_selftest_cn9k(void)
151423515064SPavan Nikhilesh {
151523515064SPavan Nikhilesh 	return test_eventdev_selftest_impl("event_cn9k", "");
151623515064SPavan Nikhilesh }
151723515064SPavan Nikhilesh 
151823515064SPavan Nikhilesh static int
151923515064SPavan Nikhilesh test_eventdev_selftest_cn10k(void)
152023515064SPavan Nikhilesh {
152123515064SPavan Nikhilesh 	return test_eventdev_selftest_impl("event_cn10k", "");
152223515064SPavan Nikhilesh }
152323515064SPavan Nikhilesh 
1524*6305afeeSPavan Nikhilesh static int
1525*6305afeeSPavan Nikhilesh test_eventdev_selftest_cn20k(void)
1526*6305afeeSPavan Nikhilesh {
1527*6305afeeSPavan Nikhilesh 	return test_eventdev_selftest_impl("event_cn20k", "");
1528*6305afeeSPavan Nikhilesh }
1529*6305afeeSPavan Nikhilesh 
15303c60274cSJie Zhou #endif /* !RTE_EXEC_ENV_WINDOWS */
15313c60274cSJie Zhou 
1532e0a8442cSBruce Richardson REGISTER_FAST_TEST(eventdev_common_autotest, true, true, test_eventdev_common);
15333c60274cSJie Zhou 
15343c60274cSJie Zhou #ifndef RTE_EXEC_ENV_WINDOWS
1535aee48294SBruce Richardson REGISTER_FAST_TEST(eventdev_selftest_sw, true, true, test_eventdev_selftest_sw);
1536d83fb967SDavid Marchand REGISTER_DRIVER_TEST(eventdev_selftest_octeontx, test_eventdev_selftest_octeontx);
15373864b310SBruce Richardson REGISTER_DRIVER_TEST(eventdev_selftest_dpaa2, test_eventdev_selftest_dpaa2);
15383864b310SBruce Richardson REGISTER_DRIVER_TEST(eventdev_selftest_dlb2, test_eventdev_selftest_dlb2);
15393864b310SBruce Richardson REGISTER_DRIVER_TEST(eventdev_selftest_cn9k, test_eventdev_selftest_cn9k);
15403864b310SBruce Richardson REGISTER_DRIVER_TEST(eventdev_selftest_cn10k, test_eventdev_selftest_cn10k);
1541*6305afeeSPavan Nikhilesh REGISTER_DRIVER_TEST(eventdev_selftest_cn20k, test_eventdev_selftest_cn20k);
15423c60274cSJie Zhou 
15433c60274cSJie Zhou #endif /* !RTE_EXEC_ENV_WINDOWS */
1544