xref: /dpdk/lib/eventdev/eventdev_pmd.h (revision 23d06e3766a82b97ff97bdd7021cbddc5e9ccc7e)
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>
2199a2dd95SBruce Richardson #include <rte_dev.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 
2799a2dd95SBruce Richardson #include "rte_eventdev.h"
2899a2dd95SBruce Richardson #include "rte_event_timer_adapter_pmd.h"
2999a2dd95SBruce Richardson 
3099a2dd95SBruce Richardson /* Logging Macros */
3199a2dd95SBruce Richardson #define RTE_EDEV_LOG_ERR(...) \
3299a2dd95SBruce Richardson 	RTE_LOG(ERR, EVENTDEV, \
3399a2dd95SBruce Richardson 		RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \
3499a2dd95SBruce Richardson 			__func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,)))
3599a2dd95SBruce Richardson 
3699a2dd95SBruce Richardson #ifdef RTE_LIBRTE_EVENTDEV_DEBUG
3799a2dd95SBruce Richardson #define RTE_EDEV_LOG_DEBUG(...) \
3899a2dd95SBruce Richardson 	RTE_LOG(DEBUG, EVENTDEV, \
3999a2dd95SBruce Richardson 		RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \
4099a2dd95SBruce Richardson 			__func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,)))
4199a2dd95SBruce Richardson #else
4299a2dd95SBruce Richardson #define RTE_EDEV_LOG_DEBUG(...) (void)0
4399a2dd95SBruce Richardson #endif
4499a2dd95SBruce Richardson 
4599a2dd95SBruce Richardson /* Macros to check for valid device */
4699a2dd95SBruce Richardson #define RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, retval) do { \
4799a2dd95SBruce Richardson 	if (!rte_event_pmd_is_valid_dev((dev_id))) { \
4899a2dd95SBruce Richardson 		RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \
4999a2dd95SBruce Richardson 		return retval; \
5099a2dd95SBruce Richardson 	} \
5199a2dd95SBruce Richardson } while (0)
5299a2dd95SBruce Richardson 
5399a2dd95SBruce Richardson #define RTE_EVENTDEV_VALID_DEVID_OR_ERRNO_RET(dev_id, errno, retval) do { \
5499a2dd95SBruce Richardson 	if (!rte_event_pmd_is_valid_dev((dev_id))) { \
5599a2dd95SBruce Richardson 		RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \
5699a2dd95SBruce Richardson 		rte_errno = errno; \
5799a2dd95SBruce Richardson 		return retval; \
5899a2dd95SBruce Richardson 	} \
5999a2dd95SBruce Richardson } while (0)
6099a2dd95SBruce Richardson 
6199a2dd95SBruce Richardson #define RTE_EVENTDEV_VALID_DEVID_OR_RET(dev_id) do { \
6299a2dd95SBruce Richardson 	if (!rte_event_pmd_is_valid_dev((dev_id))) { \
6399a2dd95SBruce Richardson 		RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \
6499a2dd95SBruce Richardson 		return; \
6599a2dd95SBruce Richardson 	} \
6699a2dd95SBruce Richardson } while (0)
6799a2dd95SBruce Richardson 
6899a2dd95SBruce Richardson #define RTE_EVENT_ETH_RX_ADAPTER_SW_CAP                                        \
6999a2dd95SBruce Richardson 	((RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID) |                     \
7099a2dd95SBruce Richardson 	 (RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ) |                         \
7199a2dd95SBruce Richardson 	 (RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR))
7299a2dd95SBruce Richardson 
7399a2dd95SBruce Richardson #define RTE_EVENT_CRYPTO_ADAPTER_SW_CAP \
7499a2dd95SBruce Richardson 		RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA
7599a2dd95SBruce Richardson 
7699a2dd95SBruce Richardson /**< Ethernet Rx adapter cap to return If the packet transfers from
7799a2dd95SBruce Richardson  * the ethdev to eventdev use a SW service function
7899a2dd95SBruce Richardson  */
7999a2dd95SBruce Richardson 
8099a2dd95SBruce Richardson #define RTE_EVENTDEV_DETACHED  (0)
8199a2dd95SBruce Richardson #define RTE_EVENTDEV_ATTACHED  (1)
8299a2dd95SBruce Richardson 
8399a2dd95SBruce Richardson struct rte_eth_dev;
8499a2dd95SBruce Richardson 
8599a2dd95SBruce Richardson /** Global structure used for maintaining state of allocated event devices */
8699a2dd95SBruce Richardson struct rte_eventdev_global {
8799a2dd95SBruce Richardson 	uint8_t nb_devs;	/**< Number of devices found */
8899a2dd95SBruce Richardson };
8999a2dd95SBruce Richardson 
9099a2dd95SBruce Richardson extern struct rte_eventdev *rte_eventdevs;
9199a2dd95SBruce Richardson /** The pool of rte_eventdev structures. */
9299a2dd95SBruce Richardson 
9399a2dd95SBruce Richardson /**
9499a2dd95SBruce Richardson  * Get the rte_eventdev structure device pointer for the named device.
9599a2dd95SBruce Richardson  *
9699a2dd95SBruce Richardson  * @param name
9799a2dd95SBruce Richardson  *   device name to select the device structure.
9899a2dd95SBruce Richardson  *
9999a2dd95SBruce Richardson  * @return
10099a2dd95SBruce Richardson  *   - The rte_eventdev structure pointer for the given device ID.
10199a2dd95SBruce Richardson  */
102*23d06e37SPavan Nikhilesh __rte_internal
10399a2dd95SBruce Richardson static inline struct rte_eventdev *
10499a2dd95SBruce Richardson rte_event_pmd_get_named_dev(const char *name)
10599a2dd95SBruce Richardson {
10699a2dd95SBruce Richardson 	struct rte_eventdev *dev;
10799a2dd95SBruce Richardson 	unsigned int i;
10899a2dd95SBruce Richardson 
10999a2dd95SBruce Richardson 	if (name == NULL)
11099a2dd95SBruce Richardson 		return NULL;
11199a2dd95SBruce Richardson 
11299a2dd95SBruce Richardson 	for (i = 0; i < RTE_EVENT_MAX_DEVS; i++) {
11399a2dd95SBruce Richardson 		dev = &rte_eventdevs[i];
11499a2dd95SBruce Richardson 		if ((dev->attached == RTE_EVENTDEV_ATTACHED) &&
11599a2dd95SBruce Richardson 				(strcmp(dev->data->name, name) == 0))
11699a2dd95SBruce Richardson 			return dev;
11799a2dd95SBruce Richardson 	}
11899a2dd95SBruce Richardson 
11999a2dd95SBruce Richardson 	return NULL;
12099a2dd95SBruce Richardson }
12199a2dd95SBruce Richardson 
12299a2dd95SBruce Richardson /**
12399a2dd95SBruce Richardson  * Validate if the event device index is valid attached event device.
12499a2dd95SBruce Richardson  *
12599a2dd95SBruce Richardson  * @param dev_id
12699a2dd95SBruce Richardson  *   Event device index.
12799a2dd95SBruce Richardson  *
12899a2dd95SBruce Richardson  * @return
12999a2dd95SBruce Richardson  *   - If the device index is valid (1) or not (0).
13099a2dd95SBruce Richardson  */
131*23d06e37SPavan Nikhilesh __rte_internal
13299a2dd95SBruce Richardson static inline unsigned
13399a2dd95SBruce Richardson rte_event_pmd_is_valid_dev(uint8_t dev_id)
13499a2dd95SBruce Richardson {
13599a2dd95SBruce Richardson 	struct rte_eventdev *dev;
13699a2dd95SBruce Richardson 
13799a2dd95SBruce Richardson 	if (dev_id >= RTE_EVENT_MAX_DEVS)
13899a2dd95SBruce Richardson 		return 0;
13999a2dd95SBruce Richardson 
14099a2dd95SBruce Richardson 	dev = &rte_eventdevs[dev_id];
14199a2dd95SBruce Richardson 	if (dev->attached != RTE_EVENTDEV_ATTACHED)
14299a2dd95SBruce Richardson 		return 0;
14399a2dd95SBruce Richardson 	else
14499a2dd95SBruce Richardson 		return 1;
14599a2dd95SBruce Richardson }
14699a2dd95SBruce Richardson 
14799a2dd95SBruce Richardson /**
14899a2dd95SBruce Richardson  * Definitions of all functions exported by a driver through the
14999a2dd95SBruce Richardson  * the generic structure of type *event_dev_ops* supplied in the
15099a2dd95SBruce Richardson  * *rte_eventdev* structure associated with a device.
15199a2dd95SBruce Richardson  */
15299a2dd95SBruce Richardson 
15399a2dd95SBruce Richardson /**
15499a2dd95SBruce Richardson  * Get device information of a device.
15599a2dd95SBruce Richardson  *
15699a2dd95SBruce Richardson  * @param dev
15799a2dd95SBruce Richardson  *   Event device pointer
15899a2dd95SBruce Richardson  * @param dev_info
15999a2dd95SBruce Richardson  *   Event device information structure
16099a2dd95SBruce Richardson  */
16199a2dd95SBruce Richardson typedef void (*eventdev_info_get_t)(struct rte_eventdev *dev,
16299a2dd95SBruce Richardson 		struct rte_event_dev_info *dev_info);
16399a2dd95SBruce Richardson 
16499a2dd95SBruce Richardson /**
16599a2dd95SBruce Richardson  * Configure a device.
16699a2dd95SBruce Richardson  *
16799a2dd95SBruce Richardson  * @param dev
16899a2dd95SBruce Richardson  *   Event device pointer
16999a2dd95SBruce Richardson  *
17099a2dd95SBruce Richardson  * @return
17199a2dd95SBruce Richardson  *   Returns 0 on success
17299a2dd95SBruce Richardson  */
17399a2dd95SBruce Richardson typedef int (*eventdev_configure_t)(const struct rte_eventdev *dev);
17499a2dd95SBruce Richardson 
17599a2dd95SBruce Richardson /**
17699a2dd95SBruce Richardson  * Start a configured device.
17799a2dd95SBruce Richardson  *
17899a2dd95SBruce Richardson  * @param dev
17999a2dd95SBruce Richardson  *   Event device pointer
18099a2dd95SBruce Richardson  *
18199a2dd95SBruce Richardson  * @return
18299a2dd95SBruce Richardson  *   Returns 0 on success
18399a2dd95SBruce Richardson  */
18499a2dd95SBruce Richardson typedef int (*eventdev_start_t)(struct rte_eventdev *dev);
18599a2dd95SBruce Richardson 
18699a2dd95SBruce Richardson /**
18799a2dd95SBruce Richardson  * Stop a configured device.
18899a2dd95SBruce Richardson  *
18999a2dd95SBruce Richardson  * @param dev
19099a2dd95SBruce Richardson  *   Event device pointer
19199a2dd95SBruce Richardson  */
19299a2dd95SBruce Richardson typedef void (*eventdev_stop_t)(struct rte_eventdev *dev);
19399a2dd95SBruce Richardson 
19499a2dd95SBruce Richardson /**
19599a2dd95SBruce Richardson  * Close a configured device.
19699a2dd95SBruce Richardson  *
19799a2dd95SBruce Richardson  * @param dev
19899a2dd95SBruce Richardson  *   Event device pointer
19999a2dd95SBruce Richardson  *
20099a2dd95SBruce Richardson  * @return
20199a2dd95SBruce Richardson  * - 0 on success
20299a2dd95SBruce Richardson  * - (-EAGAIN) if can't close as device is busy
20399a2dd95SBruce Richardson  */
20499a2dd95SBruce Richardson typedef int (*eventdev_close_t)(struct rte_eventdev *dev);
20599a2dd95SBruce Richardson 
20699a2dd95SBruce Richardson /**
20799a2dd95SBruce Richardson  * Retrieve the default event queue configuration.
20899a2dd95SBruce Richardson  *
20999a2dd95SBruce Richardson  * @param dev
21099a2dd95SBruce Richardson  *   Event device pointer
21199a2dd95SBruce Richardson  * @param queue_id
21299a2dd95SBruce Richardson  *   Event queue index
21399a2dd95SBruce Richardson  * @param[out] queue_conf
21499a2dd95SBruce Richardson  *   Event queue configuration structure
21599a2dd95SBruce Richardson  *
21699a2dd95SBruce Richardson  */
21799a2dd95SBruce Richardson typedef void (*eventdev_queue_default_conf_get_t)(struct rte_eventdev *dev,
21899a2dd95SBruce Richardson 		uint8_t queue_id, struct rte_event_queue_conf *queue_conf);
21999a2dd95SBruce Richardson 
22099a2dd95SBruce Richardson /**
22199a2dd95SBruce Richardson  * Setup an event queue.
22299a2dd95SBruce Richardson  *
22399a2dd95SBruce Richardson  * @param dev
22499a2dd95SBruce Richardson  *   Event device pointer
22599a2dd95SBruce Richardson  * @param queue_id
22699a2dd95SBruce Richardson  *   Event queue index
22799a2dd95SBruce Richardson  * @param queue_conf
22899a2dd95SBruce Richardson  *   Event queue configuration structure
22999a2dd95SBruce Richardson  *
23099a2dd95SBruce Richardson  * @return
23199a2dd95SBruce Richardson  *   Returns 0 on success.
23299a2dd95SBruce Richardson  */
23399a2dd95SBruce Richardson typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev,
23499a2dd95SBruce Richardson 		uint8_t queue_id,
23599a2dd95SBruce Richardson 		const struct rte_event_queue_conf *queue_conf);
23699a2dd95SBruce Richardson 
23799a2dd95SBruce Richardson /**
23899a2dd95SBruce Richardson  * Release resources allocated by given event queue.
23999a2dd95SBruce Richardson  *
24099a2dd95SBruce Richardson  * @param dev
24199a2dd95SBruce Richardson  *   Event device pointer
24299a2dd95SBruce Richardson  * @param queue_id
24399a2dd95SBruce Richardson  *   Event queue index
24499a2dd95SBruce Richardson  *
24599a2dd95SBruce Richardson  */
24699a2dd95SBruce Richardson typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev,
24799a2dd95SBruce Richardson 		uint8_t queue_id);
24899a2dd95SBruce Richardson 
24999a2dd95SBruce Richardson /**
25099a2dd95SBruce Richardson  * Retrieve the default event port configuration.
25199a2dd95SBruce Richardson  *
25299a2dd95SBruce Richardson  * @param dev
25399a2dd95SBruce Richardson  *   Event device pointer
25499a2dd95SBruce Richardson  * @param port_id
25599a2dd95SBruce Richardson  *   Event port index
25699a2dd95SBruce Richardson  * @param[out] port_conf
25799a2dd95SBruce Richardson  *   Event port configuration structure
25899a2dd95SBruce Richardson  *
25999a2dd95SBruce Richardson  */
26099a2dd95SBruce Richardson typedef void (*eventdev_port_default_conf_get_t)(struct rte_eventdev *dev,
26199a2dd95SBruce Richardson 		uint8_t port_id, struct rte_event_port_conf *port_conf);
26299a2dd95SBruce Richardson 
26399a2dd95SBruce Richardson /**
26499a2dd95SBruce Richardson  * Setup an event port.
26599a2dd95SBruce Richardson  *
26699a2dd95SBruce Richardson  * @param dev
26799a2dd95SBruce Richardson  *   Event device pointer
26899a2dd95SBruce Richardson  * @param port_id
26999a2dd95SBruce Richardson  *   Event port index
27099a2dd95SBruce Richardson  * @param port_conf
27199a2dd95SBruce Richardson  *   Event port configuration structure
27299a2dd95SBruce Richardson  *
27399a2dd95SBruce Richardson  * @return
27499a2dd95SBruce Richardson  *   Returns 0 on success.
27599a2dd95SBruce Richardson  */
27699a2dd95SBruce Richardson typedef int (*eventdev_port_setup_t)(struct rte_eventdev *dev,
27799a2dd95SBruce Richardson 		uint8_t port_id,
27899a2dd95SBruce Richardson 		const struct rte_event_port_conf *port_conf);
27999a2dd95SBruce Richardson 
28099a2dd95SBruce Richardson /**
28199a2dd95SBruce Richardson  * Release memory resources allocated by given event port.
28299a2dd95SBruce Richardson  *
28399a2dd95SBruce Richardson  * @param port
28499a2dd95SBruce Richardson  *   Event port pointer
28599a2dd95SBruce Richardson  *
28699a2dd95SBruce Richardson  */
28799a2dd95SBruce Richardson typedef void (*eventdev_port_release_t)(void *port);
28899a2dd95SBruce Richardson 
28999a2dd95SBruce Richardson /**
29099a2dd95SBruce Richardson  * Link multiple source event queues to destination event port.
29199a2dd95SBruce Richardson  *
29299a2dd95SBruce Richardson  * @param dev
29399a2dd95SBruce Richardson  *   Event device pointer
29499a2dd95SBruce Richardson  * @param port
29599a2dd95SBruce Richardson  *   Event port pointer
29699a2dd95SBruce Richardson  * @param queues
29799a2dd95SBruce Richardson  *   Points to an array of *nb_links* event queues to be linked
29899a2dd95SBruce Richardson  *   to the event port.
29999a2dd95SBruce Richardson  * @param priorities
30099a2dd95SBruce Richardson  *   Points to an array of *nb_links* service priorities associated with each
30199a2dd95SBruce Richardson  *   event queue link to event port.
30299a2dd95SBruce Richardson  * @param nb_links
30399a2dd95SBruce Richardson  *   The number of links to establish
30499a2dd95SBruce Richardson  *
30599a2dd95SBruce Richardson  * @return
30699a2dd95SBruce Richardson  *   Returns 0 on success.
30799a2dd95SBruce Richardson  *
30899a2dd95SBruce Richardson  */
30999a2dd95SBruce Richardson typedef int (*eventdev_port_link_t)(struct rte_eventdev *dev, void *port,
31099a2dd95SBruce Richardson 		const uint8_t queues[], const uint8_t priorities[],
31199a2dd95SBruce Richardson 		uint16_t nb_links);
31299a2dd95SBruce Richardson 
31399a2dd95SBruce Richardson /**
31499a2dd95SBruce Richardson  * Unlink multiple source event queues from destination event port.
31599a2dd95SBruce Richardson  *
31699a2dd95SBruce Richardson  * @param dev
31799a2dd95SBruce Richardson  *   Event device pointer
31899a2dd95SBruce Richardson  * @param port
31999a2dd95SBruce Richardson  *   Event port pointer
32099a2dd95SBruce Richardson  * @param queues
32199a2dd95SBruce Richardson  *   An array of *nb_unlinks* event queues to be unlinked from the event port.
32299a2dd95SBruce Richardson  * @param nb_unlinks
32399a2dd95SBruce Richardson  *   The number of unlinks to establish
32499a2dd95SBruce Richardson  *
32599a2dd95SBruce Richardson  * @return
32699a2dd95SBruce Richardson  *   Returns 0 on success.
32799a2dd95SBruce Richardson  *
32899a2dd95SBruce Richardson  */
32999a2dd95SBruce Richardson typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port,
33099a2dd95SBruce Richardson 		uint8_t queues[], uint16_t nb_unlinks);
33199a2dd95SBruce Richardson 
33299a2dd95SBruce Richardson /**
33399a2dd95SBruce Richardson  * Unlinks in progress. Returns number of unlinks that the PMD is currently
33499a2dd95SBruce Richardson  * performing, but have not yet been completed.
33599a2dd95SBruce Richardson  *
33699a2dd95SBruce Richardson  * @param dev
33799a2dd95SBruce Richardson  *   Event device pointer
33899a2dd95SBruce Richardson  *
33999a2dd95SBruce Richardson  * @param port
34099a2dd95SBruce Richardson  *   Event port pointer
34199a2dd95SBruce Richardson  *
34299a2dd95SBruce Richardson  * @return
34399a2dd95SBruce Richardson  *   Returns the number of in-progress unlinks. Zero is returned if none are
34499a2dd95SBruce Richardson  *   in progress.
34599a2dd95SBruce Richardson  */
34699a2dd95SBruce Richardson typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev,
34799a2dd95SBruce Richardson 		void *port);
34899a2dd95SBruce Richardson 
34999a2dd95SBruce Richardson /**
35099a2dd95SBruce Richardson  * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue()
35199a2dd95SBruce Richardson  *
35299a2dd95SBruce Richardson  * @param dev
35399a2dd95SBruce Richardson  *   Event device pointer
35499a2dd95SBruce Richardson  * @param ns
35599a2dd95SBruce Richardson  *   Wait time in nanosecond
35699a2dd95SBruce Richardson  * @param[out] timeout_ticks
35799a2dd95SBruce Richardson  *   Value for the *timeout_ticks* parameter in rte_event_dequeue() function
35899a2dd95SBruce Richardson  *
35999a2dd95SBruce Richardson  * @return
36099a2dd95SBruce Richardson  *   Returns 0 on success.
36199a2dd95SBruce Richardson  *
36299a2dd95SBruce Richardson  */
36399a2dd95SBruce Richardson typedef int (*eventdev_dequeue_timeout_ticks_t)(struct rte_eventdev *dev,
36499a2dd95SBruce Richardson 		uint64_t ns, uint64_t *timeout_ticks);
36599a2dd95SBruce Richardson 
36699a2dd95SBruce Richardson /**
36799a2dd95SBruce Richardson  * Dump internal information
36899a2dd95SBruce Richardson  *
36999a2dd95SBruce Richardson  * @param dev
37099a2dd95SBruce Richardson  *   Event device pointer
37199a2dd95SBruce Richardson  * @param f
37299a2dd95SBruce Richardson  *   A pointer to a file for output
37399a2dd95SBruce Richardson  *
37499a2dd95SBruce Richardson  */
37599a2dd95SBruce Richardson typedef void (*eventdev_dump_t)(struct rte_eventdev *dev, FILE *f);
37699a2dd95SBruce Richardson 
37799a2dd95SBruce Richardson /**
37899a2dd95SBruce Richardson  * Retrieve a set of statistics from device
37999a2dd95SBruce Richardson  *
38099a2dd95SBruce Richardson  * @param dev
38199a2dd95SBruce Richardson  *   Event device pointer
38299a2dd95SBruce Richardson  * @param mode
38399a2dd95SBruce Richardson  *   Level (device, port or queue)
38499a2dd95SBruce Richardson  * @param queue_port_id
38599a2dd95SBruce Richardson  *   Queue or port number depending on mode
38699a2dd95SBruce Richardson  * @param ids
38799a2dd95SBruce Richardson  *   The stat ids to retrieve
38899a2dd95SBruce Richardson  * @param values
38999a2dd95SBruce Richardson  *   The returned stat values
39099a2dd95SBruce Richardson  * @param n
39199a2dd95SBruce Richardson  *   The number of id values and entries in the values array
39299a2dd95SBruce Richardson  * @return
39399a2dd95SBruce Richardson  *   The number of stat values successfully filled into the values array
39499a2dd95SBruce Richardson  */
39599a2dd95SBruce Richardson typedef int (*eventdev_xstats_get_t)(const struct rte_eventdev *dev,
39699a2dd95SBruce Richardson 		enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
39799a2dd95SBruce Richardson 		const unsigned int ids[], uint64_t values[], unsigned int n);
39899a2dd95SBruce Richardson 
39999a2dd95SBruce Richardson /**
40099a2dd95SBruce Richardson  * Resets the statistic values in xstats for the device, based on mode.
40199a2dd95SBruce Richardson  */
40299a2dd95SBruce Richardson typedef int (*eventdev_xstats_reset_t)(struct rte_eventdev *dev,
40399a2dd95SBruce Richardson 		enum rte_event_dev_xstats_mode mode,
40499a2dd95SBruce Richardson 		int16_t queue_port_id,
40599a2dd95SBruce Richardson 		const uint32_t ids[],
40699a2dd95SBruce Richardson 		uint32_t nb_ids);
40799a2dd95SBruce Richardson 
40899a2dd95SBruce Richardson /**
40999a2dd95SBruce Richardson  * Get names of extended stats of an event device
41099a2dd95SBruce Richardson  *
41199a2dd95SBruce Richardson  * @param dev
41299a2dd95SBruce Richardson  *   Event device pointer
41399a2dd95SBruce Richardson  * @param mode
41499a2dd95SBruce Richardson  *   Level (device, port or queue)
41599a2dd95SBruce Richardson  * @param queue_port_id
41699a2dd95SBruce Richardson  *   Queue or port number depending on mode
41799a2dd95SBruce Richardson  * @param xstats_names
41899a2dd95SBruce Richardson  *   Array of name values to be filled in
41999a2dd95SBruce Richardson  * @param ids
42099a2dd95SBruce Richardson  *   The stat ids to retrieve
42199a2dd95SBruce Richardson  * @param size
42299a2dd95SBruce Richardson  *   Number of values in the xstats_names array
42399a2dd95SBruce Richardson  * @return
42499a2dd95SBruce Richardson  *   When size >= the number of stats, return the number of stat values filled
42599a2dd95SBruce Richardson  *   into the array.
42699a2dd95SBruce Richardson  *   When size < the number of available stats, return the number of stats
42799a2dd95SBruce Richardson  *   values, and do not fill in any data into xstats_names.
42899a2dd95SBruce Richardson  */
42999a2dd95SBruce Richardson typedef int (*eventdev_xstats_get_names_t)(const struct rte_eventdev *dev,
43099a2dd95SBruce Richardson 		enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
43199a2dd95SBruce Richardson 		struct rte_event_dev_xstats_name *xstats_names,
43299a2dd95SBruce Richardson 		unsigned int *ids, unsigned int size);
43399a2dd95SBruce Richardson 
43499a2dd95SBruce Richardson /**
43599a2dd95SBruce Richardson  * Get value of one stats and optionally return its id
43699a2dd95SBruce Richardson  *
43799a2dd95SBruce Richardson  * @param dev
43899a2dd95SBruce Richardson  *   Event device pointer
43999a2dd95SBruce Richardson  * @param name
44099a2dd95SBruce Richardson  *   The name of the stat to retrieve
44199a2dd95SBruce Richardson  * @param id
44299a2dd95SBruce Richardson  *   Pointer to an unsigned int where we store the stat-id for future reference.
44399a2dd95SBruce Richardson  *   This pointer may be null if the id is not required.
44499a2dd95SBruce Richardson  * @return
44599a2dd95SBruce Richardson  *   The value of the stat, or (uint64_t)-1 if the stat is not found.
44699a2dd95SBruce Richardson  *   If the stat is not found, the id value will be returned as (unsigned)-1,
44799a2dd95SBruce Richardson  *   if id pointer is non-NULL
44899a2dd95SBruce Richardson  */
44999a2dd95SBruce Richardson typedef uint64_t (*eventdev_xstats_get_by_name)(const struct rte_eventdev *dev,
45099a2dd95SBruce Richardson 		const char *name, unsigned int *id);
45199a2dd95SBruce Richardson 
45299a2dd95SBruce Richardson 
45399a2dd95SBruce Richardson /**
45499a2dd95SBruce Richardson  * Retrieve the event device's ethdev Rx adapter capabilities for the
45599a2dd95SBruce Richardson  * specified ethernet port
45699a2dd95SBruce Richardson  *
45799a2dd95SBruce Richardson  * @param dev
45899a2dd95SBruce Richardson  *   Event device pointer
45999a2dd95SBruce Richardson  *
46099a2dd95SBruce Richardson  * @param eth_dev
46199a2dd95SBruce Richardson  *   Ethernet device pointer
46299a2dd95SBruce Richardson  *
46399a2dd95SBruce Richardson  * @param[out] caps
46499a2dd95SBruce Richardson  *   A pointer to memory filled with Rx event adapter capabilities.
46599a2dd95SBruce Richardson  *
46699a2dd95SBruce Richardson  * @return
46799a2dd95SBruce Richardson  *   - 0: Success, driver provides Rx event adapter capabilities for the
46899a2dd95SBruce Richardson  *	ethernet device.
46999a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
47099a2dd95SBruce Richardson  *
47199a2dd95SBruce Richardson  */
47299a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_caps_get_t)
47399a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
47499a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
47599a2dd95SBruce Richardson 					uint32_t *caps);
47699a2dd95SBruce Richardson 
47799a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_queue_conf;
47899a2dd95SBruce Richardson 
47999a2dd95SBruce Richardson /**
48099a2dd95SBruce Richardson  * Retrieve the event device's timer adapter capabilities, as well as the ops
48199a2dd95SBruce Richardson  * structure that an event timer adapter should call through to enter the
48299a2dd95SBruce Richardson  * driver
48399a2dd95SBruce Richardson  *
48499a2dd95SBruce Richardson  * @param dev
48599a2dd95SBruce Richardson  *   Event device pointer
48699a2dd95SBruce Richardson  *
48799a2dd95SBruce Richardson  * @param flags
48899a2dd95SBruce Richardson  *   Flags that can be used to determine how to select an event timer
48999a2dd95SBruce Richardson  *   adapter ops structure
49099a2dd95SBruce Richardson  *
49199a2dd95SBruce Richardson  * @param[out] caps
49299a2dd95SBruce Richardson  *   A pointer to memory filled with Rx event adapter capabilities.
49399a2dd95SBruce Richardson  *
49499a2dd95SBruce Richardson  * @param[out] ops
49599a2dd95SBruce Richardson  *   A pointer to the ops pointer to set with the address of the desired ops
49699a2dd95SBruce Richardson  *   structure
49799a2dd95SBruce Richardson  *
49899a2dd95SBruce Richardson  * @return
49999a2dd95SBruce Richardson  *   - 0: Success, driver provides Rx event adapter capabilities for the
50099a2dd95SBruce Richardson  *	ethernet device.
50199a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
50299a2dd95SBruce Richardson  *
50399a2dd95SBruce Richardson  */
50499a2dd95SBruce Richardson typedef int (*eventdev_timer_adapter_caps_get_t)(
50599a2dd95SBruce Richardson 				const struct rte_eventdev *dev,
50699a2dd95SBruce Richardson 				uint64_t flags,
50799a2dd95SBruce Richardson 				uint32_t *caps,
50899a2dd95SBruce Richardson 				const struct rte_event_timer_adapter_ops **ops);
50999a2dd95SBruce Richardson 
51099a2dd95SBruce Richardson /**
51199a2dd95SBruce Richardson  * Add ethernet Rx queues to event device. This callback is invoked if
51299a2dd95SBruce Richardson  * the caps returned from rte_eventdev_eth_rx_adapter_caps_get(, eth_port_id)
51399a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
51499a2dd95SBruce Richardson  *
51599a2dd95SBruce Richardson  * @param dev
51699a2dd95SBruce Richardson  *   Event device pointer
51799a2dd95SBruce Richardson  *
51899a2dd95SBruce Richardson  * @param eth_dev
51999a2dd95SBruce Richardson  *   Ethernet device pointer
52099a2dd95SBruce Richardson  *
52199a2dd95SBruce Richardson  * @param rx_queue_id
52299a2dd95SBruce Richardson  *   Ethernet device receive queue index
52399a2dd95SBruce Richardson  *
52499a2dd95SBruce Richardson  * @param queue_conf
52599a2dd95SBruce Richardson  *  Additional configuration structure
52699a2dd95SBruce Richardson 
52799a2dd95SBruce Richardson  * @return
52899a2dd95SBruce Richardson  *   - 0: Success, ethernet receive queue added successfully.
52999a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
53099a2dd95SBruce Richardson  *
53199a2dd95SBruce Richardson  */
53299a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_queue_add_t)(
53399a2dd95SBruce Richardson 		const struct rte_eventdev *dev,
53499a2dd95SBruce Richardson 		const struct rte_eth_dev *eth_dev,
53599a2dd95SBruce Richardson 		int32_t rx_queue_id,
53699a2dd95SBruce Richardson 		const struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
53799a2dd95SBruce Richardson 
53899a2dd95SBruce Richardson /**
53999a2dd95SBruce Richardson  * Delete ethernet Rx queues from event device. This callback is invoked if
54099a2dd95SBruce Richardson  * the caps returned from eventdev_eth_rx_adapter_caps_get(, eth_port_id)
54199a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
54299a2dd95SBruce Richardson  *
54399a2dd95SBruce Richardson  * @param dev
54499a2dd95SBruce Richardson  *   Event device pointer
54599a2dd95SBruce Richardson  *
54699a2dd95SBruce Richardson  * @param eth_dev
54799a2dd95SBruce Richardson  *   Ethernet device pointer
54899a2dd95SBruce Richardson  *
54999a2dd95SBruce Richardson  * @param rx_queue_id
55099a2dd95SBruce Richardson  *   Ethernet device receive queue index
55199a2dd95SBruce Richardson  *
55299a2dd95SBruce Richardson  * @return
55399a2dd95SBruce Richardson  *   - 0: Success, ethernet receive queue deleted successfully.
55499a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
55599a2dd95SBruce Richardson  *
55699a2dd95SBruce Richardson  */
55799a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_queue_del_t)
55899a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
55999a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
56099a2dd95SBruce Richardson 					int32_t rx_queue_id);
56199a2dd95SBruce Richardson 
56299a2dd95SBruce Richardson /**
563da781e64SGanapati Kundapura  * Retrieve Rx adapter queue config information for the specified
564da781e64SGanapati Kundapura  * rx queue ID.
565da781e64SGanapati Kundapura  *
566da781e64SGanapati Kundapura  * @param dev
567da781e64SGanapati Kundapura  *  Event device pointer
568da781e64SGanapati Kundapura  *
569da781e64SGanapati Kundapura  * @param eth_dev
570da781e64SGanapati Kundapura  *  Ethernet device pointer
571da781e64SGanapati Kundapura  *
572da781e64SGanapati Kundapura  * @param rx_queue_id
573da781e64SGanapati Kundapura  *  Ethernet device receive queue index.
574da781e64SGanapati Kundapura  *
575da781e64SGanapati Kundapura  * @param[out] queue_conf
576da781e64SGanapati Kundapura  *  Pointer to rte_event_eth_rx_adapter_queue_conf structure
577da781e64SGanapati Kundapura  *
578da781e64SGanapati Kundapura  * @return
579da781e64SGanapati Kundapura  *  - 0: Success
580da781e64SGanapati Kundapura  *  - <0: Error code on failure.
581da781e64SGanapati Kundapura  */
582da781e64SGanapati Kundapura typedef int (*eventdev_eth_rx_adapter_queue_conf_get_t)
583da781e64SGanapati Kundapura 			(const struct rte_eventdev *dev,
584da781e64SGanapati Kundapura 			const struct rte_eth_dev *eth_dev,
585da781e64SGanapati Kundapura 			uint16_t rx_queue_id,
586da781e64SGanapati Kundapura 			struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
587da781e64SGanapati Kundapura 
588da781e64SGanapati Kundapura /**
58999a2dd95SBruce Richardson  * Start ethernet Rx adapter. This callback is invoked if
59099a2dd95SBruce Richardson  * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_id)
59199a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
59299a2dd95SBruce Richardson  * from eth_port_id have been added to the event device.
59399a2dd95SBruce Richardson  *
59499a2dd95SBruce Richardson  * @param dev
59599a2dd95SBruce Richardson  *   Event device pointer
59699a2dd95SBruce Richardson  *
59799a2dd95SBruce Richardson  * @param eth_dev
59899a2dd95SBruce Richardson  *   Ethernet device pointer
59999a2dd95SBruce Richardson  *
60099a2dd95SBruce Richardson  * @return
60199a2dd95SBruce Richardson  *   - 0: Success, ethernet Rx adapter started successfully.
60299a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
60399a2dd95SBruce Richardson  */
60499a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_start_t)
60599a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
60699a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev);
60799a2dd95SBruce Richardson 
60899a2dd95SBruce Richardson /**
60999a2dd95SBruce Richardson  * Stop ethernet Rx adapter. This callback is invoked if
61099a2dd95SBruce Richardson  * the caps returned from eventdev_eth_rx_adapter_caps_get(..,eth_port_id)
61199a2dd95SBruce Richardson  * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
61299a2dd95SBruce Richardson  * from eth_port_id have been added to the event device.
61399a2dd95SBruce Richardson  *
61499a2dd95SBruce Richardson  * @param dev
61599a2dd95SBruce Richardson  *   Event device pointer
61699a2dd95SBruce Richardson  *
61799a2dd95SBruce Richardson  * @param eth_dev
61899a2dd95SBruce Richardson  *   Ethernet device pointer
61999a2dd95SBruce Richardson  *
62099a2dd95SBruce Richardson  * @return
62199a2dd95SBruce Richardson  *   - 0: Success, ethernet Rx adapter stopped successfully.
62299a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
62399a2dd95SBruce Richardson  */
62499a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stop_t)
62599a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
62699a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev);
62799a2dd95SBruce Richardson 
62899a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_stats;
62999a2dd95SBruce Richardson 
63099a2dd95SBruce Richardson /**
63199a2dd95SBruce Richardson  * Retrieve ethernet Rx adapter statistics.
63299a2dd95SBruce Richardson  *
63399a2dd95SBruce Richardson  * @param dev
63499a2dd95SBruce Richardson  *   Event device pointer
63599a2dd95SBruce Richardson  *
63699a2dd95SBruce Richardson  * @param eth_dev
63799a2dd95SBruce Richardson  *   Ethernet device pointer
63899a2dd95SBruce Richardson  *
63999a2dd95SBruce Richardson  * @param[out] stats
64099a2dd95SBruce Richardson  *   Pointer to stats structure
64199a2dd95SBruce Richardson  *
64299a2dd95SBruce Richardson  * @return
64399a2dd95SBruce Richardson  *   Return 0 on success.
64499a2dd95SBruce Richardson  */
64599a2dd95SBruce Richardson 
64699a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stats_get)
64799a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
64899a2dd95SBruce Richardson 			const struct rte_eth_dev *eth_dev,
64999a2dd95SBruce Richardson 			struct rte_event_eth_rx_adapter_stats *stats);
65099a2dd95SBruce Richardson /**
65199a2dd95SBruce Richardson  * Reset ethernet Rx adapter statistics.
65299a2dd95SBruce Richardson  *
65399a2dd95SBruce Richardson  * @param dev
65499a2dd95SBruce Richardson  *   Event device pointer
65599a2dd95SBruce Richardson  *
65699a2dd95SBruce Richardson  * @param eth_dev
65799a2dd95SBruce Richardson  *   Ethernet device pointer
65899a2dd95SBruce Richardson  *
65999a2dd95SBruce Richardson  * @return
66099a2dd95SBruce Richardson  *   Return 0 on success.
66199a2dd95SBruce Richardson  */
66299a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stats_reset)
66399a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
66499a2dd95SBruce Richardson 			const struct rte_eth_dev *eth_dev);
66599a2dd95SBruce Richardson /**
66699a2dd95SBruce Richardson  * Start eventdev selftest.
66799a2dd95SBruce Richardson  *
66899a2dd95SBruce Richardson  * @return
66999a2dd95SBruce Richardson  *   Return 0 on success.
67099a2dd95SBruce Richardson  */
67199a2dd95SBruce Richardson typedef int (*eventdev_selftest)(void);
67299a2dd95SBruce Richardson 
67399a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_vector_limits;
67499a2dd95SBruce Richardson /**
67599a2dd95SBruce Richardson  * Get event vector limits for a given event, ethernet device pair.
67699a2dd95SBruce Richardson  *
67799a2dd95SBruce Richardson  * @param dev
67899a2dd95SBruce Richardson  *   Event device pointer
67999a2dd95SBruce Richardson  *
68099a2dd95SBruce Richardson  * @param eth_dev
68199a2dd95SBruce Richardson  *   Ethernet device pointer
68299a2dd95SBruce Richardson  *
68399a2dd95SBruce Richardson  * @param[out] limits
68499a2dd95SBruce Richardson  *   Pointer to the limits structure to be filled.
68599a2dd95SBruce Richardson  *
68699a2dd95SBruce Richardson  * @return
68799a2dd95SBruce Richardson  *   - 0: Success.
68899a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
68999a2dd95SBruce Richardson  */
69099a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_vector_limits_get_t)(
69199a2dd95SBruce Richardson 	const struct rte_eventdev *dev, const struct rte_eth_dev *eth_dev,
69299a2dd95SBruce Richardson 	struct rte_event_eth_rx_adapter_vector_limits *limits);
69399a2dd95SBruce Richardson 
69499a2dd95SBruce Richardson typedef uint32_t rte_event_pmd_selftest_seqn_t;
69599a2dd95SBruce Richardson extern int rte_event_pmd_selftest_seqn_dynfield_offset;
69699a2dd95SBruce Richardson 
69799a2dd95SBruce Richardson /**
69899a2dd95SBruce Richardson  * Read test sequence number from mbuf.
69999a2dd95SBruce Richardson  *
70099a2dd95SBruce Richardson  * @param mbuf Structure to read from.
70199a2dd95SBruce Richardson  * @return pointer to test sequence number.
70299a2dd95SBruce Richardson  */
70399a2dd95SBruce Richardson __rte_internal
70499a2dd95SBruce Richardson static inline rte_event_pmd_selftest_seqn_t *
70599a2dd95SBruce Richardson rte_event_pmd_selftest_seqn(struct rte_mbuf *mbuf)
70699a2dd95SBruce Richardson {
70799a2dd95SBruce Richardson 	return RTE_MBUF_DYNFIELD(mbuf,
70899a2dd95SBruce Richardson 		rte_event_pmd_selftest_seqn_dynfield_offset,
70999a2dd95SBruce Richardson 		rte_event_pmd_selftest_seqn_t *);
71099a2dd95SBruce Richardson }
71199a2dd95SBruce Richardson 
71299a2dd95SBruce Richardson struct rte_cryptodev;
71399a2dd95SBruce Richardson 
71499a2dd95SBruce Richardson /**
71599a2dd95SBruce Richardson  * This API may change without prior notice
71699a2dd95SBruce Richardson  *
71799a2dd95SBruce Richardson  * Retrieve the event device's crypto adapter capabilities for the
71899a2dd95SBruce Richardson  * specified cryptodev
71999a2dd95SBruce Richardson  *
72099a2dd95SBruce Richardson  * @param dev
72199a2dd95SBruce Richardson  *   Event device pointer
72299a2dd95SBruce Richardson  *
72399a2dd95SBruce Richardson  * @param cdev
72499a2dd95SBruce Richardson  *   cryptodev pointer
72599a2dd95SBruce Richardson  *
72699a2dd95SBruce Richardson  * @param[out] caps
72799a2dd95SBruce Richardson  *   A pointer to memory filled with event adapter capabilities.
72899a2dd95SBruce Richardson  *   It is expected to be pre-allocated & initialized by caller.
72999a2dd95SBruce Richardson  *
73099a2dd95SBruce Richardson  * @return
73199a2dd95SBruce Richardson  *   - 0: Success, driver provides event adapter capabilities for the
73299a2dd95SBruce Richardson  *	cryptodev.
73399a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
73499a2dd95SBruce Richardson  *
73599a2dd95SBruce Richardson  */
73699a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_caps_get_t)
73799a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
73899a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev,
73999a2dd95SBruce Richardson 					 uint32_t *caps);
74099a2dd95SBruce Richardson 
74199a2dd95SBruce Richardson /**
74299a2dd95SBruce Richardson  * This API may change without prior notice
74399a2dd95SBruce Richardson  *
74499a2dd95SBruce Richardson  * Add crypto queue pair to event device. This callback is invoked if
74599a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
74699a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
74799a2dd95SBruce Richardson  *
74899a2dd95SBruce Richardson  * @param dev
74999a2dd95SBruce Richardson  *   Event device pointer
75099a2dd95SBruce Richardson  *
75199a2dd95SBruce Richardson  * @param cdev
75299a2dd95SBruce Richardson  *   cryptodev pointer
75399a2dd95SBruce Richardson  *
75499a2dd95SBruce Richardson  * @param queue_pair_id
75599a2dd95SBruce Richardson  *   cryptodev queue pair identifier.
75699a2dd95SBruce Richardson  *
75799a2dd95SBruce Richardson  * @param event
75899a2dd95SBruce Richardson  *  Event information required for binding cryptodev queue pair to event queue.
75999a2dd95SBruce Richardson  *  This structure will have a valid value for only those HW PMDs supporting
76099a2dd95SBruce Richardson  *  @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability.
76199a2dd95SBruce Richardson  *
76299a2dd95SBruce Richardson  * @return
76399a2dd95SBruce Richardson  *   - 0: Success, cryptodev queue pair added successfully.
76499a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
76599a2dd95SBruce Richardson  *
76699a2dd95SBruce Richardson  */
76799a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_queue_pair_add_t)
76899a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
76999a2dd95SBruce Richardson 			 const struct rte_cryptodev *cdev,
77099a2dd95SBruce Richardson 			 int32_t queue_pair_id,
77199a2dd95SBruce Richardson 			 const struct rte_event *event);
77299a2dd95SBruce Richardson 
77399a2dd95SBruce Richardson 
77499a2dd95SBruce Richardson /**
77599a2dd95SBruce Richardson  * This API may change without prior notice
77699a2dd95SBruce Richardson  *
77799a2dd95SBruce Richardson  * Delete crypto queue pair to event device. This callback is invoked if
77899a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
77999a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
78099a2dd95SBruce Richardson  *
78199a2dd95SBruce Richardson  * @param dev
78299a2dd95SBruce Richardson  *   Event device pointer
78399a2dd95SBruce Richardson  *
78499a2dd95SBruce Richardson  * @param cdev
78599a2dd95SBruce Richardson  *   cryptodev pointer
78699a2dd95SBruce Richardson  *
78799a2dd95SBruce Richardson  * @param queue_pair_id
78899a2dd95SBruce Richardson  *   cryptodev queue pair identifier.
78999a2dd95SBruce Richardson  *
79099a2dd95SBruce Richardson  * @return
79199a2dd95SBruce Richardson  *   - 0: Success, cryptodev queue pair deleted successfully.
79299a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
79399a2dd95SBruce Richardson  *
79499a2dd95SBruce Richardson  */
79599a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_queue_pair_del_t)
79699a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
79799a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev,
79899a2dd95SBruce Richardson 					 int32_t queue_pair_id);
79999a2dd95SBruce Richardson 
80099a2dd95SBruce Richardson /**
80199a2dd95SBruce Richardson  * Start crypto adapter. This callback is invoked if
80299a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
80399a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
80499a2dd95SBruce Richardson  * from cdev_id have been added to the event device.
80599a2dd95SBruce Richardson  *
80699a2dd95SBruce Richardson  * @param dev
80799a2dd95SBruce Richardson  *   Event device pointer
80899a2dd95SBruce Richardson  *
80999a2dd95SBruce Richardson  * @param cdev
81099a2dd95SBruce Richardson  *   Crypto device pointer
81199a2dd95SBruce Richardson  *
81299a2dd95SBruce Richardson  * @return
81399a2dd95SBruce Richardson  *   - 0: Success, crypto adapter started successfully.
81499a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
81599a2dd95SBruce Richardson  */
81699a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_start_t)
81799a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
81899a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev);
81999a2dd95SBruce Richardson 
82099a2dd95SBruce Richardson /**
82199a2dd95SBruce Richardson  * Stop crypto adapter. This callback is invoked if
82299a2dd95SBruce Richardson  * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
82399a2dd95SBruce Richardson  * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
82499a2dd95SBruce Richardson  * from cdev_id have been added to the event device.
82599a2dd95SBruce Richardson  *
82699a2dd95SBruce Richardson  * @param dev
82799a2dd95SBruce Richardson  *   Event device pointer
82899a2dd95SBruce Richardson  *
82999a2dd95SBruce Richardson  * @param cdev
83099a2dd95SBruce Richardson  *   Crypto device pointer
83199a2dd95SBruce Richardson  *
83299a2dd95SBruce Richardson  * @return
83399a2dd95SBruce Richardson  *   - 0: Success, crypto adapter stopped successfully.
83499a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
83599a2dd95SBruce Richardson  */
83699a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stop_t)
83799a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
83899a2dd95SBruce Richardson 					 const struct rte_cryptodev *cdev);
83999a2dd95SBruce Richardson 
84099a2dd95SBruce Richardson struct rte_event_crypto_adapter_stats;
84199a2dd95SBruce Richardson 
84299a2dd95SBruce Richardson /**
84399a2dd95SBruce Richardson  * Retrieve crypto adapter statistics.
84499a2dd95SBruce Richardson  *
84599a2dd95SBruce Richardson  * @param dev
84699a2dd95SBruce Richardson  *   Event device pointer
84799a2dd95SBruce Richardson  *
84899a2dd95SBruce Richardson  * @param cdev
84999a2dd95SBruce Richardson  *   Crypto device pointer
85099a2dd95SBruce Richardson  *
85199a2dd95SBruce Richardson  * @param[out] stats
85299a2dd95SBruce Richardson  *   Pointer to stats structure
85399a2dd95SBruce Richardson  *
85499a2dd95SBruce Richardson  * @return
85599a2dd95SBruce Richardson  *   Return 0 on success.
85699a2dd95SBruce Richardson  */
85799a2dd95SBruce Richardson 
85899a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stats_get)
85999a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
86099a2dd95SBruce Richardson 			 const struct rte_cryptodev *cdev,
86199a2dd95SBruce Richardson 			 struct rte_event_crypto_adapter_stats *stats);
86299a2dd95SBruce Richardson 
86399a2dd95SBruce Richardson /**
86499a2dd95SBruce Richardson  * Reset crypto adapter statistics.
86599a2dd95SBruce Richardson  *
86699a2dd95SBruce Richardson  * @param dev
86799a2dd95SBruce Richardson  *   Event device pointer
86899a2dd95SBruce Richardson  *
86999a2dd95SBruce Richardson  * @param cdev
87099a2dd95SBruce Richardson  *   Crypto device pointer
87199a2dd95SBruce Richardson  *
87299a2dd95SBruce Richardson  * @return
87399a2dd95SBruce Richardson  *   Return 0 on success.
87499a2dd95SBruce Richardson  */
87599a2dd95SBruce Richardson 
87699a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stats_reset)
87799a2dd95SBruce Richardson 			(const struct rte_eventdev *dev,
87899a2dd95SBruce Richardson 			 const struct rte_cryptodev *cdev);
87999a2dd95SBruce Richardson 
88099a2dd95SBruce Richardson /**
88199a2dd95SBruce Richardson  * Retrieve the event device's eth Tx adapter capabilities.
88299a2dd95SBruce Richardson  *
88399a2dd95SBruce Richardson  * @param dev
88499a2dd95SBruce Richardson  *   Event device pointer
88599a2dd95SBruce Richardson  *
88699a2dd95SBruce Richardson  * @param eth_dev
88799a2dd95SBruce Richardson  *   Ethernet device pointer
88899a2dd95SBruce Richardson  *
88999a2dd95SBruce Richardson  * @param[out] caps
89099a2dd95SBruce Richardson  *   A pointer to memory filled with eth Tx adapter capabilities.
89199a2dd95SBruce Richardson  *
89299a2dd95SBruce Richardson  * @return
89399a2dd95SBruce Richardson  *   - 0: Success, driver provides eth Tx adapter capabilities
89499a2dd95SBruce Richardson  *   - <0: Error code returned by the driver function.
89599a2dd95SBruce Richardson  *
89699a2dd95SBruce Richardson  */
89799a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_caps_get_t)
89899a2dd95SBruce Richardson 					(const struct rte_eventdev *dev,
89999a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
90099a2dd95SBruce Richardson 					uint32_t *caps);
90199a2dd95SBruce Richardson 
90299a2dd95SBruce Richardson /**
90399a2dd95SBruce Richardson  * Create adapter callback.
90499a2dd95SBruce Richardson  *
90599a2dd95SBruce Richardson  * @param id
90699a2dd95SBruce Richardson  *   Adapter identifier
90799a2dd95SBruce Richardson  *
90899a2dd95SBruce Richardson  * @param dev
90999a2dd95SBruce Richardson  *   Event device pointer
91099a2dd95SBruce Richardson  *
91199a2dd95SBruce Richardson  * @return
91299a2dd95SBruce Richardson  *   - 0: Success.
91399a2dd95SBruce Richardson  *   - <0: Error code on failure.
91499a2dd95SBruce Richardson  */
91599a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_create_t)(uint8_t id,
91699a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
91799a2dd95SBruce Richardson 
91899a2dd95SBruce Richardson /**
91999a2dd95SBruce Richardson  * Free adapter callback.
92099a2dd95SBruce Richardson  *
92199a2dd95SBruce Richardson  * @param id
92299a2dd95SBruce Richardson  *   Adapter identifier
92399a2dd95SBruce Richardson  *
92499a2dd95SBruce Richardson  * @param dev
92599a2dd95SBruce Richardson  *   Event device pointer
92699a2dd95SBruce Richardson  *
92799a2dd95SBruce Richardson  * @return
92899a2dd95SBruce Richardson  *   - 0: Success.
92999a2dd95SBruce Richardson  *   - <0: Error code on failure.
93099a2dd95SBruce Richardson  */
93199a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_free_t)(uint8_t id,
93299a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
93399a2dd95SBruce Richardson 
93499a2dd95SBruce Richardson /**
93599a2dd95SBruce Richardson  * Add a Tx queue to the adapter.
93699a2dd95SBruce Richardson  * A queue value of -1 is used to indicate all
93799a2dd95SBruce Richardson  * queues within the device.
93899a2dd95SBruce Richardson  *
93999a2dd95SBruce Richardson  * @param id
94099a2dd95SBruce Richardson  *   Adapter identifier
94199a2dd95SBruce Richardson  *
94299a2dd95SBruce Richardson  * @param dev
94399a2dd95SBruce Richardson  *   Event device pointer
94499a2dd95SBruce Richardson  *
94599a2dd95SBruce Richardson  * @param eth_dev
94699a2dd95SBruce Richardson  *   Ethernet device pointer
94799a2dd95SBruce Richardson  *
94899a2dd95SBruce Richardson  * @param tx_queue_id
94999a2dd95SBruce Richardson  *   Transmit queue index
95099a2dd95SBruce Richardson  *
95199a2dd95SBruce Richardson  * @return
95299a2dd95SBruce Richardson  *   - 0: Success.
95399a2dd95SBruce Richardson  *   - <0: Error code on failure.
95499a2dd95SBruce Richardson  */
95599a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_queue_add_t)(
95699a2dd95SBruce Richardson 					uint8_t id,
95799a2dd95SBruce Richardson 					const struct rte_eventdev *dev,
95899a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
95999a2dd95SBruce Richardson 					int32_t tx_queue_id);
96099a2dd95SBruce Richardson 
96199a2dd95SBruce Richardson /**
96299a2dd95SBruce Richardson  * Delete a Tx queue from the adapter.
96399a2dd95SBruce Richardson  * A queue value of -1 is used to indicate all
96499a2dd95SBruce Richardson  * queues within the device, that have been added to this
96599a2dd95SBruce Richardson  * adapter.
96699a2dd95SBruce Richardson  *
96799a2dd95SBruce Richardson  * @param id
96899a2dd95SBruce Richardson  *   Adapter identifier
96999a2dd95SBruce Richardson  *
97099a2dd95SBruce Richardson  * @param dev
97199a2dd95SBruce Richardson  *   Event device pointer
97299a2dd95SBruce Richardson  *
97399a2dd95SBruce Richardson  * @param eth_dev
97499a2dd95SBruce Richardson  *   Ethernet device pointer
97599a2dd95SBruce Richardson  *
97699a2dd95SBruce Richardson  * @param tx_queue_id
97799a2dd95SBruce Richardson  *   Transmit queue index
97899a2dd95SBruce Richardson  *
97999a2dd95SBruce Richardson  * @return
98099a2dd95SBruce Richardson  *  - 0: Success, Queues deleted successfully.
98199a2dd95SBruce Richardson  *  - <0: Error code on failure.
98299a2dd95SBruce Richardson  */
98399a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_queue_del_t)(
98499a2dd95SBruce Richardson 					uint8_t id,
98599a2dd95SBruce Richardson 					const struct rte_eventdev *dev,
98699a2dd95SBruce Richardson 					const struct rte_eth_dev *eth_dev,
98799a2dd95SBruce Richardson 					int32_t tx_queue_id);
98899a2dd95SBruce Richardson 
98999a2dd95SBruce Richardson /**
99099a2dd95SBruce Richardson  * Start the adapter.
99199a2dd95SBruce Richardson  *
99299a2dd95SBruce Richardson  * @param id
99399a2dd95SBruce Richardson  *   Adapter identifier
99499a2dd95SBruce Richardson  *
99599a2dd95SBruce Richardson  * @param dev
99699a2dd95SBruce Richardson  *   Event device pointer
99799a2dd95SBruce Richardson  *
99899a2dd95SBruce Richardson  * @return
99999a2dd95SBruce Richardson  *  - 0: Success, Adapter started correctly.
100099a2dd95SBruce Richardson  *  - <0: Error code on failure.
100199a2dd95SBruce Richardson  */
100299a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_start_t)(uint8_t id,
100399a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
100499a2dd95SBruce Richardson 
100599a2dd95SBruce Richardson /**
100699a2dd95SBruce Richardson  * Stop the adapter.
100799a2dd95SBruce Richardson  *
100899a2dd95SBruce Richardson  * @param id
100999a2dd95SBruce Richardson  *  Adapter identifier
101099a2dd95SBruce Richardson  *
101199a2dd95SBruce Richardson  * @param dev
101299a2dd95SBruce Richardson  *   Event device pointer
101399a2dd95SBruce Richardson  *
101499a2dd95SBruce Richardson  * @return
101599a2dd95SBruce Richardson  *  - 0: Success.
101699a2dd95SBruce Richardson  *  - <0: Error code on failure.
101799a2dd95SBruce Richardson  */
101899a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stop_t)(uint8_t id,
101999a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
102099a2dd95SBruce Richardson 
102199a2dd95SBruce Richardson struct rte_event_eth_tx_adapter_stats;
102299a2dd95SBruce Richardson 
102399a2dd95SBruce Richardson /**
102499a2dd95SBruce Richardson  * Retrieve statistics for an adapter
102599a2dd95SBruce Richardson  *
102699a2dd95SBruce Richardson  * @param id
102799a2dd95SBruce Richardson  *  Adapter identifier
102899a2dd95SBruce Richardson  *
102999a2dd95SBruce Richardson  * @param dev
103099a2dd95SBruce Richardson  *   Event device pointer
103199a2dd95SBruce Richardson  *
103299a2dd95SBruce Richardson  * @param [out] stats
103399a2dd95SBruce Richardson  *  A pointer to structure used to retrieve statistics for an adapter
103499a2dd95SBruce Richardson  *
103599a2dd95SBruce Richardson  * @return
103699a2dd95SBruce Richardson  *  - 0: Success, statistics retrieved successfully.
103799a2dd95SBruce Richardson  *  - <0: Error code on failure.
103899a2dd95SBruce Richardson  */
103999a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stats_get_t)(
104099a2dd95SBruce Richardson 				uint8_t id,
104199a2dd95SBruce Richardson 				const struct rte_eventdev *dev,
104299a2dd95SBruce Richardson 				struct rte_event_eth_tx_adapter_stats *stats);
104399a2dd95SBruce Richardson 
104499a2dd95SBruce Richardson /**
104599a2dd95SBruce Richardson  * Reset statistics for an adapter
104699a2dd95SBruce Richardson  *
104799a2dd95SBruce Richardson  * @param id
104899a2dd95SBruce Richardson  *  Adapter identifier
104999a2dd95SBruce Richardson  *
105099a2dd95SBruce Richardson  * @param dev
105199a2dd95SBruce Richardson  *   Event device pointer
105299a2dd95SBruce Richardson  *
105399a2dd95SBruce Richardson  * @return
105499a2dd95SBruce Richardson  *  - 0: Success, statistics retrieved successfully.
105599a2dd95SBruce Richardson  *  - <0: Error code on failure.
105699a2dd95SBruce Richardson  */
105799a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id,
105899a2dd95SBruce Richardson 					const struct rte_eventdev *dev);
105999a2dd95SBruce Richardson 
106099a2dd95SBruce Richardson /** Event device operations function pointer table */
1061*23d06e37SPavan Nikhilesh struct eventdev_ops {
106299a2dd95SBruce Richardson 	eventdev_info_get_t dev_infos_get;	/**< Get device info. */
106399a2dd95SBruce Richardson 	eventdev_configure_t dev_configure;	/**< Configure device. */
106499a2dd95SBruce Richardson 	eventdev_start_t dev_start;		/**< Start device. */
106599a2dd95SBruce Richardson 	eventdev_stop_t dev_stop;		/**< Stop device. */
106699a2dd95SBruce Richardson 	eventdev_close_t dev_close;		/**< Close device. */
106799a2dd95SBruce Richardson 
106899a2dd95SBruce Richardson 	eventdev_queue_default_conf_get_t queue_def_conf;
106999a2dd95SBruce Richardson 	/**< Get default queue configuration. */
107099a2dd95SBruce Richardson 	eventdev_queue_setup_t queue_setup;
107199a2dd95SBruce Richardson 	/**< Set up an event queue. */
107299a2dd95SBruce Richardson 	eventdev_queue_release_t queue_release;
107399a2dd95SBruce Richardson 	/**< Release an event queue. */
107499a2dd95SBruce Richardson 
107599a2dd95SBruce Richardson 	eventdev_port_default_conf_get_t port_def_conf;
107699a2dd95SBruce Richardson 	/**< Get default port configuration. */
107799a2dd95SBruce Richardson 	eventdev_port_setup_t port_setup;
107899a2dd95SBruce Richardson 	/**< Set up an event port. */
107999a2dd95SBruce Richardson 	eventdev_port_release_t port_release;
108099a2dd95SBruce Richardson 	/**< Release an event port. */
108199a2dd95SBruce Richardson 
108299a2dd95SBruce Richardson 	eventdev_port_link_t port_link;
108399a2dd95SBruce Richardson 	/**< Link event queues to an event port. */
108499a2dd95SBruce Richardson 	eventdev_port_unlink_t port_unlink;
108599a2dd95SBruce Richardson 	/**< Unlink event queues from an event port. */
108699a2dd95SBruce Richardson 	eventdev_port_unlinks_in_progress_t port_unlinks_in_progress;
108799a2dd95SBruce Richardson 	/**< Unlinks in progress on an event port. */
108899a2dd95SBruce Richardson 	eventdev_dequeue_timeout_ticks_t timeout_ticks;
108999a2dd95SBruce Richardson 	/**< Converts ns to *timeout_ticks* value for rte_event_dequeue() */
109099a2dd95SBruce Richardson 	eventdev_dump_t dump;
109199a2dd95SBruce Richardson 	/* Dump internal information */
109299a2dd95SBruce Richardson 
109399a2dd95SBruce Richardson 	eventdev_xstats_get_t xstats_get;
109499a2dd95SBruce Richardson 	/**< Get extended device statistics. */
109599a2dd95SBruce Richardson 	eventdev_xstats_get_names_t xstats_get_names;
109699a2dd95SBruce Richardson 	/**< Get names of extended stats. */
109799a2dd95SBruce Richardson 	eventdev_xstats_get_by_name xstats_get_by_name;
109899a2dd95SBruce Richardson 	/**< Get one value by name. */
109999a2dd95SBruce Richardson 	eventdev_xstats_reset_t xstats_reset;
110099a2dd95SBruce Richardson 	/**< Reset the statistics values in xstats. */
110199a2dd95SBruce Richardson 
110299a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_caps_get_t eth_rx_adapter_caps_get;
110399a2dd95SBruce Richardson 	/**< Get ethernet Rx adapter capabilities */
110499a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_queue_add_t eth_rx_adapter_queue_add;
110599a2dd95SBruce Richardson 	/**< Add Rx queues to ethernet Rx adapter */
110699a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del;
110799a2dd95SBruce Richardson 	/**< Delete Rx queues from ethernet Rx adapter */
1108da781e64SGanapati Kundapura 	eventdev_eth_rx_adapter_queue_conf_get_t eth_rx_adapter_queue_conf_get;
1109da781e64SGanapati Kundapura 	/**< Get Rx adapter queue info */
111099a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_start_t eth_rx_adapter_start;
111199a2dd95SBruce Richardson 	/**< Start ethernet Rx adapter */
111299a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop;
111399a2dd95SBruce Richardson 	/**< Stop ethernet Rx adapter */
111499a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_stats_get eth_rx_adapter_stats_get;
111599a2dd95SBruce Richardson 	/**< Get ethernet Rx stats */
111699a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset;
111799a2dd95SBruce Richardson 	/**< Reset ethernet Rx stats */
111899a2dd95SBruce Richardson 	eventdev_eth_rx_adapter_vector_limits_get_t
111999a2dd95SBruce Richardson 		eth_rx_adapter_vector_limits_get;
112099a2dd95SBruce Richardson 	/**< Get event vector limits for the Rx adapter */
112199a2dd95SBruce Richardson 
112299a2dd95SBruce Richardson 	eventdev_timer_adapter_caps_get_t timer_adapter_caps_get;
112399a2dd95SBruce Richardson 	/**< Get timer adapter capabilities */
112499a2dd95SBruce Richardson 
112599a2dd95SBruce Richardson 	eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get;
112699a2dd95SBruce Richardson 	/**< Get crypto adapter capabilities */
112799a2dd95SBruce Richardson 	eventdev_crypto_adapter_queue_pair_add_t crypto_adapter_queue_pair_add;
112899a2dd95SBruce Richardson 	/**< Add queue pair to crypto adapter */
112999a2dd95SBruce Richardson 	eventdev_crypto_adapter_queue_pair_del_t crypto_adapter_queue_pair_del;
113099a2dd95SBruce Richardson 	/**< Delete queue pair from crypto adapter */
113199a2dd95SBruce Richardson 	eventdev_crypto_adapter_start_t crypto_adapter_start;
113299a2dd95SBruce Richardson 	/**< Start crypto adapter */
113399a2dd95SBruce Richardson 	eventdev_crypto_adapter_stop_t crypto_adapter_stop;
113499a2dd95SBruce Richardson 	/**< Stop crypto adapter */
113599a2dd95SBruce Richardson 	eventdev_crypto_adapter_stats_get crypto_adapter_stats_get;
113699a2dd95SBruce Richardson 	/**< Get crypto stats */
113799a2dd95SBruce Richardson 	eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset;
113899a2dd95SBruce Richardson 	/**< Reset crypto stats */
113999a2dd95SBruce Richardson 
114099a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get;
114199a2dd95SBruce Richardson 	/**< Get ethernet Tx adapter capabilities */
114299a2dd95SBruce Richardson 
114399a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_create_t eth_tx_adapter_create;
114499a2dd95SBruce Richardson 	/**< Create adapter callback */
114599a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_free_t eth_tx_adapter_free;
114699a2dd95SBruce Richardson 	/**< Free adapter callback */
114799a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_queue_add_t eth_tx_adapter_queue_add;
114899a2dd95SBruce Richardson 	/**< Add Tx queues to the eth Tx adapter */
114999a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_queue_del_t eth_tx_adapter_queue_del;
115099a2dd95SBruce Richardson 	/**< Delete Tx queues from the eth Tx adapter */
115199a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_start_t eth_tx_adapter_start;
115299a2dd95SBruce Richardson 	/**< Start eth Tx adapter */
115399a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_stop_t eth_tx_adapter_stop;
115499a2dd95SBruce Richardson 	/**< Stop eth Tx adapter */
115599a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_stats_get_t eth_tx_adapter_stats_get;
115699a2dd95SBruce Richardson 	/**< Get eth Tx adapter statistics */
115799a2dd95SBruce Richardson 	eventdev_eth_tx_adapter_stats_reset_t eth_tx_adapter_stats_reset;
115899a2dd95SBruce Richardson 	/**< Reset eth Tx adapter statistics */
115999a2dd95SBruce Richardson 
116099a2dd95SBruce Richardson 	eventdev_selftest dev_selftest;
116199a2dd95SBruce Richardson 	/**< Start eventdev Selftest */
116299a2dd95SBruce Richardson 
116399a2dd95SBruce Richardson 	eventdev_stop_flush_t dev_stop_flush;
116499a2dd95SBruce Richardson 	/**< User-provided event flush function */
116599a2dd95SBruce Richardson };
116699a2dd95SBruce Richardson 
116799a2dd95SBruce Richardson /**
116899a2dd95SBruce Richardson  * Allocates a new eventdev slot for an event device and returns the pointer
116999a2dd95SBruce Richardson  * to that slot for the driver to use.
117099a2dd95SBruce Richardson  *
117199a2dd95SBruce Richardson  * @param name
117299a2dd95SBruce Richardson  *   Unique identifier name for each device
117399a2dd95SBruce Richardson  * @param socket_id
117499a2dd95SBruce Richardson  *   Socket to allocate resources on.
117599a2dd95SBruce Richardson  * @return
117699a2dd95SBruce Richardson  *   - Slot in the rte_dev_devices array for a new device;
117799a2dd95SBruce Richardson  */
1178*23d06e37SPavan Nikhilesh __rte_internal
117999a2dd95SBruce Richardson struct rte_eventdev *
118099a2dd95SBruce Richardson rte_event_pmd_allocate(const char *name, int socket_id);
118199a2dd95SBruce Richardson 
118299a2dd95SBruce Richardson /**
118399a2dd95SBruce Richardson  * Release the specified eventdev device.
118499a2dd95SBruce Richardson  *
118599a2dd95SBruce Richardson  * @param eventdev
118699a2dd95SBruce Richardson  * The *eventdev* pointer is the address of the *rte_eventdev* structure.
118799a2dd95SBruce Richardson  * @return
118899a2dd95SBruce Richardson  *   - 0 on success, negative on error
118999a2dd95SBruce Richardson  */
1190*23d06e37SPavan Nikhilesh __rte_internal
119199a2dd95SBruce Richardson int
119299a2dd95SBruce Richardson rte_event_pmd_release(struct rte_eventdev *eventdev);
119399a2dd95SBruce Richardson 
119499a2dd95SBruce Richardson #endif /* _RTE_EVENTDEV_PMD_H_ */
1195