xref: /dpdk/lib/eventdev/eventdev_pmd.h (revision c1bdd86d04d161c07c61ec1be8ef081108d29d2a)
199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
299a2dd95SBruce Richardson  * Copyright(c) 2016 Cavium, Inc
399a2dd95SBruce Richardson  */
499a2dd95SBruce Richardson 
599a2dd95SBruce Richardson #ifndef _RTE_EVENTDEV_PMD_H_
699a2dd95SBruce Richardson #define _RTE_EVENTDEV_PMD_H_
799a2dd95SBruce Richardson 
899a2dd95SBruce Richardson /** @file
999a2dd95SBruce Richardson  * RTE Event PMD APIs
1099a2dd95SBruce Richardson  *
1199a2dd95SBruce Richardson  * @note
1299a2dd95SBruce Richardson  * These API are from event PMD only and user applications should not call
1399a2dd95SBruce Richardson  * them directly.
1499a2dd95SBruce Richardson  */
1599a2dd95SBruce Richardson 
1699a2dd95SBruce Richardson #include <string.h>
1799a2dd95SBruce Richardson 
1899a2dd95SBruce Richardson #include <rte_common.h>
1999a2dd95SBruce Richardson #include <rte_compat.h>
2099a2dd95SBruce Richardson #include <rte_config.h>
211acb7f54SDavid Marchand #include <dev_driver.h>
2299a2dd95SBruce Richardson #include <rte_log.h>
2399a2dd95SBruce Richardson #include <rte_malloc.h>
2499a2dd95SBruce Richardson #include <rte_mbuf.h>
2599a2dd95SBruce Richardson #include <rte_mbuf_dyn.h>
2699a2dd95SBruce Richardson 
2753548ad3SPavan Nikhilesh #include "event_timer_adapter_pmd.h"
2899a2dd95SBruce Richardson #include "rte_eventdev.h"
2999a2dd95SBruce Richardson 
30719834a6SMattias Rönnblom #ifdef __cplusplus
31719834a6SMattias Rönnblom extern "C" {
32719834a6SMattias Rönnblom #endif
33719834a6SMattias Rönnblom 
34e792ec08SStephen Hemminger extern int rte_event_logtype;
35e792ec08SStephen Hemminger #define RTE_LOGTYPE_EVENTDEV rte_event_logtype
36e792ec08SStephen Hemminger 
3799a2dd95SBruce Richardson /* Logging Macros */
3899a2dd95SBruce Richardson #define RTE_EDEV_LOG_ERR(...) \
390f1dc8cbSTyler Retzlaff 	RTE_LOG_LINE_PREFIX(ERR, EVENTDEV, \
400f1dc8cbSTyler Retzlaff 		"%s() line %u: ", __func__ RTE_LOG_COMMA __LINE__, __VA_ARGS__)
4199a2dd95SBruce Richardson 
4299a2dd95SBruce Richardson #ifdef RTE_LIBRTE_EVENTDEV_DEBUG
4399a2dd95SBruce Richardson #define RTE_EDEV_LOG_DEBUG(...) \
440f1dc8cbSTyler Retzlaff 	RTE_LOG_LINE_PREFIX(DEBUG, EVENTDEV, \
450f1dc8cbSTyler Retzlaff 		"%s() line %u: ", __func__ RTE_LOG_COMMA __LINE__, __VA_ARGS__)
4699a2dd95SBruce Richardson #else
4799a2dd95SBruce Richardson #define RTE_EDEV_LOG_DEBUG(...) (void)0
4899a2dd95SBruce Richardson #endif
4999a2dd95SBruce Richardson 
5099a2dd95SBruce Richardson /* Macros to check for valid device */
5199a2dd95SBruce Richardson #define RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, retval) do { \
5299a2dd95SBruce Richardson 	if (!rte_event_pmd_is_valid_dev((dev_id))) { \
53ae282b06SDavid Marchand 		RTE_EDEV_LOG_ERR("Invalid dev_id=%d", dev_id); \
5499a2dd95SBruce Richardson 		return retval; \
5599a2dd95SBruce Richardson 	} \
5699a2dd95SBruce Richardson } while (0)
5799a2dd95SBruce Richardson 
5899a2dd95SBruce Richardson #define RTE_EVENTDEV_VALID_DEVID_OR_ERRNO_RET(dev_id, errno, retval) do { \
5999a2dd95SBruce Richardson 	if (!rte_event_pmd_is_valid_dev((dev_id))) { \
60ae282b06SDavid Marchand 		RTE_EDEV_LOG_ERR("Invalid dev_id=%d", dev_id); \
6199a2dd95SBruce Richardson 		rte_errno = errno; \
6299a2dd95SBruce Richardson 		return retval; \
6399a2dd95SBruce Richardson 	} \
6499a2dd95SBruce Richardson } while (0)
6599a2dd95SBruce Richardson 
6699a2dd95SBruce Richardson #define RTE_EVENTDEV_VALID_DEVID_OR_RET(dev_id) do { \
6799a2dd95SBruce Richardson 	if (!rte_event_pmd_is_valid_dev((dev_id))) { \
68ae282b06SDavid Marchand 		RTE_EDEV_LOG_ERR("Invalid dev_id=%d", dev_id); \
6999a2dd95SBruce Richardson 		return; \
7099a2dd95SBruce Richardson 	} \
7199a2dd95SBruce Richardson } while (0)
7299a2dd95SBruce Richardson 
7399a2dd95SBruce Richardson #define RTE_EVENT_ETH_RX_ADAPTER_SW_CAP                                        \
7499a2dd95SBruce Richardson 	((RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID) |                     \
7599a2dd95SBruce Richardson 	 (RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ) |                         \
7699a2dd95SBruce Richardson 	 (RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR))
7799a2dd95SBruce Richardson 
7899a2dd95SBruce Richardson #define RTE_EVENT_CRYPTO_ADAPTER_SW_CAP \
7999a2dd95SBruce Richardson 		RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA
8099a2dd95SBruce Richardson 
8199a2dd95SBruce Richardson /**< Ethernet Rx adapter cap to return If the packet transfers from
8299a2dd95SBruce Richardson  * the ethdev to eventdev use a SW service function
8399a2dd95SBruce Richardson  */
8499a2dd95SBruce Richardson 
853d9d8adfSNaga Harish K S V #define RTE_EVENT_TIMER_ADAPTER_SW_CAP \
863d9d8adfSNaga Harish K S V 		RTE_EVENT_TIMER_ADAPTER_CAP_PERIODIC
873d9d8adfSNaga Harish K S V 
8899a2dd95SBruce Richardson #define RTE_EVENTDEV_DETACHED  (0)
8999a2dd95SBruce Richardson #define RTE_EVENTDEV_ATTACHED  (1)
9099a2dd95SBruce Richardson 
91295c053fSPavan Nikhilesh #define RTE_EVENTDEV_NAME_MAX_LEN (64)
92295c053fSPavan Nikhilesh /**< @internal Max length of name of event PMD */
93295c053fSPavan Nikhilesh 
9499a2dd95SBruce Richardson struct rte_eth_dev;
9599a2dd95SBruce Richardson 
9699a2dd95SBruce Richardson /** Global structure used for maintaining state of allocated event devices */
9799a2dd95SBruce Richardson struct rte_eventdev_global {
9899a2dd95SBruce Richardson 	uint8_t nb_devs;	/**< Number of devices found */
9999a2dd95SBruce Richardson };
10099a2dd95SBruce Richardson 
10199a2dd95SBruce Richardson /**
102295c053fSPavan Nikhilesh  * @internal
103295c053fSPavan Nikhilesh  * The data part, with no function pointers, associated with each device.
104295c053fSPavan Nikhilesh  *
105295c053fSPavan Nikhilesh  * This structure is safe to place in shared memory to be common among
106295c053fSPavan Nikhilesh  * different processes in a multi-process configuration.
107295c053fSPavan Nikhilesh  */
108c6552d9aSTyler Retzlaff struct __rte_cache_aligned rte_eventdev_data {
109295c053fSPavan Nikhilesh 	int socket_id;
110295c053fSPavan Nikhilesh 	/**< Socket ID where memory is allocated */
111295c053fSPavan Nikhilesh 	uint8_t dev_id;
112295c053fSPavan Nikhilesh 	/**< Device ID for this instance */
113295c053fSPavan Nikhilesh 	uint8_t nb_queues;
114295c053fSPavan Nikhilesh 	/**< Number of event queues. */
115295c053fSPavan Nikhilesh 	uint8_t nb_ports;
116295c053fSPavan Nikhilesh 	/**< Number of event ports. */
117295c053fSPavan Nikhilesh 	void *ports[RTE_EVENT_MAX_PORTS_PER_DEV];
118295c053fSPavan Nikhilesh 	/**< Array of pointers to ports. */
119295c053fSPavan Nikhilesh 	struct rte_event_port_conf ports_cfg[RTE_EVENT_MAX_PORTS_PER_DEV];
120295c053fSPavan Nikhilesh 	/**< Array of port configuration structures. */
121295c053fSPavan Nikhilesh 	struct rte_event_queue_conf queues_cfg[RTE_EVENT_MAX_QUEUES_PER_DEV];
122295c053fSPavan Nikhilesh 	/**< Array of queue configuration structures. */
123d007a7f3SPavan Nikhilesh 	uint16_t links_map[RTE_EVENT_MAX_PROFILES_PER_PORT]
124d007a7f3SPavan Nikhilesh 			  [RTE_EVENT_MAX_PORTS_PER_DEV * RTE_EVENT_MAX_QUEUES_PER_DEV];
125295c053fSPavan Nikhilesh 	/**< Memory to store queues to port connections. */
126295c053fSPavan Nikhilesh 	void *dev_private;
127295c053fSPavan Nikhilesh 	/**< PMD-specific private data */
128295c053fSPavan Nikhilesh 	uint32_t event_dev_cap;
129295c053fSPavan Nikhilesh 	/**< Event device capabilities(RTE_EVENT_DEV_CAP_)*/
130295c053fSPavan Nikhilesh 	struct rte_event_dev_config dev_conf;
131295c053fSPavan Nikhilesh 	/**< Configuration applied to device. */
132295c053fSPavan Nikhilesh 	uint8_t service_inited;
133295c053fSPavan Nikhilesh 	/* Service initialization state */
134295c053fSPavan Nikhilesh 	uint32_t service_id;
135295c053fSPavan Nikhilesh 	/* Service ID*/
136295c053fSPavan Nikhilesh 	void *dev_stop_flush_arg;
137295c053fSPavan Nikhilesh 	/**< User-provided argument for event flush function */
138295c053fSPavan Nikhilesh 
139295c053fSPavan Nikhilesh 	uint8_t dev_started : 1;
140295c053fSPavan Nikhilesh 	/**< Device state: STARTED(1)/STOPPED(0) */
141295c053fSPavan Nikhilesh 
142295c053fSPavan Nikhilesh 	char name[RTE_EVENTDEV_NAME_MAX_LEN];
143295c053fSPavan Nikhilesh 	/**< Unique identifier name */
144295c053fSPavan Nikhilesh 
145295c053fSPavan Nikhilesh 	uint64_t reserved_64s[4]; /**< Reserved for future fields */
146295c053fSPavan Nikhilesh 	void *reserved_ptrs[4];	  /**< Reserved for future fields */
147c6552d9aSTyler Retzlaff };
148295c053fSPavan Nikhilesh 
149295c053fSPavan Nikhilesh /** @internal The data structure associated with each event device. */
150c6552d9aSTyler Retzlaff struct __rte_cache_aligned rte_eventdev {
151295c053fSPavan Nikhilesh 	struct rte_eventdev_data *data;
152295c053fSPavan Nikhilesh 	/**< Pointer to device data */
153295c053fSPavan Nikhilesh 	struct eventdev_ops *dev_ops;
154295c053fSPavan Nikhilesh 	/**< Functions exported by PMD */
155295c053fSPavan Nikhilesh 	struct rte_device *dev;
156295c053fSPavan Nikhilesh 	/**< Device info. supplied by probing */
157295c053fSPavan Nikhilesh 
158295c053fSPavan Nikhilesh 	uint8_t attached : 1;
159295c053fSPavan Nikhilesh 	/**< Flag indicating the device is attached */
160295c053fSPavan Nikhilesh 
161295c053fSPavan Nikhilesh 	event_enqueue_t enqueue;
162295c053fSPavan Nikhilesh 	/**< Pointer to PMD enqueue function. */
163295c053fSPavan Nikhilesh 	event_enqueue_burst_t enqueue_burst;
164295c053fSPavan Nikhilesh 	/**< Pointer to PMD enqueue burst function. */
165295c053fSPavan Nikhilesh 	event_enqueue_burst_t enqueue_new_burst;
166295c053fSPavan Nikhilesh 	/**< Pointer to PMD enqueue burst function(op new variant) */
167295c053fSPavan Nikhilesh 	event_enqueue_burst_t enqueue_forward_burst;
168295c053fSPavan Nikhilesh 	/**< Pointer to PMD enqueue burst function(op forward variant) */
169295c053fSPavan Nikhilesh 	event_dequeue_t dequeue;
170295c053fSPavan Nikhilesh 	/**< Pointer to PMD dequeue function. */
171295c053fSPavan Nikhilesh 	event_dequeue_burst_t dequeue_burst;
172295c053fSPavan Nikhilesh 	/**< Pointer to PMD dequeue burst function. */
17354f17843SMattias Rönnblom 	event_maintain_t maintain;
17454f17843SMattias Rönnblom 	/**< Pointer to PMD port maintenance function. */
175295c053fSPavan Nikhilesh 	event_tx_adapter_enqueue_t txa_enqueue_same_dest;
176295c053fSPavan Nikhilesh 	/**< Pointer to PMD eth Tx adapter burst enqueue function with
177295c053fSPavan Nikhilesh 	 * events destined to same Eth port & Tx queue.
178295c053fSPavan Nikhilesh 	 */
179295c053fSPavan Nikhilesh 	event_tx_adapter_enqueue_t txa_enqueue;
180295c053fSPavan Nikhilesh 	/**< Pointer to PMD eth Tx adapter enqueue function. */
181295c053fSPavan Nikhilesh 	event_crypto_adapter_enqueue_t ca_enqueue;
18266a30a29SAmit Prakash Shukla 	/**< Pointer to PMD crypto adapter enqueue function. */
18366a30a29SAmit Prakash Shukla 	event_dma_adapter_enqueue_t dma_enqueue;
18466a30a29SAmit Prakash Shukla 	/**< Pointer to PMD DMA adapter enqueue function. */
185d007a7f3SPavan Nikhilesh 	event_profile_switch_t profile_switch;
186d007a7f3SPavan Nikhilesh 	/**< Pointer to PMD Event switch profile function. */
187*c1bdd86dSPavan Nikhilesh 	event_preschedule_modify_t preschedule_modify;
188*c1bdd86dSPavan Nikhilesh 	/**< Pointer to PMD Event port pre-schedule type modify function.  */
18966a30a29SAmit Prakash Shukla 
19066a30a29SAmit Prakash Shukla 	uint64_t reserved_64s[3]; /**< Reserved for future fields */
191295c053fSPavan Nikhilesh 	void *reserved_ptrs[3];	  /**< Reserved for future fields */
192c6552d9aSTyler Retzlaff };
193295c053fSPavan Nikhilesh 
194295c053fSPavan Nikhilesh extern struct rte_eventdev *rte_eventdevs;
195295c053fSPavan Nikhilesh /** @internal The pool of rte_eventdev structures. */
196295c053fSPavan Nikhilesh 
197295c053fSPavan Nikhilesh /**
19899a2dd95SBruce Richardson  * Get the rte_eventdev structure device pointer for the named device.
19999a2dd95SBruce Richardson  *
20099a2dd95SBruce Richardson  * @param name
20199a2dd95SBruce Richardson  *   device name to select the device structure.
20299a2dd95SBruce Richardson  *
20399a2dd95SBruce Richardson  * @return
20499a2dd95SBruce Richardson  *   - The rte_eventdev structure pointer for the given device ID.
20599a2dd95SBruce Richardson  */
20623d06e37SPavan Nikhilesh __rte_internal
20799a2dd95SBruce Richardson static inline struct rte_eventdev *
20899a2dd95SBruce Richardson rte_event_pmd_get_named_dev(const char *name)
20999a2dd95SBruce Richardson {
21099a2dd95SBruce Richardson 	struct rte_eventdev *dev;
21199a2dd95SBruce Richardson 	unsigned int i;
21299a2dd95SBruce Richardson 
21399a2dd95SBruce Richardson 	if (name == NULL)
21499a2dd95SBruce Richardson 		return NULL;
21599a2dd95SBruce Richardson 
21699a2dd95SBruce Richardson 	for (i = 0; i < RTE_EVENT_MAX_DEVS; i++) {
21799a2dd95SBruce Richardson 		dev = &rte_eventdevs[i];
21899a2dd95SBruce Richardson 		if ((dev->attached == RTE_EVENTDEV_ATTACHED) &&
21999a2dd95SBruce Richardson 				(strcmp(dev->data->name, name) == 0))
22099a2dd95SBruce Richardson 			return dev;
22199a2dd95SBruce Richardson 	}
22299a2dd95SBruce Richardson 
22399a2dd95SBruce Richardson 	return NULL;
22499a2dd95SBruce Richardson }
22599a2dd95SBruce Richardson 
22699a2dd95SBruce Richardson /**
22799a2dd95SBruce Richardson  * Validate if the event device index is valid attached event device.
22899a2dd95SBruce Richardson  *
22999a2dd95SBruce Richardson  * @param dev_id
23099a2dd95SBruce Richardson  *   Event device index.
23199a2dd95SBruce Richardson  *
23299a2dd95SBruce Richardson  * @return
23399a2dd95SBruce Richardson  *   - If the device index is valid (1) or not (0).
23499a2dd95SBruce Richardson  */
23523d06e37SPavan Nikhilesh __rte_internal
23699a2dd95SBruce Richardson static inline unsigned
23799a2dd95SBruce Richardson rte_event_pmd_is_valid_dev(uint8_t dev_id)
23899a2dd95SBruce Richardson {
23999a2dd95SBruce Richardson 	struct rte_eventdev *dev;
24099a2dd95SBruce Richardson 
24199a2dd95SBruce Richardson 	if (dev_id >= RTE_EVENT_MAX_DEVS)
24299a2dd95SBruce Richardson 		return 0;
24399a2dd95SBruce Richardson 
24499a2dd95SBruce Richardson 	dev = &rte_eventdevs[dev_id];
24599a2dd95SBruce Richardson 	if (dev->attached != RTE_EVENTDEV_ATTACHED)
24699a2dd95SBruce Richardson 		return 0;
24799a2dd95SBruce Richardson 	else
24899a2dd95SBruce Richardson 		return 1;
24999a2dd95SBruce Richardson }
25099a2dd95SBruce Richardson 
25199a2dd95SBruce Richardson /**
25299a2dd95SBruce Richardson  * Definitions of all functions exported by a driver through the
253b53d106dSSean Morrissey  * generic structure of type *event_dev_ops* supplied in the
25499a2dd95SBruce Richardson  * *rte_eventdev* structure associated with a device.
25599a2dd95SBruce Richardson  */
25699a2dd95SBruce Richardson 
25799a2dd95SBruce Richardson /**
25899a2dd95SBruce Richardson  * Get device information of a device.
25999a2dd95SBruce Richardson  *
26099a2dd95SBruce Richardson  * @param dev
26199a2dd95SBruce Richardson  *   Event device pointer
26299a2dd95SBruce Richardson  * @param dev_info
26399a2dd95SBruce Richardson  *   Event device information structure
26499a2dd95SBruce Richardson  */
26599a2dd95SBruce Richardson typedef void (*eventdev_info_get_t)(struct rte_eventdev *dev,
26699a2dd95SBruce Richardson 		struct rte_event_dev_info *dev_info);
26799a2dd95SBruce Richardson 
26899a2dd95SBruce Richardson /**
26999a2dd95SBruce Richardson  * Configure a device.
27099a2dd95SBruce Richardson  *
27199a2dd95SBruce Richardson  * @param dev
27299a2dd95SBruce Richardson  *   Event device pointer
27399a2dd95SBruce Richardson  *
27499a2dd95SBruce Richardson  * @return
27599a2dd95SBruce Richardson  *   Returns 0 on success
27699a2dd95SBruce Richardson  */
27799a2dd95SBruce Richardson typedef int (*eventdev_configure_t)(const struct rte_eventdev *dev);
27899a2dd95SBruce Richardson 
27999a2dd95SBruce Richardson /**
28099a2dd95SBruce Richardson  * Start a configured device.
28199a2dd95SBruce Richardson  *
28299a2dd95SBruce Richardson  * @param dev
28399a2dd95SBruce Richardson  *   Event device pointer
28499a2dd95SBruce Richardson  *
28599a2dd95SBruce Richardson  * @return
28699a2dd95SBruce Richardson  *   Returns 0 on success
28799a2dd95SBruce Richardson  */
28899a2dd95SBruce Richardson typedef int (*eventdev_start_t)(struct rte_eventdev *dev);
28999a2dd95SBruce Richardson 
29099a2dd95SBruce Richardson /**
29199a2dd95SBruce Richardson  * Stop a configured device.
29299a2dd95SBruce Richardson  *
29399a2dd95SBruce Richardson  * @param dev
29499a2dd95SBruce Richardson  *   Event device pointer
29599a2dd95SBruce Richardson  */
29699a2dd95SBruce Richardson typedef void (*eventdev_stop_t)(struct rte_eventdev *dev);
29799a2dd95SBruce Richardson 
29899a2dd95SBruce Richardson /**
29999a2dd95SBruce Richardson  * Close a configured device.
30099a2dd95SBruce Richardson  *
30199a2dd95SBruce Richardson  * @param dev
30299a2dd95SBruce Richardson  *   Event device pointer
30399a2dd95SBruce Richardson  *
30499a2dd95SBruce Richardson  * @return
30599a2dd95SBruce Richardson  * - 0 on success
30699a2dd95SBruce Richardson  * - (-EAGAIN) if can't close as device is busy
30799a2dd95SBruce Richardson  */
30899a2dd95SBruce Richardson typedef int (*eventdev_close_t)(struct rte_eventdev *dev);
30999a2dd95SBruce Richardson 
31099a2dd95SBruce Richardson /**
31199a2dd95SBruce Richardson  * Retrieve the default event queue configuration.
31299a2dd95SBruce Richardson  *
31399a2dd95SBruce Richardson  * @param dev
31499a2dd95SBruce Richardson  *   Event device pointer
31599a2dd95SBruce Richardson  * @param queue_id
31699a2dd95SBruce Richardson  *   Event queue index
31799a2dd95SBruce Richardson  * @param[out] queue_conf
31899a2dd95SBruce Richardson  *   Event queue configuration structure
31999a2dd95SBruce Richardson  */
32099a2dd95SBruce Richardson typedef void (*eventdev_queue_default_conf_get_t)(struct rte_eventdev *dev,
32199a2dd95SBruce Richardson 		uint8_t queue_id, struct rte_event_queue_conf *queue_conf);
32299a2dd95SBruce Richardson 
32399a2dd95SBruce Richardson /**
32499a2dd95SBruce Richardson  * Setup an event queue.
32599a2dd95SBruce Richardson  *
32699a2dd95SBruce Richardson  * @param dev
32799a2dd95SBruce Richardson  *   Event device pointer
32899a2dd95SBruce Richardson  * @param queue_id
32999a2dd95SBruce Richardson  *   Event queue index
33099a2dd95SBruce Richardson  * @param queue_conf
33199a2dd95SBruce Richardson  *   Event queue configuration structure
33299a2dd95SBruce Richardson  *
33399a2dd95SBruce Richardson  * @return
33499a2dd95SBruce Richardson  *   Returns 0 on success.
33599a2dd95SBruce Richardson  */
33699a2dd95SBruce Richardson typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev,
33799a2dd95SBruce Richardson 		uint8_t queue_id,
33899a2dd95SBruce Richardson 		const struct rte_event_queue_conf *queue_conf);
33999a2dd95SBruce Richardson 
34099a2dd95SBruce Richardson /**
34199a2dd95SBruce Richardson  * Release resources allocated by given event queue.
34299a2dd95SBruce Richardson  *
34399a2dd95SBruce Richardson  * @param dev
34499a2dd95SBruce Richardson  *   Event device pointer
34599a2dd95SBruce Richardson  * @param queue_id
34699a2dd95SBruce Richardson  *   Event queue index
34799a2dd95SBruce Richardson  */
34899a2dd95SBruce Richardson typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev,
34999a2dd95SBruce Richardson 		uint8_t queue_id);
35099a2dd95SBruce Richardson 
35199a2dd95SBruce Richardson /**
35297b914f4SShijith Thotton  * Set an event queue attribute at runtime.
35397b914f4SShijith Thotton  *
35497b914f4SShijith Thotton  * @param dev
35597b914f4SShijith Thotton  *   Event device pointer
35697b914f4SShijith Thotton  * @param queue_id
35797b914f4SShijith Thotton  *   Event queue index
35897b914f4SShijith Thotton  * @param attr_id
35997b914f4SShijith Thotton  *   Event queue attribute id
36097b914f4SShijith Thotton  * @param attr_value
36197b914f4SShijith Thotton  *   Event queue attribute value
36297b914f4SShijith Thotton  *
36397b914f4SShijith Thotton  * @return
36497b914f4SShijith Thotton  *  - 0: Success.
36597b914f4SShijith Thotton  *  - <0: Error code on failure.
36697b914f4SShijith Thotton  */
36797b914f4SShijith Thotton typedef int (*eventdev_queue_attr_set_t)(struct rte_eventdev *dev,
36897b914f4SShijith Thotton 					 uint8_t queue_id, uint32_t attr_id,
36997b914f4SShijith Thotton 					 uint64_t attr_value);
37097b914f4SShijith Thotton 
37197b914f4SShijith Thotton /**
37299a2dd95SBruce Richardson  * Retrieve the default event port configuration.
37399a2dd95SBruce Richardson  *
37499a2dd95SBruce Richardson  * @param dev
37599a2dd95SBruce Richardson  *   Event device pointer
37699a2dd95SBruce Richardson  * @param port_id
37799a2dd95SBruce Richardson  *   Event port index
37899a2dd95SBruce Richardson  * @param[out] port_conf
37999a2dd95SBruce Richardson  *   Event port configuration structure
38099a2dd95SBruce Richardson  */
38199a2dd95SBruce Richardson typedef void (*eventdev_port_default_conf_get_t)(struct rte_eventdev *dev,
38299a2dd95SBruce Richardson 		uint8_t port_id, struct rte_event_port_conf *port_conf);
38399a2dd95SBruce Richardson 
38499a2dd95SBruce Richardson /**
38599a2dd95SBruce Richardson  * Setup an event port.
38699a2dd95SBruce Richardson  *
38799a2dd95SBruce Richardson  * @param dev
38899a2dd95SBruce Richardson  *   Event device pointer
38999a2dd95SBruce Richardson  * @param port_id
39099a2dd95SBruce Richardson  *   Event port index
39199a2dd95SBruce Richardson  * @param port_conf
39299a2dd95SBruce Richardson  *   Event port configuration structure
39399a2dd95SBruce Richardson  *
39499a2dd95SBruce Richardson  * @return
39599a2dd95SBruce Richardson  *   Returns 0 on success.
39699a2dd95SBruce Richardson  */
39799a2dd95SBruce Richardson typedef int (*eventdev_port_setup_t)(struct rte_eventdev *dev,
39899a2dd95SBruce Richardson 		uint8_t port_id,
39999a2dd95SBruce Richardson 		const struct rte_event_port_conf *port_conf);
40099a2dd95SBruce Richardson 
40199a2dd95SBruce Richardson /**
40299a2dd95SBruce Richardson  * Release memory resources allocated by given event port.
40399a2dd95SBruce Richardson  *
40499a2dd95SBruce Richardson  * @param port
40599a2dd95SBruce Richardson  *   Event port pointer
40699a2dd95SBruce Richardson  */
40799a2dd95SBruce Richardson typedef void (*eventdev_port_release_t)(void *port);
40899a2dd95SBruce Richardson 
40999a2dd95SBruce Richardson /**
4101ff23ce6SPavan Nikhilesh  * Quiesce any core specific resources consumed by the event port
4111ff23ce6SPavan Nikhilesh  *
4121ff23ce6SPavan Nikhilesh  * @param dev
4131ff23ce6SPavan Nikhilesh  *   Event device pointer.
4141ff23ce6SPavan Nikhilesh  * @param port
4151ff23ce6SPavan Nikhilesh  *   Event port pointer.
4161ff23ce6SPavan Nikhilesh  * @param flush_cb
4171ff23ce6SPavan Nikhilesh  *   User-provided event flush function.
4181ff23ce6SPavan Nikhilesh  * @param args
4191ff23ce6SPavan Nikhilesh  *   Arguments to be passed to the user-provided event flush function.
4201ff23ce6SPavan Nikhilesh  */
4211ff23ce6SPavan Nikhilesh typedef void (*eventdev_port_quiesce_t)(struct rte_eventdev *dev, void *port,
4221ff23ce6SPavan Nikhilesh 					rte_eventdev_port_flush_t flush_cb,
4231ff23ce6SPavan Nikhilesh 					void *args);
4241ff23ce6SPavan Nikhilesh 
4251ff23ce6SPavan Nikhilesh /**
42699a2dd95SBruce Richardson  * Link multiple source event queues to destination event port.
42799a2dd95SBruce Richardson  *
42899a2dd95SBruce Richardson  * @param dev
42999a2dd95SBruce Richardson  *   Event device pointer
43099a2dd95SBruce Richardson  * @param port
43199a2dd95SBruce Richardson  *   Event port pointer
43299a2dd95SBruce Richardson  * @param queues
43399a2dd95SBruce Richardson  *   Points to an array of *nb_links* event queues to be linked
43499a2dd95SBruce Richardson  *   to the event port.
43599a2dd95SBruce Richardson  * @param priorities
43699a2dd95SBruce Richardson  *   Points to an array of *nb_links* service priorities associated with each
43799a2dd95SBruce Richardson  *   event queue link to event port.
43899a2dd95SBruce Richardson  * @param nb_links
43999a2dd95SBruce Richardson  *   The number of links to establish
44099a2dd95SBruce Richardson  *
44199a2dd95SBruce Richardson  * @return
44299a2dd95SBruce Richardson  *   Returns 0 on success.
44399a2dd95SBruce Richardson  */
44499a2dd95SBruce Richardson typedef int (*eventdev_port_link_t)(struct rte_eventdev *dev, void *port,
44599a2dd95SBruce Richardson 		const uint8_t queues[], const uint8_t priorities[],
44699a2dd95SBruce Richardson 		uint16_t nb_links);
44799a2dd95SBruce Richardson 
44899a2dd95SBruce Richardson /**
449d007a7f3SPavan Nikhilesh  * Link multiple source event queues associated with a link profile to a
450d007a7f3SPavan Nikhilesh  * destination event port.
451d007a7f3SPavan Nikhilesh  *
452d007a7f3SPavan Nikhilesh  * @param dev
453d007a7f3SPavan Nikhilesh  *   Event device pointer
454d007a7f3SPavan Nikhilesh  * @param port
455d007a7f3SPavan Nikhilesh  *   Event port pointer
456d007a7f3SPavan Nikhilesh  * @param queues
457d007a7f3SPavan Nikhilesh  *   Points to an array of *nb_links* event queues to be linked
458d007a7f3SPavan Nikhilesh  *   to the event port.
459d007a7f3SPavan Nikhilesh  * @param priorities
460d007a7f3SPavan Nikhilesh  *   Points to an array of *nb_links* service priorities associated with each
461d007a7f3SPavan Nikhilesh  *   event queue link to event port.
462d007a7f3SPavan Nikhilesh  * @param nb_links
463d007a7f3SPavan Nikhilesh  *   The number of links to establish.
464d007a7f3SPavan Nikhilesh  * @param profile_id
465d007a7f3SPavan Nikhilesh  *   The profile ID to associate the links.
466d007a7f3SPavan Nikhilesh  *
467d007a7f3SPavan Nikhilesh  * @return
468d007a7f3SPavan Nikhilesh  *   Returns 0 on success.
469d007a7f3SPavan Nikhilesh  */
470d007a7f3SPavan Nikhilesh typedef int (*eventdev_port_link_profile_t)(struct rte_eventdev *dev, void *port,
471d007a7f3SPavan Nikhilesh 					    const uint8_t queues[], const uint8_t priorities[],
472d007a7f3SPavan Nikhilesh 					    uint16_t nb_links, uint8_t profile_id);
473d007a7f3SPavan Nikhilesh 
474d007a7f3SPavan Nikhilesh /**
47599a2dd95SBruce Richardson  * Unlink multiple source event queues from destination event port.
47699a2dd95SBruce Richardson  *
47799a2dd95SBruce Richardson  * @param dev
47899a2dd95SBruce Richardson  *   Event device pointer
47999a2dd95SBruce Richardson  * @param port
48099a2dd95SBruce Richardson  *   Event port pointer
48199a2dd95SBruce Richardson  * @param queues
48299a2dd95SBruce Richardson  *   An array of *nb_unlinks* event queues to be unlinked from the event port.
48399a2dd95SBruce Richardson  * @param nb_unlinks
48499a2dd95SBruce Richardson  *   The number of unlinks to establish
48599a2dd95SBruce Richardson  *
48699a2dd95SBruce Richardson  * @return
48799a2dd95SBruce Richardson  *   Returns 0 on success.
48899a2dd95SBruce Richardson  */
48999a2dd95SBruce Richardson typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port,
49099a2dd95SBruce Richardson 		uint8_t queues[], uint16_t nb_unlinks);
49199a2dd95SBruce Richardson 
49299a2dd95SBruce Richardson /**
493d007a7f3SPavan Nikhilesh  * Unlink multiple source event queues associated with a link profile from
494d007a7f3SPavan Nikhilesh  * destination event port.
495d007a7f3SPavan Nikhilesh  *
496d007a7f3SPavan Nikhilesh  * @param dev
497d007a7f3SPavan Nikhilesh  *   Event device pointer
498d007a7f3SPavan Nikhilesh  * @param port
499d007a7f3SPavan Nikhilesh  *   Event port pointer
500d007a7f3SPavan Nikhilesh  * @param queues
501d007a7f3SPavan Nikhilesh  *   An array of *nb_unlinks* event queues to be unlinked from the event port.
502d007a7f3SPavan Nikhilesh  * @param nb_unlinks
503d007a7f3SPavan Nikhilesh  *   The number of unlinks to establish
504d007a7f3SPavan Nikhilesh  * @param profile_id
505d007a7f3SPavan Nikhilesh  *   The profile ID of the associated links.
506d007a7f3SPavan Nikhilesh  *
507d007a7f3SPavan Nikhilesh  * @return
508d007a7f3SPavan Nikhilesh  *   Returns 0 on success.
509d007a7f3SPavan Nikhilesh  */
510d007a7f3SPavan Nikhilesh typedef int (*eventdev_port_unlink_profile_t)(struct rte_eventdev *dev, void *port,
511d007a7f3SPavan Nikhilesh 					      uint8_t queues[], uint16_t nb_unlinks,
512d007a7f3SPavan Nikhilesh 					      uint8_t profile_id);
513d007a7f3SPavan Nikhilesh 
514d007a7f3SPavan Nikhilesh /**
51599a2dd95SBruce Richardson  * Unlinks in progress. Returns number of unlinks that the PMD is currently
51699a2dd95SBruce Richardson  * performing, but have not yet been completed.
51799a2dd95SBruce Richardson  *
51899a2dd95SBruce Richardson  * @param dev
51999a2dd95SBruce Richardson  *   Event device pointer
52099a2dd95SBruce Richardson  *
52199a2dd95SBruce Richardson  * @param port
52299a2dd95SBruce Richardson  *   Event port pointer
52399a2dd95SBruce Richardson  *
52499a2dd95SBruce Richardson  * @return
52599a2dd95SBruce Richardson  *   Returns the number of in-progress unlinks. Zero is returned if none are
52699a2dd95SBruce Richardson  *   in progress.
52799a2dd95SBruce Richardson  */
52899a2dd95SBruce Richardson typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev,
52999a2dd95SBruce Richardson 		void *port);
53099a2dd95SBruce Richardson 
53199a2dd95SBruce Richardson /**
53299a2dd95SBruce Richardson  * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue()
53399a2dd95SBruce Richardson  *
53499a2dd95SBruce Richardson  * @param dev
53599a2dd95SBruce Richardson  *   Event device pointer
53699a2dd95SBruce Richardson  * @param ns
53799a2dd95SBruce Richardson  *   Wait time in nanosecond
53899a2dd95SBruce Richardson  * @param[out] timeout_ticks
53999a2dd95SBruce Richardson  *   Value for the *timeout_ticks* parameter in rte_event_dequeue() function
54099a2dd95SBruce Richardson  *
54199a2dd95SBruce Richardson  * @return
54299a2dd95SBruce Richardson  *   Returns 0 on success.
54399a2dd95SBruce Richardson  */
54499a2dd95SBruce Richardson typedef int (*eventdev_dequeue_timeout_ticks_t)(struct rte_eventdev *dev,
54599a2dd95SBruce Richardson 		uint64_t ns, uint64_t *timeout_ticks);
54699a2dd95SBruce Richardson 
54799a2dd95SBruce Richardson /**
54899a2dd95SBruce Richardson  * Dump internal information
54999a2dd95SBruce Richardson  *
55099a2dd95SBruce Richardson  * @param dev
55199a2dd95SBruce Richardson  *   Event device pointer
55299a2dd95SBruce Richardson  * @param f
55399a2dd95SBruce Richardson  *   A pointer to a file for output
55499a2dd95SBruce Richardson  */
55599a2dd95SBruce Richardson typedef void (*eventdev_dump_t)(struct rte_eventdev *dev, FILE *f);
55699a2dd95SBruce Richardson 
55799a2dd95SBruce Richardson /**
55899a2dd95SBruce Richardson  * Retrieve a set of statistics from device
55999a2dd95SBruce Richardson  *
56099a2dd95SBruce Richardson  * @param dev
56199a2dd95SBruce Richardson  *   Event device pointer
56299a2dd95SBruce Richardson  * @param mode
56399a2dd95SBruce Richardson  *   Level (device, port or queue)
56499a2dd95SBruce Richardson  * @param queue_port_id
56599a2dd95SBruce Richardson  *   Queue or port number depending on mode
56699a2dd95SBruce Richardson  * @param ids
56799a2dd95SBruce Richardson  *   The stat ids to retrieve
56899a2dd95SBruce Richardson  * @param values
56999a2dd95SBruce Richardson  *   The returned stat values
57099a2dd95SBruce Richardson  * @param n
57199a2dd95SBruce Richardson  *   The number of id values and entries in the values array
57299a2dd95SBruce Richardson  * @return
57399a2dd95SBruce Richardson  *   The number of stat values successfully filled into the values array
57499a2dd95SBruce Richardson  */
57599a2dd95SBruce Richardson typedef int (*eventdev_xstats_get_t)(const struct rte_eventdev *dev,
57699a2dd95SBruce Richardson 		enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
5771bdfe4d7SPavan Nikhilesh 		const uint64_t ids[], uint64_t values[], unsigned int n);
57899a2dd95SBruce Richardson 
57999a2dd95SBruce Richardson /**
58099a2dd95SBruce Richardson  * Resets the statistic values in xstats for the device, based on mode.
58199a2dd95SBruce Richardson  */
58299a2dd95SBruce Richardson typedef int (*eventdev_xstats_reset_t)(struct rte_eventdev *dev,
58399a2dd95SBruce Richardson 		enum rte_event_dev_xstats_mode mode,
58499a2dd95SBruce Richardson 		int16_t queue_port_id,
5851bdfe4d7SPavan Nikhilesh 		const uint64_t ids[],
58699a2dd95SBruce Richardson 		uint32_t nb_ids);
58799a2dd95SBruce Richardson 
58899a2dd95SBruce Richardson /**
58999a2dd95SBruce Richardson  * Get names of extended stats of an event device
59099a2dd95SBruce Richardson  *
59199a2dd95SBruce Richardson  * @param dev
59299a2dd95SBruce Richardson  *   Event device pointer
59399a2dd95SBruce Richardson  * @param mode
59499a2dd95SBruce Richardson  *   Level (device, port or queue)
59599a2dd95SBruce Richardson  * @param queue_port_id
59699a2dd95SBruce Richardson  *   Queue or port number depending on mode
59799a2dd95SBruce Richardson  * @param xstats_names
59899a2dd95SBruce Richardson  *   Array of name values to be filled in
59999a2dd95SBruce Richardson  * @param ids
60099a2dd95SBruce Richardson  *   The stat ids to retrieve
60199a2dd95SBruce Richardson  * @param size
60299a2dd95SBruce Richardson  *   Number of values in the xstats_names array
60399a2dd95SBruce Richardson  * @return
60499a2dd95SBruce Richardson  *   When size >= the number of stats, return the number of stat values filled
60599a2dd95SBruce Richardson  *   into the array.
60699a2dd95SBruce Richardson  *   When size < the number of available stats, return the number of stats
60799a2dd95SBruce Richardson  *   values, and do not fill in any data into xstats_names.
60899a2dd95SBruce Richardson  */
60999a2dd95SBruce Richardson typedef int (*eventdev_xstats_get_names_t)(const struct rte_eventdev *dev,
61099a2dd95SBruce Richardson 		enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
61199a2dd95SBruce Richardson 		struct rte_event_dev_xstats_name *xstats_names,
6121bdfe4d7SPavan Nikhilesh 		uint64_t *ids, unsigned int size);
61399a2dd95SBruce Richardson 
61499a2dd95SBruce Richardson /**
61599a2dd95SBruce Richardson  * Get value of one stats and optionally return its id
61699a2dd95SBruce Richardson  *
61799a2dd95SBruce Richardson  * @param dev
61899a2dd95SBruce Richardson  *   Event device pointer
61999a2dd95SBruce Richardson  * @param name
62099a2dd95SBruce Richardson  *   The name of the stat to retrieve
62199a2dd95SBruce Richardson  * @param id
62299a2dd95SBruce Richardson  *   Pointer to an unsigned int where we store the stat-id for future reference.
62399a2dd95SBruce Richardson  *   This pointer may be null if the id is not required.
62499a2dd95SBruce Richardson  * @return
62599a2dd95SBruce Richardson  *   The value of the stat, or (uint64_t)-1 if the stat is not found.
62699a2dd95SBruce Richardson  *   If the stat is not found, the id value will be returned as (unsigned)-1,
62799a2dd95SBruce Richardson  *   if id pointer is non-NULL
62899a2dd95SBruce Richardson  */
62999a2dd95SBruce Richardson typedef uint64_t (*eventdev_xstats_get_by_name)(const struct rte_eventdev *dev,
6301bdfe4d7SPavan Nikhilesh 		const char *name, uint64_t *id);
63199a2dd95SBruce Richardson 
63299a2dd95SBruce Richardson 
63399a2dd95SBruce Richardson /**
63499a2dd95SBruce Richardson  * Retrieve the event device's ethdev Rx adapter capabilities for the
63599a2dd95SBruce Richardson  * specified ethernet port
63699a2dd95SBruce Richardson  *
63799a2dd95SBruce Richardson  * @param dev
63899a2dd95SBruce Richardson  *   Event device pointer
63999a2dd95SBruce Richardson  *
64099a2dd95SBruce Richardson  * @param eth_dev
64199a2dd95SBruce Richardson  *   Ethernet device pointer
64299a2dd95SBruce Richardson  *
64399a2dd95SBruce Richardson  * @param[out] caps
64499a2dd95SBruce Richardson  *   A pointer to memory filled with Rx event adapter capabilities.
64599a2dd95SBruce Richardson  *
64699a2dd95SBruce Richardson  * @return
64799a2dd95SBruce Richardson  *   - 0: Success, driver provides Rx event adapter capabilities for the
64899a2dd95SBruce Richardson  *	ethernet device.
64999a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
65099a2dd95SBruce Richardson  */
65199a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_caps_get_t)
65299a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
65399a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
65499a2dd95SBruce Richardson 					uint32_t *caps);
65599a2dd95SBruce Richardson 
65699a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_queue_conf;
65799a2dd95SBruce Richardson 
65899a2dd95SBruce Richardson /**
65999a2dd95SBruce Richardson  * Retrieve the event device's timer adapter capabilities, as well as the ops
66099a2dd95SBruce Richardson  * structure that an event timer adapter should call through to enter the
66199a2dd95SBruce Richardson  * driver
66299a2dd95SBruce Richardson  *
66399a2dd95SBruce Richardson  * @param dev
66499a2dd95SBruce Richardson  *   Event device pointer
66599a2dd95SBruce Richardson  *
66699a2dd95SBruce Richardson  * @param flags
66799a2dd95SBruce Richardson  *   Flags that can be used to determine how to select an event timer
66899a2dd95SBruce Richardson  *   adapter ops structure
66999a2dd95SBruce Richardson  *
67099a2dd95SBruce Richardson  * @param[out] caps
67199a2dd95SBruce Richardson  *   A pointer to memory filled with Rx event adapter capabilities.
67299a2dd95SBruce Richardson  *
67399a2dd95SBruce Richardson  * @param[out] ops
67499a2dd95SBruce Richardson  *   A pointer to the ops pointer to set with the address of the desired ops
67599a2dd95SBruce Richardson  *   structure
67699a2dd95SBruce Richardson  *
67799a2dd95SBruce Richardson  * @return
67899a2dd95SBruce Richardson  *   - 0: Success, driver provides Rx event adapter capabilities for the
67999a2dd95SBruce Richardson  *	ethernet device.
68099a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
68199a2dd95SBruce Richardson  */
68299a2dd95SBruce Richardson typedef int (*eventdev_timer_adapter_caps_get_t)(
68353548ad3SPavan Nikhilesh 	const struct rte_eventdev *dev, uint64_t flags, uint32_t *caps,
68453548ad3SPavan Nikhilesh 	const struct event_timer_adapter_ops **ops);
68599a2dd95SBruce Richardson 
68699a2dd95SBruce Richardson /**
68799a2dd95SBruce Richardson  * Add ethernet Rx queues to event device. This callback is invoked if
68899a2dd95SBruce Richardson  * the caps returned from rte_eventdev_eth_rx_adapter_caps_get(, eth_port_id)
68999a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
69099a2dd95SBruce Richardson  *
69199a2dd95SBruce Richardson  * @param dev
69299a2dd95SBruce Richardson  *   Event device pointer
69399a2dd95SBruce Richardson  *
69499a2dd95SBruce Richardson  * @param eth_dev
69599a2dd95SBruce Richardson  *   Ethernet device pointer
69699a2dd95SBruce Richardson  *
69799a2dd95SBruce Richardson  * @param rx_queue_id
69899a2dd95SBruce Richardson  *   Ethernet device receive queue index
69999a2dd95SBruce Richardson  *
70099a2dd95SBruce Richardson  * @param queue_conf
70199a2dd95SBruce Richardson  *  Additional configuration structure
70299a2dd95SBruce Richardson 
70399a2dd95SBruce Richardson  * @return
70499a2dd95SBruce Richardson  *   - 0: Success, ethernet receive queue added successfully.
70599a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
70699a2dd95SBruce Richardson  */
70799a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_queue_add_t)(
70899a2dd95SBruce Richardson 		const struct rte_eventdev *dev,
70999a2dd95SBruce Richardson 		const struct rte_eth_dev *eth_dev,
71099a2dd95SBruce Richardson 		int32_t rx_queue_id,
71199a2dd95SBruce Richardson 		const struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
71299a2dd95SBruce Richardson 
71399a2dd95SBruce Richardson /**
71499a2dd95SBruce Richardson  * Delete ethernet Rx queues from event device. This callback is invoked if
71599a2dd95SBruce Richardson  * the caps returned from eventdev_eth_rx_adapter_caps_get(, eth_port_id)
71699a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
71799a2dd95SBruce Richardson  *
71899a2dd95SBruce Richardson  * @param dev
71999a2dd95SBruce Richardson  *   Event device pointer
72099a2dd95SBruce Richardson  *
72199a2dd95SBruce Richardson  * @param eth_dev
72299a2dd95SBruce Richardson  *   Ethernet device pointer
72399a2dd95SBruce Richardson  *
72499a2dd95SBruce Richardson  * @param rx_queue_id
72599a2dd95SBruce Richardson  *   Ethernet device receive queue index
72699a2dd95SBruce Richardson  *
72799a2dd95SBruce Richardson  * @return
72899a2dd95SBruce Richardson  *   - 0: Success, ethernet receive queue deleted successfully.
72999a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
73099a2dd95SBruce Richardson  */
73199a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_queue_del_t)
73299a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
73399a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
73499a2dd95SBruce Richardson 					int32_t rx_queue_id);
73599a2dd95SBruce Richardson 
73699a2dd95SBruce Richardson /**
737da781e64SGanapati Kundapura  * Retrieve Rx adapter queue config information for the specified
738da781e64SGanapati Kundapura  * rx queue ID.
739da781e64SGanapati Kundapura  *
740da781e64SGanapati Kundapura  * @param dev
741da781e64SGanapati Kundapura  *  Event device pointer
742da781e64SGanapati Kundapura  *
743da781e64SGanapati Kundapura  * @param eth_dev
744da781e64SGanapati Kundapura  *  Ethernet device pointer
745da781e64SGanapati Kundapura  *
746da781e64SGanapati Kundapura  * @param rx_queue_id
747da781e64SGanapati Kundapura  *  Ethernet device receive queue index.
748da781e64SGanapati Kundapura  *
749da781e64SGanapati Kundapura  * @param[out] queue_conf
750da781e64SGanapati Kundapura  *  Pointer to rte_event_eth_rx_adapter_queue_conf structure
751da781e64SGanapati Kundapura  *
752da781e64SGanapati Kundapura  * @return
753da781e64SGanapati Kundapura  *  - 0: Success
754da781e64SGanapati Kundapura  *  - <0: Error code on failure.
755da781e64SGanapati Kundapura  */
756da781e64SGanapati Kundapura typedef int (*eventdev_eth_rx_adapter_queue_conf_get_t)
757da781e64SGanapati Kundapura 			(const struct rte_eventdev *dev,
758da781e64SGanapati Kundapura 			const struct rte_eth_dev *eth_dev,
759da781e64SGanapati Kundapura 			uint16_t rx_queue_id,
760da781e64SGanapati Kundapura 			struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
761da781e64SGanapati Kundapura 
762da781e64SGanapati Kundapura /**
76399a2dd95SBruce Richardson  * Start ethernet Rx adapter. This callback is invoked if
76499a2dd95SBruce Richardson  * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_id)
76599a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
76699a2dd95SBruce Richardson  * from eth_port_id have been added to the event device.
76799a2dd95SBruce Richardson  *
76899a2dd95SBruce Richardson  * @param dev
76999a2dd95SBruce Richardson  *   Event device pointer
77099a2dd95SBruce Richardson  *
77199a2dd95SBruce Richardson  * @param eth_dev
77299a2dd95SBruce Richardson  *   Ethernet device pointer
77399a2dd95SBruce Richardson  *
77499a2dd95SBruce Richardson  * @return
77599a2dd95SBruce Richardson  *   - 0: Success, ethernet Rx adapter started successfully.
77699a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
77799a2dd95SBruce Richardson  */
77899a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_start_t)
77999a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
78099a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev);
78199a2dd95SBruce Richardson 
78299a2dd95SBruce Richardson /**
78399a2dd95SBruce Richardson  * Stop ethernet Rx adapter. This callback is invoked if
78499a2dd95SBruce Richardson  * the caps returned from eventdev_eth_rx_adapter_caps_get(..,eth_port_id)
78599a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
78699a2dd95SBruce Richardson  * from eth_port_id have been added to the event device.
78799a2dd95SBruce Richardson  *
78899a2dd95SBruce Richardson  * @param dev
78999a2dd95SBruce Richardson  *   Event device pointer
79099a2dd95SBruce Richardson  *
79199a2dd95SBruce Richardson  * @param eth_dev
79299a2dd95SBruce Richardson  *   Ethernet device pointer
79399a2dd95SBruce Richardson  *
79499a2dd95SBruce Richardson  * @return
79599a2dd95SBruce Richardson  *   - 0: Success, ethernet Rx adapter stopped successfully.
79699a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
79799a2dd95SBruce Richardson  */
79899a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stop_t)
79999a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
80099a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev);
80199a2dd95SBruce Richardson 
80299a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_stats;
80399a2dd95SBruce Richardson 
80499a2dd95SBruce Richardson /**
80599a2dd95SBruce Richardson  * Retrieve ethernet Rx adapter statistics.
80699a2dd95SBruce Richardson  *
80799a2dd95SBruce Richardson  * @param dev
80899a2dd95SBruce Richardson  *   Event device pointer
80999a2dd95SBruce Richardson  *
81099a2dd95SBruce Richardson  * @param eth_dev
81199a2dd95SBruce Richardson  *   Ethernet device pointer
81299a2dd95SBruce Richardson  *
81399a2dd95SBruce Richardson  * @param[out] stats
81499a2dd95SBruce Richardson  *   Pointer to stats structure
81599a2dd95SBruce Richardson  *
81699a2dd95SBruce Richardson  * @return
81799a2dd95SBruce Richardson  *   Return 0 on success.
81899a2dd95SBruce Richardson  */
81999a2dd95SBruce Richardson 
82099a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stats_get)
82199a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
82299a2dd95SBruce Richardson 			const struct rte_eth_dev *eth_dev,
82399a2dd95SBruce Richardson 			struct rte_event_eth_rx_adapter_stats *stats);
82499a2dd95SBruce Richardson /**
82599a2dd95SBruce Richardson  * Reset ethernet Rx adapter statistics.
82699a2dd95SBruce Richardson  *
82799a2dd95SBruce Richardson  * @param dev
82899a2dd95SBruce Richardson  *   Event device pointer
82999a2dd95SBruce Richardson  *
83099a2dd95SBruce Richardson  * @param eth_dev
83199a2dd95SBruce Richardson  *   Ethernet device pointer
83299a2dd95SBruce Richardson  *
83399a2dd95SBruce Richardson  * @return
83499a2dd95SBruce Richardson  *   Return 0 on success.
83599a2dd95SBruce Richardson  */
83699a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stats_reset)
83799a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
83899a2dd95SBruce Richardson 			const struct rte_eth_dev *eth_dev);
839995b150cSNaga Harish K S V 
840995b150cSNaga Harish K S V struct rte_event_eth_rx_adapter_queue_stats;
841995b150cSNaga Harish K S V 
842995b150cSNaga Harish K S V /**
843995b150cSNaga Harish K S V  * Retrieve ethernet Rx adapter queue statistics.
844995b150cSNaga Harish K S V  *
845995b150cSNaga Harish K S V  * @param dev
846995b150cSNaga Harish K S V  *   Event device pointer
847995b150cSNaga Harish K S V  *
848995b150cSNaga Harish K S V  * @param eth_dev
849995b150cSNaga Harish K S V  *   Ethernet device pointer
850995b150cSNaga Harish K S V  *
851995b150cSNaga Harish K S V  * @param rx_queue_id
852995b150cSNaga Harish K S V  *  Ethernet device receive queue index.
853995b150cSNaga Harish K S V  *
854995b150cSNaga Harish K S V  * @param[out] q_stats
855995b150cSNaga Harish K S V  *   Pointer to queue stats structure
856995b150cSNaga Harish K S V  *
857995b150cSNaga Harish K S V  * @return
858995b150cSNaga Harish K S V  *   Return 0 on success.
859995b150cSNaga Harish K S V  */
860995b150cSNaga Harish K S V typedef int (*eventdev_eth_rx_adapter_q_stats_get)
861995b150cSNaga Harish K S V 			(const struct rte_eventdev *dev,
862995b150cSNaga Harish K S V 			 const struct rte_eth_dev *eth_dev,
863995b150cSNaga Harish K S V 			 uint16_t rx_queue_id,
864995b150cSNaga Harish K S V 			 struct rte_event_eth_rx_adapter_queue_stats *q_stats);
865995b150cSNaga Harish K S V 
866995b150cSNaga Harish K S V /**
867995b150cSNaga Harish K S V  * Reset ethernet Rx adapter queue statistics.
868995b150cSNaga Harish K S V  *
869995b150cSNaga Harish K S V  * @param dev
870995b150cSNaga Harish K S V  *   Event device pointer
871995b150cSNaga Harish K S V  *
872995b150cSNaga Harish K S V  * @param eth_dev
873995b150cSNaga Harish K S V  *   Ethernet device pointer
874995b150cSNaga Harish K S V  *
875995b150cSNaga Harish K S V  * @param rx_queue_id
876995b150cSNaga Harish K S V  *  Ethernet device receive queue index.
877995b150cSNaga Harish K S V  *
878995b150cSNaga Harish K S V  * @return
879995b150cSNaga Harish K S V  *   Return 0 on success.
880995b150cSNaga Harish K S V  */
881995b150cSNaga Harish K S V typedef int (*eventdev_eth_rx_adapter_q_stats_reset)
882995b150cSNaga Harish K S V 			(const struct rte_eventdev *dev,
883995b150cSNaga Harish K S V 			 const struct rte_eth_dev *eth_dev,
884995b150cSNaga Harish K S V 			 uint16_t rx_queue_id);
885995b150cSNaga Harish K S V 
88699a2dd95SBruce Richardson /**
88799a2dd95SBruce Richardson  * Start eventdev selftest.
88899a2dd95SBruce Richardson  *
88999a2dd95SBruce Richardson  * @return
89099a2dd95SBruce Richardson  *   Return 0 on success.
89199a2dd95SBruce Richardson  */
89299a2dd95SBruce Richardson typedef int (*eventdev_selftest)(void);
89399a2dd95SBruce Richardson 
89499a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_vector_limits;
89599a2dd95SBruce Richardson /**
89699a2dd95SBruce Richardson  * Get event vector limits for a given event, ethernet device pair.
89799a2dd95SBruce Richardson  *
89899a2dd95SBruce Richardson  * @param dev
89999a2dd95SBruce Richardson  *   Event device pointer
90099a2dd95SBruce Richardson  *
90199a2dd95SBruce Richardson  * @param eth_dev
90299a2dd95SBruce Richardson  *   Ethernet device pointer
90399a2dd95SBruce Richardson  *
90499a2dd95SBruce Richardson  * @param[out] limits
90599a2dd95SBruce Richardson  *   Pointer to the limits structure to be filled.
90699a2dd95SBruce Richardson  *
90799a2dd95SBruce Richardson  * @return
90899a2dd95SBruce Richardson  *   - 0: Success.
90999a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
91099a2dd95SBruce Richardson  */
91199a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_vector_limits_get_t)(
91299a2dd95SBruce Richardson 	const struct rte_eventdev *dev, const struct rte_eth_dev *eth_dev,
91399a2dd95SBruce Richardson 	struct rte_event_eth_rx_adapter_vector_limits *limits);
91499a2dd95SBruce Richardson 
915a1793ee8SGanapati Kundapura /**
916a1793ee8SGanapati Kundapura  * Get Rx adapter instance ID for Rx queue
917a1793ee8SGanapati Kundapura  *
918a1793ee8SGanapati Kundapura  * @param eth_dev_id
919a1793ee8SGanapati Kundapura  *  Port identifier of ethernet device
920a1793ee8SGanapati Kundapura  *
921a1793ee8SGanapati Kundapura  * @param rx_queue_id
922a1793ee8SGanapati Kundapura  *  Ethernet device Rx queue index
923a1793ee8SGanapati Kundapura  *
924a1793ee8SGanapati Kundapura  * @param[out] rxa_inst_id
925a1793ee8SGanapati Kundapura  *  Pointer to Rx adapter instance identifier.
926a1793ee8SGanapati Kundapura  *  Contains valid Rx adapter instance ID when return value is 0
927a1793ee8SGanapati Kundapura  *
928a1793ee8SGanapati Kundapura  * @return
929a1793ee8SGanapati Kundapura  *   -  0: Success
930a1793ee8SGanapati Kundapura  *   - <0: Error code on failure
931a1793ee8SGanapati Kundapura  */
932a1793ee8SGanapati Kundapura typedef int (*eventdev_eth_rx_adapter_instance_get_t)
933a1793ee8SGanapati Kundapura 	(uint16_t eth_dev_id, uint16_t rx_queue_id, uint8_t *rxa_inst_id);
934a1793ee8SGanapati Kundapura 
93599a2dd95SBruce Richardson typedef uint32_t rte_event_pmd_selftest_seqn_t;
93699a2dd95SBruce Richardson extern int rte_event_pmd_selftest_seqn_dynfield_offset;
93799a2dd95SBruce Richardson 
93899a2dd95SBruce Richardson /**
93999a2dd95SBruce Richardson  * Read test sequence number from mbuf.
94099a2dd95SBruce Richardson  *
94199a2dd95SBruce Richardson  * @param mbuf Structure to read from.
94299a2dd95SBruce Richardson  * @return pointer to test sequence number.
94399a2dd95SBruce Richardson  */
94499a2dd95SBruce Richardson __rte_internal
94599a2dd95SBruce Richardson static inline rte_event_pmd_selftest_seqn_t *
94699a2dd95SBruce Richardson rte_event_pmd_selftest_seqn(struct rte_mbuf *mbuf)
94799a2dd95SBruce Richardson {
94899a2dd95SBruce Richardson 	return RTE_MBUF_DYNFIELD(mbuf,
94999a2dd95SBruce Richardson 		rte_event_pmd_selftest_seqn_dynfield_offset,
95099a2dd95SBruce Richardson 		rte_event_pmd_selftest_seqn_t *);
95199a2dd95SBruce Richardson }
95299a2dd95SBruce Richardson 
95399a2dd95SBruce Richardson struct rte_cryptodev;
954c1749bc5SVolodymyr Fialko struct rte_event_crypto_adapter_queue_conf;
95599a2dd95SBruce Richardson 
95699a2dd95SBruce Richardson /**
95799a2dd95SBruce Richardson  * This API may change without prior notice
95899a2dd95SBruce Richardson  *
95999a2dd95SBruce Richardson  * Retrieve the event device's crypto adapter capabilities for the
96099a2dd95SBruce Richardson  * specified cryptodev
96199a2dd95SBruce Richardson  *
96299a2dd95SBruce Richardson  * @param dev
96399a2dd95SBruce Richardson  *   Event device pointer
96499a2dd95SBruce Richardson  *
96599a2dd95SBruce Richardson  * @param cdev
96699a2dd95SBruce Richardson  *   cryptodev pointer
96799a2dd95SBruce Richardson  *
96899a2dd95SBruce Richardson  * @param[out] caps
96999a2dd95SBruce Richardson  *   A pointer to memory filled with event adapter capabilities.
97099a2dd95SBruce Richardson  *   It is expected to be pre-allocated & initialized by caller.
97199a2dd95SBruce Richardson  *
97299a2dd95SBruce Richardson  * @return
97399a2dd95SBruce Richardson  *   - 0: Success, driver provides event adapter capabilities for the
97499a2dd95SBruce Richardson  *	cryptodev.
97599a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
97699a2dd95SBruce Richardson  */
97799a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_caps_get_t)
97899a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
97999a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev,
98099a2dd95SBruce Richardson 					 uint32_t *caps);
98199a2dd95SBruce Richardson 
98299a2dd95SBruce Richardson /**
98399a2dd95SBruce Richardson  * This API may change without prior notice
98499a2dd95SBruce Richardson  *
98599a2dd95SBruce Richardson  * Add crypto queue pair to event device. This callback is invoked if
98699a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
98799a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
98899a2dd95SBruce Richardson  *
98999a2dd95SBruce Richardson  * @param dev
99099a2dd95SBruce Richardson  *   Event device pointer
99199a2dd95SBruce Richardson  *
99299a2dd95SBruce Richardson  * @param cdev
99399a2dd95SBruce Richardson  *   cryptodev pointer
99499a2dd95SBruce Richardson  *
99599a2dd95SBruce Richardson  * @param queue_pair_id
99699a2dd95SBruce Richardson  *   cryptodev queue pair identifier.
99799a2dd95SBruce Richardson  *
99899a2dd95SBruce Richardson  * @param event
99999a2dd95SBruce Richardson  *  Event information required for binding cryptodev queue pair to event queue.
100099a2dd95SBruce Richardson  *  This structure will have a valid value for only those HW PMDs supporting
100199a2dd95SBruce Richardson  *  @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability.
100299a2dd95SBruce Richardson  *
100399a2dd95SBruce Richardson  * @return
100499a2dd95SBruce Richardson  *   - 0: Success, cryptodev queue pair added successfully.
100599a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
100699a2dd95SBruce Richardson  */
1007c1749bc5SVolodymyr Fialko typedef int (*eventdev_crypto_adapter_queue_pair_add_t)(
1008c1749bc5SVolodymyr Fialko 		const struct rte_eventdev *dev,
100999a2dd95SBruce Richardson 		const struct rte_cryptodev *cdev,
101099a2dd95SBruce Richardson 		int32_t queue_pair_id,
1011c1749bc5SVolodymyr Fialko 		const struct rte_event_crypto_adapter_queue_conf *queue_conf);
101299a2dd95SBruce Richardson 
101399a2dd95SBruce Richardson 
101499a2dd95SBruce Richardson /**
101599a2dd95SBruce Richardson  * This API may change without prior notice
101699a2dd95SBruce Richardson  *
101799a2dd95SBruce Richardson  * Delete crypto queue pair to event device. This callback is invoked if
101899a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
101999a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
102099a2dd95SBruce Richardson  *
102199a2dd95SBruce Richardson  * @param dev
102299a2dd95SBruce Richardson  *   Event device pointer
102399a2dd95SBruce Richardson  *
102499a2dd95SBruce Richardson  * @param cdev
102599a2dd95SBruce Richardson  *   cryptodev pointer
102699a2dd95SBruce Richardson  *
102799a2dd95SBruce Richardson  * @param queue_pair_id
102899a2dd95SBruce Richardson  *   cryptodev queue pair identifier.
102999a2dd95SBruce Richardson  *
103099a2dd95SBruce Richardson  * @return
103199a2dd95SBruce Richardson  *   - 0: Success, cryptodev queue pair deleted successfully.
103299a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
103399a2dd95SBruce Richardson  */
103499a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_queue_pair_del_t)
103599a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
103699a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev,
103799a2dd95SBruce Richardson 					 int32_t queue_pair_id);
103899a2dd95SBruce Richardson 
103999a2dd95SBruce Richardson /**
104099a2dd95SBruce Richardson  * Start crypto adapter. This callback is invoked if
104199a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
104299a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
104399a2dd95SBruce Richardson  * from cdev_id have been added to the event device.
104499a2dd95SBruce Richardson  *
104599a2dd95SBruce Richardson  * @param dev
104699a2dd95SBruce Richardson  *   Event device pointer
104799a2dd95SBruce Richardson  *
104899a2dd95SBruce Richardson  * @param cdev
104999a2dd95SBruce Richardson  *   Crypto device pointer
105099a2dd95SBruce Richardson  *
105199a2dd95SBruce Richardson  * @return
105299a2dd95SBruce Richardson  *   - 0: Success, crypto adapter started successfully.
105399a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
105499a2dd95SBruce Richardson  */
105599a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_start_t)
105699a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
105799a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev);
105899a2dd95SBruce Richardson 
105999a2dd95SBruce Richardson /**
106099a2dd95SBruce Richardson  * Stop crypto adapter. This callback is invoked if
106199a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
106299a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
106399a2dd95SBruce Richardson  * from cdev_id have been added to the event device.
106499a2dd95SBruce Richardson  *
106599a2dd95SBruce Richardson  * @param dev
106699a2dd95SBruce Richardson  *   Event device pointer
106799a2dd95SBruce Richardson  *
106899a2dd95SBruce Richardson  * @param cdev
106999a2dd95SBruce Richardson  *   Crypto device pointer
107099a2dd95SBruce Richardson  *
107199a2dd95SBruce Richardson  * @return
107299a2dd95SBruce Richardson  *   - 0: Success, crypto adapter stopped successfully.
107399a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
107499a2dd95SBruce Richardson  */
107599a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stop_t)
107699a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
107799a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev);
107899a2dd95SBruce Richardson 
107999a2dd95SBruce Richardson struct rte_event_crypto_adapter_stats;
108099a2dd95SBruce Richardson 
108199a2dd95SBruce Richardson /**
108299a2dd95SBruce Richardson  * Retrieve crypto adapter statistics.
108399a2dd95SBruce Richardson  *
108499a2dd95SBruce Richardson  * @param dev
108599a2dd95SBruce Richardson  *   Event device pointer
108699a2dd95SBruce Richardson  *
108799a2dd95SBruce Richardson  * @param cdev
108899a2dd95SBruce Richardson  *   Crypto device pointer
108999a2dd95SBruce Richardson  *
109099a2dd95SBruce Richardson  * @param[out] stats
109199a2dd95SBruce Richardson  *   Pointer to stats structure
109299a2dd95SBruce Richardson  *
109399a2dd95SBruce Richardson  * @return
109499a2dd95SBruce Richardson  *   Return 0 on success.
109599a2dd95SBruce Richardson  */
109699a2dd95SBruce Richardson 
109799a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stats_get)
109899a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
109999a2dd95SBruce Richardson 			 const struct rte_cryptodev *cdev,
110099a2dd95SBruce Richardson 			 struct rte_event_crypto_adapter_stats *stats);
110199a2dd95SBruce Richardson 
110299a2dd95SBruce Richardson /**
110399a2dd95SBruce Richardson  * Reset crypto adapter statistics.
110499a2dd95SBruce Richardson  *
110599a2dd95SBruce Richardson  * @param dev
110699a2dd95SBruce Richardson  *   Event device pointer
110799a2dd95SBruce Richardson  *
110899a2dd95SBruce Richardson  * @param cdev
110999a2dd95SBruce Richardson  *   Crypto device pointer
111099a2dd95SBruce Richardson  *
111199a2dd95SBruce Richardson  * @return
111299a2dd95SBruce Richardson  *   Return 0 on success.
111399a2dd95SBruce Richardson  */
111499a2dd95SBruce Richardson 
111599a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stats_reset)
111699a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
111799a2dd95SBruce Richardson 			 const struct rte_cryptodev *cdev);
111899a2dd95SBruce Richardson 
1119c1749bc5SVolodymyr Fialko struct rte_event_crypto_adapter_vector_limits;
1120c1749bc5SVolodymyr Fialko /**
1121c1749bc5SVolodymyr Fialko  * Get event vector limits for a given event, crypto device pair.
1122c1749bc5SVolodymyr Fialko  *
1123c1749bc5SVolodymyr Fialko  * @param dev
1124c1749bc5SVolodymyr Fialko  *   Event device pointer
1125c1749bc5SVolodymyr Fialko  *
1126c1749bc5SVolodymyr Fialko  * @param cdev
1127c1749bc5SVolodymyr Fialko  *   Crypto device pointer
1128c1749bc5SVolodymyr Fialko  *
1129c1749bc5SVolodymyr Fialko  * @param[out] limits
1130c1749bc5SVolodymyr Fialko  *   Pointer to the limits structure to be filled.
1131c1749bc5SVolodymyr Fialko  *
1132c1749bc5SVolodymyr Fialko  * @return
1133c1749bc5SVolodymyr Fialko  *   - 0: Success.
1134c1749bc5SVolodymyr Fialko  *   - <0: Error code returned by the driver function.
1135c1749bc5SVolodymyr Fialko  */
1136c1749bc5SVolodymyr Fialko typedef int (*eventdev_crypto_adapter_vector_limits_get_t)(
1137c1749bc5SVolodymyr Fialko 	const struct rte_eventdev *dev, const struct rte_cryptodev *cdev,
1138c1749bc5SVolodymyr Fialko 	struct rte_event_crypto_adapter_vector_limits *limits);
1139c1749bc5SVolodymyr Fialko 
114099a2dd95SBruce Richardson /**
114199a2dd95SBruce Richardson  * Retrieve the event device's eth Tx adapter capabilities.
114299a2dd95SBruce Richardson  *
114399a2dd95SBruce Richardson  * @param dev
114499a2dd95SBruce Richardson  *   Event device pointer
114599a2dd95SBruce Richardson  *
114699a2dd95SBruce Richardson  * @param eth_dev
114799a2dd95SBruce Richardson  *   Ethernet device pointer
114899a2dd95SBruce Richardson  *
114999a2dd95SBruce Richardson  * @param[out] caps
115099a2dd95SBruce Richardson  *   A pointer to memory filled with eth Tx adapter capabilities.
115199a2dd95SBruce Richardson  *
115299a2dd95SBruce Richardson  * @return
115399a2dd95SBruce Richardson  *   - 0: Success, driver provides eth Tx adapter capabilities
115499a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
115599a2dd95SBruce Richardson  */
115699a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_caps_get_t)
115799a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
115899a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
115999a2dd95SBruce Richardson 					uint32_t *caps);
116099a2dd95SBruce Richardson 
116199a2dd95SBruce Richardson /**
116299a2dd95SBruce Richardson  * Create adapter callback.
116399a2dd95SBruce Richardson  *
116499a2dd95SBruce Richardson  * @param id
116599a2dd95SBruce Richardson  *   Adapter identifier
116699a2dd95SBruce Richardson  *
116799a2dd95SBruce Richardson  * @param dev
116899a2dd95SBruce Richardson  *   Event device pointer
116999a2dd95SBruce Richardson  *
117099a2dd95SBruce Richardson  * @return
117199a2dd95SBruce Richardson  *   - 0: Success.
117299a2dd95SBruce Richardson  *   - <0: Error code on failure.
117399a2dd95SBruce Richardson  */
117499a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_create_t)(uint8_t id,
117599a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
117699a2dd95SBruce Richardson 
117799a2dd95SBruce Richardson /**
117899a2dd95SBruce Richardson  * Free adapter callback.
117999a2dd95SBruce Richardson  *
118099a2dd95SBruce Richardson  * @param id
118199a2dd95SBruce Richardson  *   Adapter identifier
118299a2dd95SBruce Richardson  *
118399a2dd95SBruce Richardson  * @param dev
118499a2dd95SBruce Richardson  *   Event device pointer
118599a2dd95SBruce Richardson  *
118699a2dd95SBruce Richardson  * @return
118799a2dd95SBruce Richardson  *   - 0: Success.
118899a2dd95SBruce Richardson  *   - <0: Error code on failure.
118999a2dd95SBruce Richardson  */
119099a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_free_t)(uint8_t id,
119199a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
119299a2dd95SBruce Richardson 
119399a2dd95SBruce Richardson /**
119499a2dd95SBruce Richardson  * Add a Tx queue to the adapter.
119599a2dd95SBruce Richardson  * A queue value of -1 is used to indicate all
119699a2dd95SBruce Richardson  * queues within the device.
119799a2dd95SBruce Richardson  *
119899a2dd95SBruce Richardson  * @param id
119999a2dd95SBruce Richardson  *   Adapter identifier
120099a2dd95SBruce Richardson  *
120199a2dd95SBruce Richardson  * @param dev
120299a2dd95SBruce Richardson  *   Event device pointer
120399a2dd95SBruce Richardson  *
120499a2dd95SBruce Richardson  * @param eth_dev
120599a2dd95SBruce Richardson  *   Ethernet device pointer
120699a2dd95SBruce Richardson  *
120799a2dd95SBruce Richardson  * @param tx_queue_id
120899a2dd95SBruce Richardson  *   Transmit queue index
120999a2dd95SBruce Richardson  *
121099a2dd95SBruce Richardson  * @return
121199a2dd95SBruce Richardson  *   - 0: Success.
121299a2dd95SBruce Richardson  *   - <0: Error code on failure.
121399a2dd95SBruce Richardson  */
121499a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_queue_add_t)(
121599a2dd95SBruce Richardson 					uint8_t id,
121699a2dd95SBruce Richardson 					const struct rte_eventdev *dev,
121799a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
121899a2dd95SBruce Richardson 					int32_t tx_queue_id);
121999a2dd95SBruce Richardson 
122099a2dd95SBruce Richardson /**
122199a2dd95SBruce Richardson  * Delete a Tx queue from the adapter.
122299a2dd95SBruce Richardson  * A queue value of -1 is used to indicate all
122399a2dd95SBruce Richardson  * queues within the device, that have been added to this
122499a2dd95SBruce Richardson  * adapter.
122599a2dd95SBruce Richardson  *
122699a2dd95SBruce Richardson  * @param id
122799a2dd95SBruce Richardson  *   Adapter identifier
122899a2dd95SBruce Richardson  *
122999a2dd95SBruce Richardson  * @param dev
123099a2dd95SBruce Richardson  *   Event device pointer
123199a2dd95SBruce Richardson  *
123299a2dd95SBruce Richardson  * @param eth_dev
123399a2dd95SBruce Richardson  *   Ethernet device pointer
123499a2dd95SBruce Richardson  *
123599a2dd95SBruce Richardson  * @param tx_queue_id
123699a2dd95SBruce Richardson  *   Transmit queue index
123799a2dd95SBruce Richardson  *
123899a2dd95SBruce Richardson  * @return
123999a2dd95SBruce Richardson  *  - 0: Success, Queues deleted successfully.
124099a2dd95SBruce Richardson  *  - <0: Error code on failure.
124199a2dd95SBruce Richardson  */
124299a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_queue_del_t)(
124399a2dd95SBruce Richardson 					uint8_t id,
124499a2dd95SBruce Richardson 					const struct rte_eventdev *dev,
124599a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
124699a2dd95SBruce Richardson 					int32_t tx_queue_id);
124799a2dd95SBruce Richardson 
124899a2dd95SBruce Richardson /**
124999a2dd95SBruce Richardson  * Start the adapter.
125099a2dd95SBruce Richardson  *
125199a2dd95SBruce Richardson  * @param id
125299a2dd95SBruce Richardson  *   Adapter identifier
125399a2dd95SBruce Richardson  *
125499a2dd95SBruce Richardson  * @param dev
125599a2dd95SBruce Richardson  *   Event device pointer
125699a2dd95SBruce Richardson  *
125799a2dd95SBruce Richardson  * @return
125899a2dd95SBruce Richardson  *  - 0: Success, Adapter started correctly.
125999a2dd95SBruce Richardson  *  - <0: Error code on failure.
126099a2dd95SBruce Richardson  */
126199a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_start_t)(uint8_t id,
126299a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
126399a2dd95SBruce Richardson 
126499a2dd95SBruce Richardson /**
126599a2dd95SBruce Richardson  * Stop the adapter.
126699a2dd95SBruce Richardson  *
126799a2dd95SBruce Richardson  * @param id
126899a2dd95SBruce Richardson  *  Adapter identifier
126999a2dd95SBruce Richardson  *
127099a2dd95SBruce Richardson  * @param dev
127199a2dd95SBruce Richardson  *   Event device pointer
127299a2dd95SBruce Richardson  *
127399a2dd95SBruce Richardson  * @return
127499a2dd95SBruce Richardson  *  - 0: Success.
127599a2dd95SBruce Richardson  *  - <0: Error code on failure.
127699a2dd95SBruce Richardson  */
127799a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stop_t)(uint8_t id,
127899a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
127999a2dd95SBruce Richardson 
128099a2dd95SBruce Richardson struct rte_event_eth_tx_adapter_stats;
128199a2dd95SBruce Richardson 
128299a2dd95SBruce Richardson /**
128399a2dd95SBruce Richardson  * Retrieve statistics for an adapter
128499a2dd95SBruce Richardson  *
128599a2dd95SBruce Richardson  * @param id
128699a2dd95SBruce Richardson  *  Adapter identifier
128799a2dd95SBruce Richardson  *
128899a2dd95SBruce Richardson  * @param dev
128999a2dd95SBruce Richardson  *   Event device pointer
129099a2dd95SBruce Richardson  *
129199a2dd95SBruce Richardson  * @param [out] stats
129299a2dd95SBruce Richardson  *  A pointer to structure used to retrieve statistics for an adapter
129399a2dd95SBruce Richardson  *
129499a2dd95SBruce Richardson  * @return
129599a2dd95SBruce Richardson  *  - 0: Success, statistics retrieved successfully.
129699a2dd95SBruce Richardson  *  - <0: Error code on failure.
129799a2dd95SBruce Richardson  */
129899a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stats_get_t)(
129999a2dd95SBruce Richardson 				uint8_t id,
130099a2dd95SBruce Richardson 				const struct rte_eventdev *dev,
130199a2dd95SBruce Richardson 				struct rte_event_eth_tx_adapter_stats *stats);
130299a2dd95SBruce Richardson 
130399a2dd95SBruce Richardson /**
130499a2dd95SBruce Richardson  * Reset statistics for an adapter
130599a2dd95SBruce Richardson  *
130699a2dd95SBruce Richardson  * @param id
130799a2dd95SBruce Richardson  *  Adapter identifier
130899a2dd95SBruce Richardson  *
130999a2dd95SBruce Richardson  * @param dev
131099a2dd95SBruce Richardson  *   Event device pointer
131199a2dd95SBruce Richardson  *
131299a2dd95SBruce Richardson  * @return
131399a2dd95SBruce Richardson  *  - 0: Success, statistics retrieved successfully.
131499a2dd95SBruce Richardson  *  - <0: Error code on failure.
131599a2dd95SBruce Richardson  */
131699a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id,
131799a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
131899a2dd95SBruce Richardson 
1319b2963cbdSGanapati Kundapura /**
1320b2963cbdSGanapati Kundapura  * Get TX adapter instance ID for Tx queue
1321b2963cbdSGanapati Kundapura  *
1322b2963cbdSGanapati Kundapura  * @param eth_dev_id
1323b2963cbdSGanapati Kundapura  *  Port identifier of Ethernet device
1324b2963cbdSGanapati Kundapura  *
1325b2963cbdSGanapati Kundapura  * @param tx_queue_id
1326b2963cbdSGanapati Kundapura  *  Ethernet device Tx queue index
1327b2963cbdSGanapati Kundapura  *
1328b2963cbdSGanapati Kundapura  * @param[out] txa_inst_id
1329b2963cbdSGanapati Kundapura  *  Pointer to Tx adapter instance identifier
1330b2963cbdSGanapati Kundapura  *  Contains valid Tx adapter instance ID when return value is 0
1331b2963cbdSGanapati Kundapura  *
1332b2963cbdSGanapati Kundapura  * @return
1333b2963cbdSGanapati Kundapura  *  -  0: Success
1334b2963cbdSGanapati Kundapura  *  - <0: Error code on failure
1335b2963cbdSGanapati Kundapura  */
1336b2963cbdSGanapati Kundapura typedef int (*eventdev_eth_tx_adapter_instance_get_t)
1337b2963cbdSGanapati Kundapura 	(uint16_t eth_dev_id, uint16_t tx_queue_id, uint8_t *txa_inst_id);
1338b2963cbdSGanapati Kundapura 
13393c3328aeSNaga Harish K S V /**
13403c3328aeSNaga Harish K S V  * Start a Tx queue that is assigned to Tx adapter instance
13413c3328aeSNaga Harish K S V  *
13423c3328aeSNaga Harish K S V  * @param id
13433c3328aeSNaga Harish K S V  *  Adapter identifier
13443c3328aeSNaga Harish K S V  *
13453c3328aeSNaga Harish K S V  * @param eth_dev_id
13463c3328aeSNaga Harish K S V  *  Port identifier of Ethernet device
13473c3328aeSNaga Harish K S V  *
13483c3328aeSNaga Harish K S V  * @param tx_queue_id
13493c3328aeSNaga Harish K S V  *  Ethernet device Tx queue index
13503c3328aeSNaga Harish K S V  *
13513c3328aeSNaga Harish K S V  * @return
13523c3328aeSNaga Harish K S V  *  -  0: Success
13533c3328aeSNaga Harish K S V  *  - <0: Error code on failure
13543c3328aeSNaga Harish K S V  */
13553c3328aeSNaga Harish K S V typedef int (*eventdev_eth_tx_adapter_queue_start)
13563c3328aeSNaga Harish K S V 	(uint8_t id, uint16_t eth_dev_id, uint16_t tx_queue_id);
13573c3328aeSNaga Harish K S V 
13583c3328aeSNaga Harish K S V /**
13593c3328aeSNaga Harish K S V  * Stop a Tx queue that is assigned to Tx adapter instance
13603c3328aeSNaga Harish K S V  *
13613c3328aeSNaga Harish K S V  * @param id
13623c3328aeSNaga Harish K S V  *  Adapter identifier
13633c3328aeSNaga Harish K S V  *
13643c3328aeSNaga Harish K S V  * @param eth_dev_id
13653c3328aeSNaga Harish K S V  *  Port identifier of Ethernet device
13663c3328aeSNaga Harish K S V  *
13673c3328aeSNaga Harish K S V  * @param tx_queue_id
13683c3328aeSNaga Harish K S V  *  Ethernet device Tx queue index
13693c3328aeSNaga Harish K S V  *
13703c3328aeSNaga Harish K S V  * @return
13713c3328aeSNaga Harish K S V  *  -  0: Success
13723c3328aeSNaga Harish K S V  *  - <0: Error code on failure
13733c3328aeSNaga Harish K S V  */
13743c3328aeSNaga Harish K S V typedef int (*eventdev_eth_tx_adapter_queue_stop)
13753c3328aeSNaga Harish K S V 	(uint8_t id, uint16_t eth_dev_id, uint16_t tx_queue_id);
1376b2963cbdSGanapati Kundapura 
1377d986276fSPavan Nikhilesh #define eventdev_stop_flush_t rte_eventdev_stop_flush_t
1378d986276fSPavan Nikhilesh 
137966a30a29SAmit Prakash Shukla /**
138066a30a29SAmit Prakash Shukla  * Retrieve the event device's DMA adapter capabilities for the
138166a30a29SAmit Prakash Shukla  * specified DMA device
138266a30a29SAmit Prakash Shukla  *
138366a30a29SAmit Prakash Shukla  * @param dev
138466a30a29SAmit Prakash Shukla  *   Event device pointer
138566a30a29SAmit Prakash Shukla  *
138666a30a29SAmit Prakash Shukla  * @param dma_dev_id
138766a30a29SAmit Prakash Shukla  *   DMA device identifier
138866a30a29SAmit Prakash Shukla  *
138966a30a29SAmit Prakash Shukla  * @param[out] caps
139066a30a29SAmit Prakash Shukla  *   A pointer to memory filled with event adapter capabilities.
139166a30a29SAmit Prakash Shukla  *   It is expected to be pre-allocated & initialized by caller.
139266a30a29SAmit Prakash Shukla  *
139366a30a29SAmit Prakash Shukla  * @return
139466a30a29SAmit Prakash Shukla  *   - 0: Success, driver provides event adapter capabilities for the
139566a30a29SAmit Prakash Shukla  *	dmadev.
139666a30a29SAmit Prakash Shukla  *   - <0: Error code returned by the driver function.
139766a30a29SAmit Prakash Shukla  *
139866a30a29SAmit Prakash Shukla  */
139966a30a29SAmit Prakash Shukla typedef int (*eventdev_dma_adapter_caps_get_t)(const struct rte_eventdev *dev,
140066a30a29SAmit Prakash Shukla 					       const int16_t dma_dev_id, uint32_t *caps);
140166a30a29SAmit Prakash Shukla 
140266a30a29SAmit Prakash Shukla /**
140366a30a29SAmit Prakash Shukla  * Add DMA vchan queue to event device. This callback is invoked if
140466a30a29SAmit Prakash Shukla  * the caps returned from rte_event_dma_adapter_caps_get(, dmadev_id)
140566a30a29SAmit Prakash Shukla  * has RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_* set.
140666a30a29SAmit Prakash Shukla  *
140766a30a29SAmit Prakash Shukla  * @param dev
140866a30a29SAmit Prakash Shukla  *   Event device pointer
140966a30a29SAmit Prakash Shukla  *
141066a30a29SAmit Prakash Shukla  * @param dma_dev_id
141166a30a29SAmit Prakash Shukla  *   DMA device identifier
141266a30a29SAmit Prakash Shukla  *
141366a30a29SAmit Prakash Shukla  * @param vchan_id
141466a30a29SAmit Prakash Shukla  *   dmadev vchan queue identifier.
141566a30a29SAmit Prakash Shukla  *
141666a30a29SAmit Prakash Shukla  * @param event
141766a30a29SAmit Prakash Shukla  *   Event information required for binding dmadev vchan to event queue.
141866a30a29SAmit Prakash Shukla  *   This structure will have a valid value for only those HW PMDs supporting
141966a30a29SAmit Prakash Shukla  *   @see RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND capability.
142066a30a29SAmit Prakash Shukla  *
142166a30a29SAmit Prakash Shukla  * @return
142266a30a29SAmit Prakash Shukla  *   - 0: Success, dmadev vchan added successfully.
142366a30a29SAmit Prakash Shukla  *   - <0: Error code returned by the driver function.
142466a30a29SAmit Prakash Shukla  *
142566a30a29SAmit Prakash Shukla  */
142666a30a29SAmit Prakash Shukla typedef int (*eventdev_dma_adapter_vchan_add_t)(const struct rte_eventdev *dev,
142766a30a29SAmit Prakash Shukla 						const int16_t dma_dev_id,
142866a30a29SAmit Prakash Shukla 						uint16_t vchan_id,
142966a30a29SAmit Prakash Shukla 						const struct rte_event *event);
143066a30a29SAmit Prakash Shukla 
143166a30a29SAmit Prakash Shukla /**
143266a30a29SAmit Prakash Shukla  * Delete DMA vhcan to event device. This callback is invoked if
143366a30a29SAmit Prakash Shukla  * the caps returned from rte_event_dma_adapter_caps_get(, dmadev_id)
143466a30a29SAmit Prakash Shukla  * has RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_* set.
143566a30a29SAmit Prakash Shukla  *
143666a30a29SAmit Prakash Shukla  * @param dev
143766a30a29SAmit Prakash Shukla  *   Event device pointer
143866a30a29SAmit Prakash Shukla  *
143966a30a29SAmit Prakash Shukla  * @param dma_dev_id
144066a30a29SAmit Prakash Shukla  *   DMA device identifier
144166a30a29SAmit Prakash Shukla  *
144266a30a29SAmit Prakash Shukla  * @param vchan_id
144366a30a29SAmit Prakash Shukla  *   dmadev vchan identifier.
144466a30a29SAmit Prakash Shukla  *
144566a30a29SAmit Prakash Shukla  * @return
144666a30a29SAmit Prakash Shukla  *   - 0: Success, dmadev vchan deleted successfully.
144766a30a29SAmit Prakash Shukla  *   - <0: Error code returned by the driver function.
144866a30a29SAmit Prakash Shukla  *
144966a30a29SAmit Prakash Shukla  */
145066a30a29SAmit Prakash Shukla typedef int (*eventdev_dma_adapter_vchan_del_t)(const struct rte_eventdev *dev,
145166a30a29SAmit Prakash Shukla 						const int16_t dma_dev_id,
145266a30a29SAmit Prakash Shukla 						uint16_t vchan_id);
145366a30a29SAmit Prakash Shukla 
145466a30a29SAmit Prakash Shukla /**
145566a30a29SAmit Prakash Shukla  * Start DMA adapter. This callback is invoked if
145666a30a29SAmit Prakash Shukla  * the caps returned from rte_event_dma_adapter_caps_get(.., dmadev_id)
145766a30a29SAmit Prakash Shukla  * has RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_* set and vchan for dmadev_id
145866a30a29SAmit Prakash Shukla  * have been added to the event device.
145966a30a29SAmit Prakash Shukla  *
146066a30a29SAmit Prakash Shukla  * @param dev
146166a30a29SAmit Prakash Shukla  *   Event device pointer
146266a30a29SAmit Prakash Shukla  *
146366a30a29SAmit Prakash Shukla  * @param dma_dev_id
146466a30a29SAmit Prakash Shukla  *   DMA device identifier
146566a30a29SAmit Prakash Shukla  *
146666a30a29SAmit Prakash Shukla  * @return
146766a30a29SAmit Prakash Shukla  *   - 0: Success, DMA adapter started successfully.
146866a30a29SAmit Prakash Shukla  *   - <0: Error code returned by the driver function.
146966a30a29SAmit Prakash Shukla  */
147066a30a29SAmit Prakash Shukla typedef int (*eventdev_dma_adapter_start_t)(const struct rte_eventdev *dev,
147166a30a29SAmit Prakash Shukla 					    const int16_t dma_dev_id);
147266a30a29SAmit Prakash Shukla 
147366a30a29SAmit Prakash Shukla /**
147466a30a29SAmit Prakash Shukla  * Stop DMA adapter. This callback is invoked if
147566a30a29SAmit Prakash Shukla  * the caps returned from rte_event_dma_adapter_caps_get(.., dmadev_id)
147666a30a29SAmit Prakash Shukla  * has RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_* set and vchan for dmadev_id
147766a30a29SAmit Prakash Shukla  * have been added to the event device.
147866a30a29SAmit Prakash Shukla  *
147966a30a29SAmit Prakash Shukla  * @param dev
148066a30a29SAmit Prakash Shukla  *   Event device pointer
148166a30a29SAmit Prakash Shukla  *
148266a30a29SAmit Prakash Shukla  * @param dma_dev_id
148366a30a29SAmit Prakash Shukla  *   DMA device identifier
148466a30a29SAmit Prakash Shukla  *
148566a30a29SAmit Prakash Shukla  * @return
148666a30a29SAmit Prakash Shukla  *   - 0: Success, DMA adapter stopped successfully.
148766a30a29SAmit Prakash Shukla  *   - <0: Error code returned by the driver function.
148866a30a29SAmit Prakash Shukla  */
148966a30a29SAmit Prakash Shukla typedef int (*eventdev_dma_adapter_stop_t)(const struct rte_eventdev *dev,
149066a30a29SAmit Prakash Shukla 					   const int16_t dma_dev_id);
149166a30a29SAmit Prakash Shukla 
149266a30a29SAmit Prakash Shukla struct rte_event_dma_adapter_stats;
149366a30a29SAmit Prakash Shukla 
149466a30a29SAmit Prakash Shukla /**
149566a30a29SAmit Prakash Shukla  * Retrieve DMA adapter statistics.
149666a30a29SAmit Prakash Shukla  *
149766a30a29SAmit Prakash Shukla  * @param dev
149866a30a29SAmit Prakash Shukla  *   Event device pointer
149966a30a29SAmit Prakash Shukla  *
150066a30a29SAmit Prakash Shukla  * @param dma_dev_id
150166a30a29SAmit Prakash Shukla  *   DMA device identifier
150266a30a29SAmit Prakash Shukla  *
150366a30a29SAmit Prakash Shukla  * @param[out] stats
150466a30a29SAmit Prakash Shukla  *   Pointer to stats structure
150566a30a29SAmit Prakash Shukla  *
150666a30a29SAmit Prakash Shukla  * @return
150766a30a29SAmit Prakash Shukla  *   Return 0 on success.
150866a30a29SAmit Prakash Shukla  */
150966a30a29SAmit Prakash Shukla typedef int (*eventdev_dma_adapter_stats_get)(const struct rte_eventdev *dev,
151066a30a29SAmit Prakash Shukla 					      const int16_t dma_dev_id,
151166a30a29SAmit Prakash Shukla 					      struct rte_event_dma_adapter_stats *stats);
151266a30a29SAmit Prakash Shukla 
151366a30a29SAmit Prakash Shukla /**
151466a30a29SAmit Prakash Shukla  * Reset DMA adapter statistics.
151566a30a29SAmit Prakash Shukla  *
151666a30a29SAmit Prakash Shukla  * @param dev
151766a30a29SAmit Prakash Shukla  *   Event device pointer
151866a30a29SAmit Prakash Shukla  *
151966a30a29SAmit Prakash Shukla  * @param dma_dev_id
152066a30a29SAmit Prakash Shukla  *   DMA device identifier
152166a30a29SAmit Prakash Shukla  *
152266a30a29SAmit Prakash Shukla  * @return
152366a30a29SAmit Prakash Shukla  *   Return 0 on success.
152466a30a29SAmit Prakash Shukla  */
152566a30a29SAmit Prakash Shukla typedef int (*eventdev_dma_adapter_stats_reset)(const struct rte_eventdev *dev,
152666a30a29SAmit Prakash Shukla 						const int16_t dma_dev_id);
152766a30a29SAmit Prakash Shukla 
152866a30a29SAmit Prakash Shukla 
152999a2dd95SBruce Richardson /** Event device operations function pointer table */
153023d06e37SPavan Nikhilesh struct eventdev_ops {
153199a2dd95SBruce Richardson 	eventdev_info_get_t dev_infos_get;	/**< Get device info. */
153299a2dd95SBruce Richardson 	eventdev_configure_t dev_configure;	/**< Configure device. */
153399a2dd95SBruce Richardson 	eventdev_start_t dev_start;		/**< Start device. */
153499a2dd95SBruce Richardson 	eventdev_stop_t dev_stop;		/**< Stop device. */
153599a2dd95SBruce Richardson 	eventdev_close_t dev_close;		/**< Close device. */
153699a2dd95SBruce Richardson 
153799a2dd95SBruce Richardson 	eventdev_queue_default_conf_get_t queue_def_conf;
153899a2dd95SBruce Richardson 	/**< Get default queue configuration. */
153999a2dd95SBruce Richardson 	eventdev_queue_setup_t queue_setup;
154099a2dd95SBruce Richardson 	/**< Set up an event queue. */
154199a2dd95SBruce Richardson 	eventdev_queue_release_t queue_release;
154299a2dd95SBruce Richardson 	/**< Release an event queue. */
154397b914f4SShijith Thotton 	eventdev_queue_attr_set_t queue_attr_set;
154497b914f4SShijith Thotton 	/**< Set an event queue attribute. */
154599a2dd95SBruce Richardson 
154699a2dd95SBruce Richardson 	eventdev_port_default_conf_get_t port_def_conf;
154799a2dd95SBruce Richardson 	/**< Get default port configuration. */
154899a2dd95SBruce Richardson 	eventdev_port_setup_t port_setup;
154999a2dd95SBruce Richardson 	/**< Set up an event port. */
155099a2dd95SBruce Richardson 	eventdev_port_release_t port_release;
155199a2dd95SBruce Richardson 	/**< Release an event port. */
15521ff23ce6SPavan Nikhilesh 	eventdev_port_quiesce_t port_quiesce;
15531ff23ce6SPavan Nikhilesh 	/**< Quiesce an event port. */
155499a2dd95SBruce Richardson 
155599a2dd95SBruce Richardson 	eventdev_port_link_t port_link;
155699a2dd95SBruce Richardson 	/**< Link event queues to an event port. */
1557d007a7f3SPavan Nikhilesh 	eventdev_port_link_profile_t port_link_profile;
1558d007a7f3SPavan Nikhilesh 	/**< Link event queues associated with a profile to an event port. */
155999a2dd95SBruce Richardson 	eventdev_port_unlink_t port_unlink;
156099a2dd95SBruce Richardson 	/**< Unlink event queues from an event port. */
1561d007a7f3SPavan Nikhilesh 	eventdev_port_unlink_profile_t port_unlink_profile;
1562d007a7f3SPavan Nikhilesh 	/**< Unlink event queues associated with a profile from an event port. */
156399a2dd95SBruce Richardson 	eventdev_port_unlinks_in_progress_t port_unlinks_in_progress;
156499a2dd95SBruce Richardson 	/**< Unlinks in progress on an event port. */
156599a2dd95SBruce Richardson 	eventdev_dequeue_timeout_ticks_t timeout_ticks;
156699a2dd95SBruce Richardson 	/**< Converts ns to *timeout_ticks* value for rte_event_dequeue() */
156799a2dd95SBruce Richardson 	eventdev_dump_t dump;
156899a2dd95SBruce Richardson 	/* Dump internal information */
156999a2dd95SBruce Richardson 
157099a2dd95SBruce Richardson 	eventdev_xstats_get_t xstats_get;
157199a2dd95SBruce Richardson 	/**< Get extended device statistics. */
157299a2dd95SBruce Richardson 	eventdev_xstats_get_names_t xstats_get_names;
157399a2dd95SBruce Richardson 	/**< Get names of extended stats. */
157499a2dd95SBruce Richardson 	eventdev_xstats_get_by_name xstats_get_by_name;
157599a2dd95SBruce Richardson 	/**< Get one value by name. */
157699a2dd95SBruce Richardson 	eventdev_xstats_reset_t xstats_reset;
157799a2dd95SBruce Richardson 	/**< Reset the statistics values in xstats. */
157899a2dd95SBruce Richardson 
157999a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_caps_get_t eth_rx_adapter_caps_get;
158099a2dd95SBruce Richardson 	/**< Get ethernet Rx adapter capabilities */
158199a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_queue_add_t eth_rx_adapter_queue_add;
158299a2dd95SBruce Richardson 	/**< Add Rx queues to ethernet Rx adapter */
158399a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del;
158499a2dd95SBruce Richardson 	/**< Delete Rx queues from ethernet Rx adapter */
1585da781e64SGanapati Kundapura 	eventdev_eth_rx_adapter_queue_conf_get_t eth_rx_adapter_queue_conf_get;
1586da781e64SGanapati Kundapura 	/**< Get Rx adapter queue info */
158799a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_start_t eth_rx_adapter_start;
158899a2dd95SBruce Richardson 	/**< Start ethernet Rx adapter */
158999a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop;
159099a2dd95SBruce Richardson 	/**< Stop ethernet Rx adapter */
159199a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_stats_get eth_rx_adapter_stats_get;
159299a2dd95SBruce Richardson 	/**< Get ethernet Rx stats */
159399a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset;
159499a2dd95SBruce Richardson 	/**< Reset ethernet Rx stats */
159599a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_vector_limits_get_t
159699a2dd95SBruce Richardson 		eth_rx_adapter_vector_limits_get;
159799a2dd95SBruce Richardson 	/**< Get event vector limits for the Rx adapter */
1598a1793ee8SGanapati Kundapura 	eventdev_eth_rx_adapter_instance_get_t eth_rx_adapter_instance_get;
1599a1793ee8SGanapati Kundapura 	/**< Get Rx adapter instance ID for Rx queue */
160099a2dd95SBruce Richardson 
160199a2dd95SBruce Richardson 	eventdev_timer_adapter_caps_get_t timer_adapter_caps_get;
160299a2dd95SBruce Richardson 	/**< Get timer adapter capabilities */
160399a2dd95SBruce Richardson 
160499a2dd95SBruce Richardson 	eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get;
160599a2dd95SBruce Richardson 	/**< Get crypto adapter capabilities */
160699a2dd95SBruce Richardson 	eventdev_crypto_adapter_queue_pair_add_t crypto_adapter_queue_pair_add;
160799a2dd95SBruce Richardson 	/**< Add queue pair to crypto adapter */
160899a2dd95SBruce Richardson 	eventdev_crypto_adapter_queue_pair_del_t crypto_adapter_queue_pair_del;
160999a2dd95SBruce Richardson 	/**< Delete queue pair from crypto adapter */
161099a2dd95SBruce Richardson 	eventdev_crypto_adapter_start_t crypto_adapter_start;
161199a2dd95SBruce Richardson 	/**< Start crypto adapter */
161299a2dd95SBruce Richardson 	eventdev_crypto_adapter_stop_t crypto_adapter_stop;
161399a2dd95SBruce Richardson 	/**< Stop crypto adapter */
161499a2dd95SBruce Richardson 	eventdev_crypto_adapter_stats_get crypto_adapter_stats_get;
161599a2dd95SBruce Richardson 	/**< Get crypto stats */
161699a2dd95SBruce Richardson 	eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset;
161799a2dd95SBruce Richardson 	/**< Reset crypto stats */
1618c1749bc5SVolodymyr Fialko 	eventdev_crypto_adapter_vector_limits_get_t
1619c1749bc5SVolodymyr Fialko 		crypto_adapter_vector_limits_get;
1620c1749bc5SVolodymyr Fialko 	/**< Get event vector limits for the crypto adapter */
162199a2dd95SBruce Richardson 
1622995b150cSNaga Harish K S V 	eventdev_eth_rx_adapter_q_stats_get eth_rx_adapter_queue_stats_get;
1623995b150cSNaga Harish K S V 	/**< Get ethernet Rx queue stats */
1624995b150cSNaga Harish K S V 	eventdev_eth_rx_adapter_q_stats_reset eth_rx_adapter_queue_stats_reset;
1625995b150cSNaga Harish K S V 	/**< Reset ethernet Rx queue stats */
1626995b150cSNaga Harish K S V 
162799a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get;
162899a2dd95SBruce Richardson 	/**< Get ethernet Tx adapter capabilities */
162999a2dd95SBruce Richardson 
163099a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_create_t eth_tx_adapter_create;
163199a2dd95SBruce Richardson 	/**< Create adapter callback */
163299a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_free_t eth_tx_adapter_free;
163399a2dd95SBruce Richardson 	/**< Free adapter callback */
163499a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_queue_add_t eth_tx_adapter_queue_add;
163599a2dd95SBruce Richardson 	/**< Add Tx queues to the eth Tx adapter */
163699a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_queue_del_t eth_tx_adapter_queue_del;
163799a2dd95SBruce Richardson 	/**< Delete Tx queues from the eth Tx adapter */
163899a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_start_t eth_tx_adapter_start;
163999a2dd95SBruce Richardson 	/**< Start eth Tx adapter */
164099a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_stop_t eth_tx_adapter_stop;
164199a2dd95SBruce Richardson 	/**< Stop eth Tx adapter */
164299a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_stats_get_t eth_tx_adapter_stats_get;
164399a2dd95SBruce Richardson 	/**< Get eth Tx adapter statistics */
164499a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_stats_reset_t eth_tx_adapter_stats_reset;
164599a2dd95SBruce Richardson 	/**< Reset eth Tx adapter statistics */
1646b2963cbdSGanapati Kundapura 	eventdev_eth_tx_adapter_instance_get_t eth_tx_adapter_instance_get;
1647b2963cbdSGanapati Kundapura 	/**< Get Tx adapter instance ID for Tx queue */
16483c3328aeSNaga Harish K S V 	eventdev_eth_tx_adapter_queue_start eth_tx_adapter_queue_start;
16493c3328aeSNaga Harish K S V 	/**< Start Tx queue assigned to Tx adapter instance */
16503c3328aeSNaga Harish K S V 	eventdev_eth_tx_adapter_queue_stop eth_tx_adapter_queue_stop;
16513c3328aeSNaga Harish K S V 	/**< Stop Tx queue assigned to Tx adapter instance */
165299a2dd95SBruce Richardson 
165366a30a29SAmit Prakash Shukla 	eventdev_dma_adapter_caps_get_t dma_adapter_caps_get;
165466a30a29SAmit Prakash Shukla 	/**< Get DMA adapter capabilities */
165566a30a29SAmit Prakash Shukla 	eventdev_dma_adapter_vchan_add_t dma_adapter_vchan_add;
165666a30a29SAmit Prakash Shukla 	/**< Add vchan queue to DMA adapter */
165766a30a29SAmit Prakash Shukla 	eventdev_dma_adapter_vchan_del_t dma_adapter_vchan_del;
165866a30a29SAmit Prakash Shukla 	/**< Delete vchan queue from DMA adapter */
165966a30a29SAmit Prakash Shukla 	eventdev_dma_adapter_start_t dma_adapter_start;
166066a30a29SAmit Prakash Shukla 	/**< Start DMA adapter */
166166a30a29SAmit Prakash Shukla 	eventdev_dma_adapter_stop_t dma_adapter_stop;
166266a30a29SAmit Prakash Shukla 	/**< Stop DMA adapter */
166366a30a29SAmit Prakash Shukla 	eventdev_dma_adapter_stats_get dma_adapter_stats_get;
166466a30a29SAmit Prakash Shukla 	/**< Get DMA stats */
166566a30a29SAmit Prakash Shukla 	eventdev_dma_adapter_stats_reset dma_adapter_stats_reset;
166666a30a29SAmit Prakash Shukla 	/**< Reset DMA stats */
166766a30a29SAmit Prakash Shukla 
166899a2dd95SBruce Richardson 	eventdev_selftest dev_selftest;
166999a2dd95SBruce Richardson 	/**< Start eventdev Selftest */
167099a2dd95SBruce Richardson 
167199a2dd95SBruce Richardson 	eventdev_stop_flush_t dev_stop_flush;
167299a2dd95SBruce Richardson 	/**< User-provided event flush function */
167399a2dd95SBruce Richardson };
167499a2dd95SBruce Richardson 
167599a2dd95SBruce Richardson /**
167699a2dd95SBruce Richardson  * Allocates a new eventdev slot for an event device and returns the pointer
167799a2dd95SBruce Richardson  * to that slot for the driver to use.
167899a2dd95SBruce Richardson  *
167999a2dd95SBruce Richardson  * @param name
168099a2dd95SBruce Richardson  *   Unique identifier name for each device
168199a2dd95SBruce Richardson  * @param socket_id
168299a2dd95SBruce Richardson  *   Socket to allocate resources on.
168399a2dd95SBruce Richardson  * @return
168499a2dd95SBruce Richardson  *   - Slot in the rte_dev_devices array for a new device;
168599a2dd95SBruce Richardson  */
168623d06e37SPavan Nikhilesh __rte_internal
168799a2dd95SBruce Richardson struct rte_eventdev *
168899a2dd95SBruce Richardson rte_event_pmd_allocate(const char *name, int socket_id);
168999a2dd95SBruce Richardson 
169099a2dd95SBruce Richardson /**
169199a2dd95SBruce Richardson  * Release the specified eventdev device.
169299a2dd95SBruce Richardson  *
169399a2dd95SBruce Richardson  * @param eventdev
169499a2dd95SBruce Richardson  * The *eventdev* pointer is the address of the *rte_eventdev* structure.
169599a2dd95SBruce Richardson  * @return
169699a2dd95SBruce Richardson  *   - 0 on success, negative on error
169799a2dd95SBruce Richardson  */
169823d06e37SPavan Nikhilesh __rte_internal
169999a2dd95SBruce Richardson int
170099a2dd95SBruce Richardson rte_event_pmd_release(struct rte_eventdev *eventdev);
170199a2dd95SBruce Richardson 
1702d35e6132SPavan Nikhilesh /**
1703d35e6132SPavan Nikhilesh  *
1704d35e6132SPavan Nikhilesh  * @internal
1705d35e6132SPavan Nikhilesh  * This is the last step of device probing.
1706d35e6132SPavan Nikhilesh  * It must be called after a port is allocated and initialized successfully.
1707d35e6132SPavan Nikhilesh  *
1708d35e6132SPavan Nikhilesh  * @param eventdev
1709d35e6132SPavan Nikhilesh  *  New event device.
1710d35e6132SPavan Nikhilesh  */
1711d35e6132SPavan Nikhilesh __rte_internal
1712d35e6132SPavan Nikhilesh void
1713d35e6132SPavan Nikhilesh event_dev_probing_finish(struct rte_eventdev *eventdev);
1714d35e6132SPavan Nikhilesh 
1715d35e6132SPavan Nikhilesh /**
1716d35e6132SPavan Nikhilesh  * Reset eventdevice fastpath APIs to dummy values.
1717d35e6132SPavan Nikhilesh  *
1718d35e6132SPavan Nikhilesh  * @param fp_ops
1719d35e6132SPavan Nikhilesh  * The *fp_ops* pointer to reset.
1720d35e6132SPavan Nikhilesh  */
1721d35e6132SPavan Nikhilesh __rte_internal
1722d35e6132SPavan Nikhilesh void
1723d35e6132SPavan Nikhilesh event_dev_fp_ops_reset(struct rte_event_fp_ops *fp_op);
1724d35e6132SPavan Nikhilesh 
1725d35e6132SPavan Nikhilesh /**
1726d35e6132SPavan Nikhilesh  * Set eventdevice fastpath APIs to event device values.
1727d35e6132SPavan Nikhilesh  *
1728d35e6132SPavan Nikhilesh  * @param fp_ops
1729d35e6132SPavan Nikhilesh  * The *fp_ops* pointer to set.
1730d35e6132SPavan Nikhilesh  */
1731d35e6132SPavan Nikhilesh __rte_internal
1732d35e6132SPavan Nikhilesh void
1733d35e6132SPavan Nikhilesh event_dev_fp_ops_set(struct rte_event_fp_ops *fp_ops,
1734d35e6132SPavan Nikhilesh 		     const struct rte_eventdev *dev);
1735d35e6132SPavan Nikhilesh 
17362c552933SBrian Dooley #ifdef __cplusplus
17372c552933SBrian Dooley }
17382c552933SBrian Dooley #endif
17392c552933SBrian Dooley 
174099a2dd95SBruce Richardson #endif /* _RTE_EVENTDEV_PMD_H_ */
1741