153548ad3SPavan Nikhilesh /* SPDX-License-Identifier: BSD-3-Clause 253548ad3SPavan Nikhilesh * Copyright(c) 2017-2018 Intel Corporation. 353548ad3SPavan Nikhilesh * All rights reserved. 453548ad3SPavan Nikhilesh */ 553548ad3SPavan Nikhilesh 653548ad3SPavan Nikhilesh #ifndef __EVENT_TIMER_ADAPTER_PMD_H__ 753548ad3SPavan Nikhilesh #define __EVENT_TIMER_ADAPTER_PMD_H__ 853548ad3SPavan Nikhilesh 953548ad3SPavan Nikhilesh /** 1053548ad3SPavan Nikhilesh * @file 1153548ad3SPavan Nikhilesh * RTE Event Timer Adapter API (PMD Side) 1253548ad3SPavan Nikhilesh * 1353548ad3SPavan Nikhilesh * @note 1453548ad3SPavan Nikhilesh * This file provides implementation helpers for internal use by PMDs. They 1553548ad3SPavan Nikhilesh * are not intended to be exposed to applications and are not subject to ABI 1653548ad3SPavan Nikhilesh * versioning. 1753548ad3SPavan Nikhilesh */ 1853548ad3SPavan Nikhilesh 1953548ad3SPavan Nikhilesh #include "rte_event_timer_adapter.h" 2053548ad3SPavan Nikhilesh 2153548ad3SPavan Nikhilesh /* 2253548ad3SPavan Nikhilesh * Definitions of functions exported by an event timer adapter implementation 2353548ad3SPavan Nikhilesh * through *rte_event_timer_adapter_ops* structure supplied in the 2453548ad3SPavan Nikhilesh * *rte_event_timer_adapter* structure associated with an event timer adapter. 2553548ad3SPavan Nikhilesh */ 2653548ad3SPavan Nikhilesh 2753548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_init_t)( 2853548ad3SPavan Nikhilesh struct rte_event_timer_adapter *adapter); 2953548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation setup */ 3053548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_uninit_t)( 3153548ad3SPavan Nikhilesh struct rte_event_timer_adapter *adapter); 3253548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation teardown */ 3353548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_start_t)( 3453548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 3553548ad3SPavan Nikhilesh /**< @internal Start running event timer adapter */ 3653548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stop_t)( 3753548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 3853548ad3SPavan Nikhilesh /**< @internal Stop running event timer adapter */ 3953548ad3SPavan Nikhilesh typedef void (*rte_event_timer_adapter_get_info_t)( 4053548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter, 4153548ad3SPavan Nikhilesh struct rte_event_timer_adapter_info *adapter_info); 4253548ad3SPavan Nikhilesh /**< @internal Get contextual information for event timer adapter */ 4353548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_get_t)( 4453548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter, 4553548ad3SPavan Nikhilesh struct rte_event_timer_adapter_stats *stats); 4653548ad3SPavan Nikhilesh /**< @internal Get statistics for event timer adapter */ 4753548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_reset_t)( 4853548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 4953548ad3SPavan Nikhilesh /**< @internal Reset statistics for event timer adapter */ 500727ff34SErik Gabriel Carrillo typedef int (*rte_event_timer_remaining_ticks_get_t)( 510727ff34SErik Gabriel Carrillo const struct rte_event_timer_adapter *adapter, 520727ff34SErik Gabriel Carrillo const struct rte_event_timer *evtim, 530727ff34SErik Gabriel Carrillo uint64_t *ticks_remaining); 540727ff34SErik Gabriel Carrillo /**< @internal Get remaining ticks for event timer */ 5553548ad3SPavan Nikhilesh 5653548ad3SPavan Nikhilesh /** 5753548ad3SPavan Nikhilesh * @internal Structure containing the functions exported by an event timer 5853548ad3SPavan Nikhilesh * adapter implementation. 5953548ad3SPavan Nikhilesh */ 6053548ad3SPavan Nikhilesh struct event_timer_adapter_ops { 6153548ad3SPavan Nikhilesh rte_event_timer_adapter_init_t init; /**< Set up adapter */ 6253548ad3SPavan Nikhilesh rte_event_timer_adapter_uninit_t uninit;/**< Tear down adapter */ 6353548ad3SPavan Nikhilesh rte_event_timer_adapter_start_t start; /**< Start adapter */ 6453548ad3SPavan Nikhilesh rte_event_timer_adapter_stop_t stop; /**< Stop adapter */ 6553548ad3SPavan Nikhilesh rte_event_timer_adapter_get_info_t get_info; 6653548ad3SPavan Nikhilesh /**< Get info from driver */ 6753548ad3SPavan Nikhilesh rte_event_timer_adapter_stats_get_t stats_get; 6853548ad3SPavan Nikhilesh /**< Get adapter statistics */ 6953548ad3SPavan Nikhilesh rte_event_timer_adapter_stats_reset_t stats_reset; 7053548ad3SPavan Nikhilesh /**< Reset adapter statistics */ 7153548ad3SPavan Nikhilesh rte_event_timer_arm_burst_t arm_burst; 7253548ad3SPavan Nikhilesh /**< Arm one or more event timers */ 7353548ad3SPavan Nikhilesh rte_event_timer_arm_tmo_tick_burst_t arm_tmo_tick_burst; 7453548ad3SPavan Nikhilesh /**< Arm event timers with same expiration time */ 7553548ad3SPavan Nikhilesh rte_event_timer_cancel_burst_t cancel_burst; 7653548ad3SPavan Nikhilesh /**< Cancel one or more event timers */ 770727ff34SErik Gabriel Carrillo rte_event_timer_remaining_ticks_get_t remaining_ticks_get; 780727ff34SErik Gabriel Carrillo /**< Get remaining ticks for event timer */ 7953548ad3SPavan Nikhilesh }; 8053548ad3SPavan Nikhilesh 8153548ad3SPavan Nikhilesh /** 8253548ad3SPavan Nikhilesh * @internal Adapter data; structure to be placed in shared memory to be 8353548ad3SPavan Nikhilesh * accessible by various processes in a multi-process configuration. 8453548ad3SPavan Nikhilesh */ 85*c6552d9aSTyler Retzlaff struct __rte_cache_aligned rte_event_timer_adapter_data { 8653548ad3SPavan Nikhilesh uint8_t id; 8753548ad3SPavan Nikhilesh /**< Event timer adapter ID */ 8853548ad3SPavan Nikhilesh uint8_t event_dev_id; 8953548ad3SPavan Nikhilesh /**< Event device ID */ 9053548ad3SPavan Nikhilesh uint32_t socket_id; 9153548ad3SPavan Nikhilesh /**< Socket ID where memory is allocated */ 9253548ad3SPavan Nikhilesh uint8_t event_port_id; 9353548ad3SPavan Nikhilesh /**< Optional: event port ID used when the inbuilt port is absent */ 9453548ad3SPavan Nikhilesh const struct rte_memzone *mz; 9553548ad3SPavan Nikhilesh /**< Event timer adapter memzone pointer */ 9653548ad3SPavan Nikhilesh struct rte_event_timer_adapter_conf conf; 9753548ad3SPavan Nikhilesh /**< Configuration used to configure the adapter. */ 9853548ad3SPavan Nikhilesh uint32_t caps; 9953548ad3SPavan Nikhilesh /**< Adapter capabilities */ 10053548ad3SPavan Nikhilesh void *adapter_priv; 10153548ad3SPavan Nikhilesh /**< Timer adapter private data*/ 10253548ad3SPavan Nikhilesh uint8_t service_inited; 10353548ad3SPavan Nikhilesh /**< Service initialization state */ 10453548ad3SPavan Nikhilesh uint32_t service_id; 10553548ad3SPavan Nikhilesh /**< Service ID*/ 10653548ad3SPavan Nikhilesh 10753548ad3SPavan Nikhilesh uint8_t started : 1; 10853548ad3SPavan Nikhilesh /**< Flag to indicate adapter started. */ 109*c6552d9aSTyler Retzlaff }; 11053548ad3SPavan Nikhilesh 11153548ad3SPavan Nikhilesh #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */ 112