From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavan Nikhilesh Subject: [PATCH 6/7] event/sw: add selftest to device arguments Date: Wed, 13 Dec 2017 00:57:12 +0530 Message-ID: <20171212192713.17620-6-pbhagavatula@caviumnetworks.com> References: <20171212192713.17620-1-pbhagavatula@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain Cc: dev@dpdk.org, Pavan Nikhilesh To: jerin.jacob@caviumnetworks.com, bruce.richardson@intel.com, harry.van.haaren@intel.com, gage.eads@intel.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, liang.j.ma@intel.com Return-path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0079.outbound.protection.outlook.com [104.47.34.79]) by dpdk.org (Postfix) with ESMTP id 7833E1B161 for ; Tue, 12 Dec 2017 20:28:31 +0100 (CET) In-Reply-To: <20171212192713.17620-1-pbhagavatula@caviumnetworks.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add selftest as a device argument that can be enabled by suppling 'self_test=1' as a vdev parameter --vdev="event_sw,self_test=1" The selftest is run after vdev creation is successfully complete. Signed-off-by: Pavan Nikhilesh --- drivers/event/sw/Makefile | 2 ++ drivers/event/sw/sw_evdev.c | 23 +++++++++++++++++++++++ drivers/event/sw/sw_evdev.h | 1 + 3 files changed, 26 insertions(+) diff --git a/drivers/event/sw/Makefile b/drivers/event/sw/Makefile index 2f2b67bac..d4f7677fe 100644 --- a/drivers/event/sw/Makefile +++ b/drivers/event/sw/Makefile @@ -44,6 +44,7 @@ CFLAGS += -Wno-missing-field-initializers endif endif LDLIBS += -lrte_eal -lrte_eventdev -lrte_kvargs -lrte_ring +LDLIBS += -lrte_mempool -lrte_mbuf LDLIBS += -lrte_bus_vdev # library version @@ -57,6 +58,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += sw_evdev.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += sw_evdev_worker.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += sw_evdev_scheduler.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += sw_evdev_xstats.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += selftest_sw.c # export include files SYMLINK-y-include += diff --git a/drivers/event/sw/sw_evdev.c b/drivers/event/sw/sw_evdev.c index 5b4a20889..7c16d0de6 100644 --- a/drivers/event/sw/sw_evdev.c +++ b/drivers/event/sw/sw_evdev.c @@ -47,6 +47,7 @@ #define NUMA_NODE_ARG "numa_node" #define SCHED_QUANTA_ARG "sched_quanta" #define CREDIT_QUANTA_ARG "credit_quanta" +#define SELF_TEST_ARG "self_test" static void sw_info_get(struct rte_eventdev *dev, struct rte_event_dev_info *info); @@ -756,6 +757,13 @@ set_credit_quanta(const char *key __rte_unused, const char *value, void *opaque) return 0; } +static int +set_self_test(const char *key __rte_unused, const char *value, void *opaque) +{ + int *test = opaque; + *test = !!atoi(value); + return 0; +} static int32_t sw_sched_service_func(void *args) { @@ -796,6 +804,7 @@ sw_probe(struct rte_vdev_device *vdev) NUMA_NODE_ARG, SCHED_QUANTA_ARG, CREDIT_QUANTA_ARG, + SELF_TEST_ARG, NULL }; const char *name; @@ -805,6 +814,7 @@ sw_probe(struct rte_vdev_device *vdev) int socket_id = rte_socket_id(); int sched_quanta = SW_DEFAULT_SCHED_QUANTA; int credit_quanta = SW_DEFAULT_CREDIT_QUANTA; + int self_test = 0; name = rte_vdev_device_name(vdev); params = rte_vdev_device_args(vdev); @@ -846,6 +856,16 @@ sw_probe(struct rte_vdev_device *vdev) return ret; } + ret = rte_kvargs_process(kvlist, SELF_TEST_ARG, + set_self_test, &self_test); + if (ret != 0) { + SW_LOG_ERR( + "%s: Error parsing self test parameter", + name); + rte_kvargs_free(kvlist); + return ret; + } + rte_kvargs_free(kvlist); } } @@ -897,6 +917,9 @@ sw_probe(struct rte_vdev_device *vdev) dev->data->service_inited = 1; dev->data->service_id = sw->service_id; + if (self_test) + test_sw_eventdev(); + return 0; } diff --git a/drivers/event/sw/sw_evdev.h b/drivers/event/sw/sw_evdev.h index 085938887..838ff0b58 100644 --- a/drivers/event/sw/sw_evdev.h +++ b/drivers/event/sw/sw_evdev.h @@ -333,5 +333,6 @@ int sw_xstats_reset(struct rte_eventdev *dev, const uint32_t ids[], uint32_t nb_ids); +void test_sw_eventdev(void); #endif /* _SW_EVDEV_H_ */ -- 2.14.1