X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fraw%2Fskeleton_rawdev%2Fskeleton_rawdev_test.c;h=9ecfdee8188900553fef39828a7bcd00f6277dd1;hb=e66a5a827064f27258e54f3065fcf515936b7513;hp=c7931d8694f6f66d64203756654c5e847594e8df;hpb=55ca1b0f2151bcda099ce0e97321d1fbb48c51bd;p=dpdk.git diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c index c7931d8694..9ecfdee818 100644 --- a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c +++ b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c @@ -14,7 +14,6 @@ /* Using relative path as skeleton_rawdev is not part of exported headers */ #include "skeleton_rawdev.h" -#define TEST_DEV_ID 0 #define TEST_DEV_NAME "rawdev_skeleton" #define SKELDEV_LOGS(level, fmt, args...) \ @@ -37,6 +36,8 @@ static int passed; static int failed; static int unsupported; +static uint16_t test_dev_id; + static int testsuite_setup(void) { @@ -88,7 +89,7 @@ static int test_rawdev_socket_id(void) { int socket_id; - socket_id = rte_rawdev_socket_id(TEST_DEV_ID); + socket_id = rte_rawdev_socket_id(test_dev_id); RTE_TEST_ASSERT(socket_id != -EINVAL, "Failed to get socket_id %d", socket_id); socket_id = rte_rawdev_socket_id(RTE_RAWDEV_MAX_DEVS); @@ -105,12 +106,12 @@ test_rawdev_info_get(void) struct rte_rawdev_info rdev_info = {0}; struct skeleton_rawdev_conf skel_conf = {0}; - ret = rte_rawdev_info_get(TEST_DEV_ID, NULL); + ret = rte_rawdev_info_get(test_dev_id, NULL); RTE_TEST_ASSERT(ret == -EINVAL, "Expected -EINVAL, %d", ret); rdev_info.dev_private = &skel_conf; - ret = rte_rawdev_info_get(TEST_DEV_ID, &rdev_info); + ret = rte_rawdev_info_get(test_dev_id, &rdev_info); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to get raw dev info"); return TEST_SUCCESS; @@ -125,7 +126,7 @@ test_rawdev_configure(void) struct skeleton_rawdev_conf rdev_conf_get = {0}; /* Check invalid configuration */ - ret = rte_rawdev_configure(TEST_DEV_ID, NULL); + ret = rte_rawdev_configure(test_dev_id, NULL); RTE_TEST_ASSERT(ret == -EINVAL, "Null configure; Expected -EINVAL, got %d", ret); @@ -135,12 +136,12 @@ test_rawdev_configure(void) SKELETON_CAPA_FW_RESET; rdev_info.dev_private = &rdev_conf_set; - ret = rte_rawdev_configure(TEST_DEV_ID, + ret = rte_rawdev_configure(test_dev_id, (rte_rawdev_obj_t)&rdev_info); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to configure rawdev (%d)", ret); rdev_info.dev_private = &rdev_conf_get; - ret = rte_rawdev_info_get(TEST_DEV_ID, + ret = rte_rawdev_info_get(test_dev_id, (rte_rawdev_obj_t)&rdev_info); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to obtain rawdev configuration (%d)", @@ -168,7 +169,7 @@ test_rawdev_queue_default_conf_get(void) /* Get the current configuration */ rdev_info.dev_private = &rdev_conf_get; - ret = rte_rawdev_info_get(TEST_DEV_ID, + ret = rte_rawdev_info_get(test_dev_id, (rte_rawdev_obj_t)&rdev_info); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to obtain rawdev configuration (%d)", ret); @@ -181,7 +182,7 @@ test_rawdev_queue_default_conf_get(void) * depth = DEF_DEPTH */ for (i = 0; i < rdev_conf_get.num_queues; i++) { - rte_rawdev_queue_conf_get(TEST_DEV_ID, i, &q); + rte_rawdev_queue_conf_get(test_dev_id, i, &q); RTE_TEST_ASSERT_EQUAL(q.depth, SKELETON_QUEUE_DEF_DEPTH, "Invalid default depth of queue (%d)", q.depth); @@ -193,6 +194,18 @@ test_rawdev_queue_default_conf_get(void) return TEST_SUCCESS; } +static int +test_rawdev_queue_count(void) +{ + unsigned int q_count; + + /* Get the current configuration */ + q_count = rte_rawdev_queue_count(test_dev_id); + RTE_TEST_ASSERT_EQUAL(q_count, 1, "Invalid queue count (%d)", q_count); + + return TEST_SUCCESS; +} + static int test_rawdev_queue_setup(void) { @@ -204,7 +217,7 @@ test_rawdev_queue_setup(void) /* Get the current configuration */ rdev_info.dev_private = &rdev_conf_get; - ret = rte_rawdev_info_get(TEST_DEV_ID, + ret = rte_rawdev_info_get(test_dev_id, (rte_rawdev_obj_t)&rdev_info); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to obtain rawdev configuration (%d)", @@ -218,11 +231,11 @@ test_rawdev_queue_setup(void) /* Modify the queue depth for Queue 0 and attach it */ qset.depth = 15; qset.state = SKELETON_QUEUE_ATTACH; - ret = rte_rawdev_queue_setup(TEST_DEV_ID, 0, &qset); + ret = rte_rawdev_queue_setup(test_dev_id, 0, &qset); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to setup queue (%d)", ret); /* Now, fetching the queue 0 should show depth as 15 */ - ret = rte_rawdev_queue_conf_get(TEST_DEV_ID, 0, &qget); + ret = rte_rawdev_queue_conf_get(test_dev_id, 0, &qget); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to get queue config (%d)", ret); RTE_TEST_ASSERT_EQUAL(qset.depth, qget.depth, @@ -242,11 +255,11 @@ test_rawdev_queue_release(void) struct skeleton_rawdev_queue qget = {0}; /* Now, fetching the queue 0 should show depth as 100 */ - ret = rte_rawdev_queue_release(TEST_DEV_ID, 0); + ret = rte_rawdev_queue_release(test_dev_id, 0); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to release queue 0; (%d)", ret); /* Now, fetching the queue 0 should show depth as default */ - ret = rte_rawdev_queue_conf_get(TEST_DEV_ID, 0, &qget); + ret = rte_rawdev_queue_conf_get(test_dev_id, 0, &qget); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to get queue config (%d)", ret); RTE_TEST_ASSERT_EQUAL(qget.depth, SKELETON_QUEUE_DEF_DEPTH, @@ -262,29 +275,26 @@ static int test_rawdev_attr_set_get(void) { int ret; - int *dummy_value; + int *dummy_value, set_value; uint64_t ret_value; /* Set an attribute and fetch it */ - ret = rte_rawdev_set_attr(TEST_DEV_ID, "Test1", 100); + ret = rte_rawdev_set_attr(test_dev_id, "Test1", 100); RTE_TEST_ASSERT(!ret, "Unable to set an attribute (Test1)"); - dummy_value = malloc(sizeof(int)); - if (!dummy_value) - RTE_TEST_ASSERT(1, "Unable to allocate memory (dummy_value)"); - + dummy_value = &set_value; *dummy_value = 200; - ret = rte_rawdev_set_attr(TEST_DEV_ID, "Test2", (uintptr_t)dummy_value); + ret = rte_rawdev_set_attr(test_dev_id, "Test2", (uintptr_t)dummy_value); /* Check if attributes have been set */ - ret = rte_rawdev_get_attr(TEST_DEV_ID, "Test1", &ret_value); + ret = rte_rawdev_get_attr(test_dev_id, "Test1", &ret_value); RTE_TEST_ASSERT_EQUAL(ret_value, 100, "Attribute (Test1) not set correctly (%" PRIu64 ")", ret_value); ret_value = 0; - ret = rte_rawdev_get_attr(TEST_DEV_ID, "Test2", &ret_value); - RTE_TEST_ASSERT_EQUAL(*((int *)(uintptr_t)ret_value), 200, + ret = rte_rawdev_get_attr(test_dev_id, "Test2", &ret_value); + RTE_TEST_ASSERT_EQUAL(*((int *)(uintptr_t)ret_value), set_value, "Attribute (Test2) not set correctly (%" PRIu64 ")", ret_value); @@ -297,12 +307,27 @@ test_rawdev_start_stop(void) int ret; struct rte_rawdev_info rdev_info = {0}; struct skeleton_rawdev_conf rdev_conf_get = {0}; + char *dummy_firmware = NULL; /* Get the current configuration */ rdev_info.dev_private = &rdev_conf_get; - rte_rawdev_start(TEST_DEV_ID); - ret = rte_rawdev_info_get(TEST_DEV_ID, (rte_rawdev_obj_t)&rdev_info); + /* Load a firmware using a dummy address area */ + dummy_firmware = rte_zmalloc("RAWDEV SKELETON", sizeof(int) * 10, 0); + RTE_TEST_ASSERT(dummy_firmware != NULL, + "Failed to create firmware memory backing"); + + ret = rte_rawdev_firmware_load(test_dev_id, dummy_firmware); + RTE_TEST_ASSERT_SUCCESS(ret, "Firmware loading failed (%d)", ret); + + /* Skeleton doesn't do anything with the firmware area - that is dummy + * and can be removed. + */ + rte_free(dummy_firmware); + dummy_firmware = NULL; + + rte_rawdev_start(test_dev_id); + ret = rte_rawdev_info_get(test_dev_id, (rte_rawdev_obj_t)&rdev_info); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to obtain rawdev configuration (%d)", ret); @@ -310,8 +335,8 @@ test_rawdev_start_stop(void) "Device start failed. State is (%d)", rdev_conf_get.device_state); - rte_rawdev_stop(TEST_DEV_ID); - ret = rte_rawdev_info_get(TEST_DEV_ID, (rte_rawdev_obj_t)&rdev_info); + rte_rawdev_stop(test_dev_id); + ret = rte_rawdev_info_get(test_dev_id, (rte_rawdev_obj_t)&rdev_info); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to obtain rawdev configuration (%d)", ret); @@ -319,6 +344,10 @@ test_rawdev_start_stop(void) "Device stop failed. State is (%d)", rdev_conf_get.device_state); + /* Unloading the firmware once device is stopped */ + ret = rte_rawdev_firmware_unload(test_dev_id); + RTE_TEST_ASSERT_SUCCESS(ret, "Failed to unload firmware (%d)", ret); + return TEST_SUCCESS; } @@ -337,7 +366,7 @@ test_rawdev_enqdeq(void) snprintf(buffers[0].buf_addr, strlen(TEST_DEV_NAME) + 2, "%s%d", TEST_DEV_NAME, 0); - ret = rte_rawdev_enqueue_buffers(TEST_DEV_ID, + ret = rte_rawdev_enqueue_buffers(test_dev_id, (struct rte_rawdev_buf **)&buffers, count, &queue_id); RTE_TEST_ASSERT_EQUAL((unsigned int)ret, count, @@ -347,7 +376,7 @@ test_rawdev_enqdeq(void) if (!deq_buffers) goto cleanup; - ret = rte_rawdev_dequeue_buffers(TEST_DEV_ID, + ret = rte_rawdev_dequeue_buffers(test_dev_id, (struct rte_rawdev_buf **)&deq_buffers, count, &queue_id); RTE_TEST_ASSERT_EQUAL((unsigned int)ret, count, @@ -360,8 +389,6 @@ test_rawdev_enqdeq(void) cleanup: if (buffers[0].buf_addr) free(buffers[0].buf_addr); - if (deq_buffers) - free(deq_buffers); return TEST_FAILED; } @@ -399,8 +426,9 @@ static void skeldev_test_run(int (*setup)(void), } int -test_rawdev_skeldev(void) +test_rawdev_skeldev(uint16_t dev_id) { + test_dev_id = dev_id; testsuite_setup(); SKELDEV_TEST_RUN(NULL, NULL, test_rawdev_count); @@ -411,6 +439,7 @@ test_rawdev_skeldev(void) SKELDEV_TEST_RUN(test_rawdev_configure, NULL, test_rawdev_queue_default_conf_get); SKELDEV_TEST_RUN(test_rawdev_configure, NULL, test_rawdev_queue_setup); + SKELDEV_TEST_RUN(NULL, NULL, test_rawdev_queue_count); SKELDEV_TEST_RUN(test_rawdev_queue_setup, NULL, test_rawdev_queue_release); SKELDEV_TEST_RUN(NULL, NULL, test_rawdev_attr_set_get);