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)154418919fSjohnjiangtest_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)274418919fSjohnjiangtest_rawdev_selftest_skeleton(void) 284418919fSjohnjiang { 294418919fSjohnjiang return test_rawdev_selftest_impl("rawdev_skeleton", ""); 304418919fSjohnjiang } 314418919fSjohnjiang 324418919fSjohnjiang static int test_rawdev_selftests(void)33*2d9fd380Sjfb8856606test_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