raw/skeleton: fix device start test
authorShreyansh Jain <shreyansh.jain@nxp.com>
Tue, 6 Feb 2018 06:43:38 +0000 (12:13 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 6 Feb 2018 16:32:34 +0000 (17:32 +0100)
Device can only be started if firmware is loaded, as per Skeleton
rawdev driver semantics. This patch fixes original implementation
which attempted to start the device without loading firmware.

Fixes: 55ca1b0f2151 ("raw/skeleton: add test cases")
Cc: shreyansh.jain@nxp.com
Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c

index c7931d8..795f24b 100644 (file)
@@ -297,10 +297,25 @@ 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;
 
+       /* 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,
@@ -319,6 +334,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;
 }