[dpdk-dev] [RFC PATCH v5 2/5] eventtimer: add common code

Jerin Jacob jerin.jacob at caviumnetworks.com
Wed Dec 6 16:35:27 CET 2017


-----Original Message-----
> Date: Fri, 1 Dec 2017 14:00:55 -0600
> From: Erik Gabriel Carrillo <erik.g.carrillo at intel.com>
> To: pbhagavatula at caviumnetworks.com
> CC: dev at dpdk.org, jerin.jacob at caviumnetworks.com, nipun.gupta at nxp.com,
>  hemant.agrawal at nxp.com
> Subject: [RFC PATCH v5 2/5] eventtimer: add common code
> X-Mailer: git-send-email 1.7.10
> 
> This commit adds the logic that is shared by all event timer adapter
> drivers; the common code handles instance allocation and some
> initialization.
> 
> Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo at intel.com>
> ---
>  config/common_base                                |   1 +
>  drivers/event/sw/sw_evdev.c                       |  18 +
>  lib/librte_eventdev/Makefile                      |   2 +
>  lib/librte_eventdev/rte_event_timer_adapter.c     | 407 ++++++++++++++++++++++
>  lib/librte_eventdev/rte_event_timer_adapter_pmd.h | 159 +++++++++
>  lib/librte_eventdev/rte_eventdev.h                |   3 +
>  lib/librte_eventdev/rte_eventdev_pmd.h            |  35 ++
>  lib/librte_eventdev/rte_eventdev_version.map      |  15 +-
>  8 files changed, 639 insertions(+), 1 deletion(-)
>  create mode 100644 lib/librte_eventdev/rte_event_timer_adapter.c
>  create mode 100644 lib/librte_eventdev/rte_event_timer_adapter_pmd.h
> 
> diff --git a/config/common_base b/config/common_base
> index e74febe..91a2f0f 100644
> --- a/config/common_base
> +++ b/config/common_base
> @@ -574,6 +574,7 @@ CONFIG_RTE_LIBRTE_EVENTDEV=y
>  CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n
>  CONFIG_RTE_EVENT_MAX_DEVS=16
>  CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64
> +CONFIG_RTE_LIBRTE_EVENTDEV_TIMER_ADAPTER_DEBUG=n
>  
>  #
> +rte_event_timer_arm_burst(const struct rte_event_timer_adapter *adapter,
> +			  struct rte_event_timer **event_timers,
> +			  uint16_t nb_event_timers)
> +{
> +#ifdef RTE_LIBRTE_EVENTDEV_TIMER_ADAPTER_DEBUG
> +	ADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL);
> +	FUNC_PTR_OR_ERR_RET(adapter->arm_burst, -EINVAL);
> +#endif
> +
> +	if (!adapter->data->started)
> +		return -EAGAIN;

Other subsystems like ethdev, cryptodev, eventdev does not
have this check in fastpath as it is costly. IMO, We can remove this check.

> +
> +	return adapter->arm_burst(adapter, event_timers, nb_event_timers);
> +}
> +
> +int
> +rte_event_timer_arm_tmo_tick_burst(
> +			const struct rte_event_timer_adapter *adapter,
> +			struct rte_event_timer **event_timers,
> +			const uint64_t timeout_ticks,
> +			const uint16_t nb_event_timers)
> +{
> +#ifdef RTE_LIBRTE_EVENTDEV_TIMER_ADAPTER_DEBUG
> +	ADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL);
> +	FUNC_PTR_OR_ERR_RET(adapter->arm_tmo_tick_burst, -EINVAL);
> +#endif
> +
> +	if (!adapter->data->started)
> +		return -EAGAIN;

Same as above.

> +
> +	for (int i = 0; i < nb_event_timers; i++)
> +		event_timers[i]->timeout_ticks = timeout_ticks;

IMO, We can push this to driver as driver may be in a position to
to do better driver specific optimization.

> +
> +	return adapter->arm_tmo_tick_burst(adapter, event_timers, timeout_ticks,
> +					  nb_event_timers);
> +}
> +
> +int
> +rte_event_timer_cancel_burst(const struct rte_event_timer_adapter *adapter,
> +			     struct rte_event_timer **event_timers,
> +			     uint16_t nb_event_timers)
> +{
> +#ifdef RTE_LIBRTE_EVENTDEV_TIMER_ADAPTER_DEBUG
> +	ADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL);
> +	FUNC_PTR_OR_ERR_RET(adapter->cancel_burst, -EINVAL);
> +#endif
> +
> +	if (!adapter->data->started)
> +		return -EAGAIN;

Same as above.

> +
> +	return adapter->cancel_burst(adapter, event_timers, nb_event_timers);
> +}
>   */
>  


More information about the dev mailing list