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.j...@nxp.com

Signed-off-by: Shreyansh Jain <shreyansh.j...@nxp.com>
---
v3:
 - Moving 'Fixes' below commit message
 - patch headline made specific

v2:
 - Fixed headline from drivers/raw to raw/skeleton_rawdev
 - checkpatch for spelling mistake

 drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c 
b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c
index c7931d869..795f24bcb 100644
--- a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c
+++ b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c
@@ -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;
 }
 
-- 
2.14.1

Reply via email to