xref: /f-stack/dpdk/app/test/test_rawdev.c (revision 2d9fd380)
14418919fSjohnjiang /* SPDX-License-Identifier: BSD-3-Clause
24418919fSjohnjiang  * Copyright 2017 NXP
34418919fSjohnjiang  */
44418919fSjohnjiang #include <rte_common.h>
54418919fSjohnjiang #include <rte_mbuf.h>
64418919fSjohnjiang #include <rte_malloc.h>
74418919fSjohnjiang #include <rte_memcpy.h>
84418919fSjohnjiang #include <rte_dev.h>
94418919fSjohnjiang #include <rte_rawdev.h>
104418919fSjohnjiang #include <rte_bus_vdev.h>
114418919fSjohnjiang 
124418919fSjohnjiang #include "test.h"
134418919fSjohnjiang 
144418919fSjohnjiang static int
test_rawdev_selftest_impl(const char * pmd,const char * opts)154418919fSjohnjiang test_rawdev_selftest_impl(const char *pmd, const char *opts)
164418919fSjohnjiang {
17*2d9fd380Sjfb8856606 	int ret;
18*2d9fd380Sjfb8856606 
19*2d9fd380Sjfb8856606 	printf("\n### Test rawdev infrastructure using skeleton driver\n");
204418919fSjohnjiang 	rte_vdev_init(pmd, opts);
21*2d9fd380Sjfb8856606 	ret = rte_rawdev_selftest(rte_rawdev_get_dev_id(pmd));
22*2d9fd380Sjfb8856606 	rte_vdev_uninit(pmd);
23*2d9fd380Sjfb8856606 	return ret;
244418919fSjohnjiang }
254418919fSjohnjiang 
264418919fSjohnjiang static int
test_rawdev_selftest_skeleton(void)274418919fSjohnjiang test_rawdev_selftest_skeleton(void)
284418919fSjohnjiang {
294418919fSjohnjiang 	return test_rawdev_selftest_impl("rawdev_skeleton", "");
304418919fSjohnjiang }
314418919fSjohnjiang 
324418919fSjohnjiang static int
test_rawdev_selftests(void)33*2d9fd380Sjfb8856606 test_rawdev_selftests(void)
344418919fSjohnjiang {
354418919fSjohnjiang 	const int count = rte_rawdev_count();
36*2d9fd380Sjfb8856606 	int ret = 0;
374418919fSjohnjiang 	int i;
384418919fSjohnjiang 
39*2d9fd380Sjfb8856606 	/* basic sanity on rawdev infrastructure */
40*2d9fd380Sjfb8856606 	if (test_rawdev_selftest_skeleton() < 0)
41*2d9fd380Sjfb8856606 		return -1;
42*2d9fd380Sjfb8856606 
43*2d9fd380Sjfb8856606 	/* now run self-test on all rawdevs */
44*2d9fd380Sjfb8856606 	if (count > 0)
45*2d9fd380Sjfb8856606 		printf("\n### Run selftest on each available rawdev\n");
464418919fSjohnjiang 	for (i = 0; i < count; i++) {
47*2d9fd380Sjfb8856606 		int result = rte_rawdev_selftest(i);
48*2d9fd380Sjfb8856606 		printf("Rawdev %u (%s) selftest: %s\n", i,
49*2d9fd380Sjfb8856606 				rte_rawdevs[i].name,
50*2d9fd380Sjfb8856606 				result == 0 ? "Passed" : "Failed");
51*2d9fd380Sjfb8856606 		ret |=  result;
524418919fSjohnjiang 	}
534418919fSjohnjiang 
54*2d9fd380Sjfb8856606 	return ret;
554418919fSjohnjiang }
564418919fSjohnjiang 
57*2d9fd380Sjfb8856606 REGISTER_TEST_COMMAND(rawdev_autotest, test_rawdev_selftests);
58