From patchwork Fri Jun 21 15:56:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 55173 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 17CB11D558; Fri, 21 Jun 2019 17:57:17 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 31FB71D518; Fri, 21 Jun 2019 17:57:15 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jun 2019 08:57:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,400,1557212400"; d="scan'208";a="183441162" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.2]) by fmsmga004.fm.intel.com with ESMTP; 21 Jun 2019 08:57:12 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , shreyansh.jain@nxp.com, stable@dpdk.org Date: Fri, 21 Jun 2019 16:56:56 +0100 Message-Id: <20190621155659.29297-2-bruce.richardson@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190621155659.29297-1-bruce.richardson@intel.com> References: <20190619170802.7691-1-bruce.richardson@intel.com> <20190621155659.29297-1-bruce.richardson@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 1/4] raw/skeleton: fix failing test case X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Rawdev unit test for setting and getting parameters is failing because of a pointer value being dereferenced after the memory it pointed to is freed. The freeing of the malloced memory is difficult when using asserts to cause early abort of the test cases, since that can leak memory. The original placement of the free call caused a memory leak if the test finished early, while a fix for that leak caused the test to fail at times due to the memory variable being referenced after free. For a case like this, using stack rather than heap memory is just easier and avoids all issues. Fixes: 55ca1b0f2151 ("raw/skeleton: add test cases") Fixes: 88d0e47880ec ("raw/skeleton: fix memory leak on test failure") Cc: shreyansh.jain@nxp.com Cc: stable@dpdk.org Signed-off-by: Bruce Richardson --- drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c index 359c9e296..a0961c77b 100644 --- a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c +++ b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c @@ -274,17 +274,14 @@ static int test_rawdev_attr_set_get(void) { int ret; - int *dummy_value; + int dummy_value_store; + int *dummy_value = &dummy_value_store; uint64_t ret_value; /* Set an attribute and fetch it */ 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 = 200; ret = rte_rawdev_set_attr(TEST_DEV_ID, "Test2", (uintptr_t)dummy_value); @@ -294,7 +291,6 @@ test_rawdev_attr_set_get(void) "Attribute (Test1) not set correctly (%" PRIu64 ")", ret_value); - free(dummy_value); ret_value = 0; ret = rte_rawdev_get_attr(TEST_DEV_ID, "Test2", &ret_value); From patchwork Fri Jun 21 15:56:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 55174 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 475101D568; Fri, 21 Jun 2019 17:57:21 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id E4B3A1D55F; Fri, 21 Jun 2019 17:57:18 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jun 2019 08:57:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,400,1557212400"; d="scan'208";a="183441169" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.2]) by fmsmga004.fm.intel.com with ESMTP; 21 Jun 2019 08:57:17 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , shreyansh.jain@nxp.com, stable@dpdk.org Date: Fri, 21 Jun 2019 16:56:57 +0100 Message-Id: <20190621155659.29297-3-bruce.richardson@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190621155659.29297-1-bruce.richardson@intel.com> References: <20190619170802.7691-1-bruce.richardson@intel.com> <20190621155659.29297-1-bruce.richardson@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 2/4] app/test: add missing rawdev test to meson build X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" the test_rawdev.c file was missing from the meson.build file, and the test case from the list of test commands. Fixes: 55ca1b0f2151 ("raw/skeleton: add test cases") Cc: shreyansh.jain@nxp.com Cc: stable@dpdk.org Signed-off-by: Bruce Richardson --- app/test/meson.build | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/test/meson.build b/app/test/meson.build index 4de856f93..9b52ec9d7 100644 --- a/app/test/meson.build +++ b/app/test/meson.build @@ -89,6 +89,7 @@ test_sources = files('commands.c', 'test_power_acpi_cpufreq.c', 'test_power_kvm_vm.c', 'test_prefetch.c', + 'test_rawdev.c', 'test_rcu_qsbr.c', 'test_rcu_qsbr_perf.c', 'test_reciprocal_division.c', @@ -140,6 +141,7 @@ test_deps = ['acl', 'metrics', 'pipeline', 'port', + 'rawdev', 'rcu', 'reorder', 'ring', @@ -179,6 +181,7 @@ fast_parallel_test_names = [ 'multiprocess_autotest', 'per_lcore_autotest', 'prefetch_autotest', + 'rawdev_autotest', 'rcu_qsbr_autotest', 'red_autotest', 'ring_autotest', From patchwork Fri Jun 21 15:56:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 55175 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 665531D569; Fri, 21 Jun 2019 17:57:24 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 9D6A41D569 for ; Fri, 21 Jun 2019 17:57:22 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jun 2019 08:57:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,400,1557212400"; d="scan'208";a="183441175" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.2]) by fmsmga004.fm.intel.com with ESMTP; 21 Jun 2019 08:57:21 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , shreyansh.jain@nxp.com Date: Fri, 21 Jun 2019 16:56:58 +0100 Message-Id: <20190621155659.29297-4-bruce.richardson@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190621155659.29297-1-bruce.richardson@intel.com> References: <20190619170802.7691-1-bruce.richardson@intel.com> <20190621155659.29297-1-bruce.richardson@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 3/4] raw/skeleton: remove compile-time constant for device id X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use a variable value rather than compile-time constant zero as the device id for the skeleton rawdev tests. This ensures we can make the tests work even if other rawdevs are present. Cc: shreyansh.jain@nxp.com Signed-off-by: Bruce Richardson --- .../skeleton_rawdev/skeleton_rawdev_test.c | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c index a0961c77b..d7177ea75 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); @@ -199,7 +200,7 @@ test_rawdev_queue_count(void) unsigned int q_count; /* Get the current configuration */ - q_count = rte_rawdev_queue_count(TEST_DEV_ID); + 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; @@ -216,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)", @@ -230,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, @@ -254,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, @@ -279,21 +280,21 @@ test_rawdev_attr_set_get(void) 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 = 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); + ret = rte_rawdev_get_attr(test_dev_id, "Test2", &ret_value); RTE_TEST_ASSERT_EQUAL(*((int *)(uintptr_t)ret_value), 200, "Attribute (Test2) not set correctly (%" PRIu64 ")", ret_value); @@ -317,7 +318,7 @@ test_rawdev_start_stop(void) RTE_TEST_ASSERT(dummy_firmware != NULL, "Failed to create firmware memory backing"); - ret = rte_rawdev_firmware_load(TEST_DEV_ID, dummy_firmware); + 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 @@ -326,8 +327,8 @@ test_rawdev_start_stop(void) 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_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); @@ -335,8 +336,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); @@ -345,7 +346,7 @@ test_rawdev_start_stop(void) rdev_conf_get.device_state); /* Unloading the firmware once device is stopped */ - ret = rte_rawdev_firmware_unload(TEST_DEV_ID); + ret = rte_rawdev_firmware_unload(test_dev_id); RTE_TEST_ASSERT_SUCCESS(ret, "Failed to unload firmware (%d)", ret); return TEST_SUCCESS; @@ -366,7 +367,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, @@ -376,7 +377,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, From patchwork Fri Jun 21 15:56:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 55176 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D502E1D582; Fri, 21 Jun 2019 17:57:26 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 73BB41D556 for ; Fri, 21 Jun 2019 17:57:25 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Jun 2019 08:57:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,400,1557212400"; d="scan'208";a="183441182" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.2]) by fmsmga004.fm.intel.com with ESMTP; 21 Jun 2019 08:57:24 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , shreyansh.jain@nxp.com Date: Fri, 21 Jun 2019 16:56:59 +0100 Message-Id: <20190621155659.29297-5-bruce.richardson@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190621155659.29297-1-bruce.richardson@intel.com> References: <20190619170802.7691-1-bruce.richardson@intel.com> <20190621155659.29297-1-bruce.richardson@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 4/4] rawdev: pass device id as parameter to selftest X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When running self-tests, the driver needs to know the device on which to run the tests, so we need to take the device ID as parameter. Only the skeleton driver is providing this selftest capability right now, so we can easily update it for this change. Cc: shreyansh.jain@nxp.com Signed-off-by: Bruce Richardson Acked-by: Shreyansh Jain --- Since this change only affects the internals of the drivers, it's not an ABI or API change --- drivers/raw/skeleton_rawdev/skeleton_rawdev.c | 8 +++++--- drivers/raw/skeleton_rawdev/skeleton_rawdev.h | 2 +- drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c | 3 ++- lib/librte_rawdev/rte_rawdev.c | 2 +- lib/librte_rawdev/rte_rawdev_pmd.h | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev.c b/drivers/raw/skeleton_rawdev/skeleton_rawdev.c index 709be7691..42471fbd1 100644 --- a/drivers/raw/skeleton_rawdev/skeleton_rawdev.c +++ b/drivers/raw/skeleton_rawdev/skeleton_rawdev.c @@ -583,6 +583,8 @@ skeleton_rawdev_create(const char *name, goto cleanup; } + ret = rawdev->dev_id; /* return the rawdev id of new device */ + rawdev->dev_ops = &skeleton_rawdev_ops; rawdev->device = &vdev->device; @@ -720,19 +722,19 @@ skeleton_rawdev_probe(struct rte_vdev_device *vdev) /* In case of invalid argument, selftest != 1; ignore other values */ ret = skeleton_rawdev_create(name, vdev, rte_socket_id()); - if (!ret) { + if (ret >= 0) { /* In case command line argument for 'selftest' was passed; * if invalid arguments were passed, execution continues but * without selftest. */ if (selftest == 1) - test_rawdev_skeldev(); + test_rawdev_skeldev(ret); } /* Device instance created; Second instance not possible */ skeldev_init_once = 1; - return ret; + return ret < 0 ? ret : 0; } static int diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev.h b/drivers/raw/skeleton_rawdev/skeleton_rawdev.h index 5045b5922..c3f92e72a 100644 --- a/drivers/raw/skeleton_rawdev/skeleton_rawdev.h +++ b/drivers/raw/skeleton_rawdev/skeleton_rawdev.h @@ -131,6 +131,6 @@ skeleton_rawdev_get_priv(const struct rte_rawdev *rawdev) return rawdev->dev_private; } -int test_rawdev_skeldev(void); +int test_rawdev_skeldev(uint16_t dev_id); #endif /* __SKELETON_RAWDEV_H__ */ diff --git a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c index d7177ea75..ad700e21c 100644 --- a/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c +++ b/drivers/raw/skeleton_rawdev/skeleton_rawdev_test.c @@ -427,8 +427,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); diff --git a/lib/librte_rawdev/rte_rawdev.c b/lib/librte_rawdev/rte_rawdev.c index 2b2f45d7c..15de2d413 100644 --- a/lib/librte_rawdev/rte_rawdev.c +++ b/lib/librte_rawdev/rte_rawdev.c @@ -378,7 +378,7 @@ rte_rawdev_selftest(uint16_t dev_id) struct rte_rawdev *dev = &rte_rawdevs[dev_id]; RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_selftest, -ENOTSUP); - return (*dev->dev_ops->dev_selftest)(); + return (*dev->dev_ops->dev_selftest)(dev_id); } int diff --git a/lib/librte_rawdev/rte_rawdev_pmd.h b/lib/librte_rawdev/rte_rawdev_pmd.h index 5e6cf1d16..aa6af4a37 100644 --- a/lib/librte_rawdev/rte_rawdev_pmd.h +++ b/lib/librte_rawdev/rte_rawdev_pmd.h @@ -499,7 +499,7 @@ typedef int (*rawdev_firmware_unload_t)(struct rte_rawdev *dev); * @return * Return 0 on success */ -typedef int (*rawdev_selftest_t)(void); +typedef int (*rawdev_selftest_t)(uint16_t dev_id); /** Rawdevice operations function pointer table */ struct rte_rawdev_ops {