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 2753548ad3SPavan Nikhilesh #include "event_timer_adapter_pmd.h" 2899a2dd95SBruce Richardson #include "rte_eventdev.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 83295c053fSPavan Nikhilesh #define RTE_EVENTDEV_NAME_MAX_LEN (64) 84295c053fSPavan Nikhilesh /**< @internal Max length of name of event PMD */ 85295c053fSPavan Nikhilesh 8699a2dd95SBruce Richardson struct rte_eth_dev; 8799a2dd95SBruce Richardson 8899a2dd95SBruce Richardson /** Global structure used for maintaining state of allocated event devices */ 8999a2dd95SBruce Richardson struct rte_eventdev_global { 9099a2dd95SBruce Richardson uint8_t nb_devs; /**< Number of devices found */ 9199a2dd95SBruce Richardson }; 9299a2dd95SBruce Richardson 9399a2dd95SBruce Richardson /** 94295c053fSPavan Nikhilesh * @internal 95295c053fSPavan Nikhilesh * The data part, with no function pointers, associated with each device. 96295c053fSPavan Nikhilesh * 97295c053fSPavan Nikhilesh * This structure is safe to place in shared memory to be common among 98295c053fSPavan Nikhilesh * different processes in a multi-process configuration. 99295c053fSPavan Nikhilesh */ 100295c053fSPavan Nikhilesh struct rte_eventdev_data { 101295c053fSPavan Nikhilesh int socket_id; 102295c053fSPavan Nikhilesh /**< Socket ID where memory is allocated */ 103295c053fSPavan Nikhilesh uint8_t dev_id; 104295c053fSPavan Nikhilesh /**< Device ID for this instance */ 105295c053fSPavan Nikhilesh uint8_t nb_queues; 106295c053fSPavan Nikhilesh /**< Number of event queues. */ 107295c053fSPavan Nikhilesh uint8_t nb_ports; 108295c053fSPavan Nikhilesh /**< Number of event ports. */ 109295c053fSPavan Nikhilesh void *ports[RTE_EVENT_MAX_PORTS_PER_DEV]; 110295c053fSPavan Nikhilesh /**< Array of pointers to ports. */ 111295c053fSPavan Nikhilesh struct rte_event_port_conf ports_cfg[RTE_EVENT_MAX_PORTS_PER_DEV]; 112295c053fSPavan Nikhilesh /**< Array of port configuration structures. */ 113295c053fSPavan Nikhilesh struct rte_event_queue_conf queues_cfg[RTE_EVENT_MAX_QUEUES_PER_DEV]; 114295c053fSPavan Nikhilesh /**< Array of queue configuration structures. */ 115295c053fSPavan Nikhilesh uint16_t links_map[RTE_EVENT_MAX_PORTS_PER_DEV * 116295c053fSPavan Nikhilesh RTE_EVENT_MAX_QUEUES_PER_DEV]; 117295c053fSPavan Nikhilesh /**< Memory to store queues to port connections. */ 118295c053fSPavan Nikhilesh void *dev_private; 119295c053fSPavan Nikhilesh /**< PMD-specific private data */ 120295c053fSPavan Nikhilesh uint32_t event_dev_cap; 121295c053fSPavan Nikhilesh /**< Event device capabilities(RTE_EVENT_DEV_CAP_)*/ 122295c053fSPavan Nikhilesh struct rte_event_dev_config dev_conf; 123295c053fSPavan Nikhilesh /**< Configuration applied to device. */ 124295c053fSPavan Nikhilesh uint8_t service_inited; 125295c053fSPavan Nikhilesh /* Service initialization state */ 126295c053fSPavan Nikhilesh uint32_t service_id; 127295c053fSPavan Nikhilesh /* Service ID*/ 128295c053fSPavan Nikhilesh void *dev_stop_flush_arg; 129295c053fSPavan Nikhilesh /**< User-provided argument for event flush function */ 130295c053fSPavan Nikhilesh 131295c053fSPavan Nikhilesh RTE_STD_C11 132295c053fSPavan Nikhilesh uint8_t dev_started : 1; 133295c053fSPavan Nikhilesh /**< Device state: STARTED(1)/STOPPED(0) */ 134295c053fSPavan Nikhilesh 135295c053fSPavan Nikhilesh char name[RTE_EVENTDEV_NAME_MAX_LEN]; 136295c053fSPavan Nikhilesh /**< Unique identifier name */ 137295c053fSPavan Nikhilesh 138295c053fSPavan Nikhilesh uint64_t reserved_64s[4]; /**< Reserved for future fields */ 139295c053fSPavan Nikhilesh void *reserved_ptrs[4]; /**< Reserved for future fields */ 140295c053fSPavan Nikhilesh } __rte_cache_aligned; 141295c053fSPavan Nikhilesh 142295c053fSPavan Nikhilesh /** @internal The data structure associated with each event device. */ 143295c053fSPavan Nikhilesh struct rte_eventdev { 144295c053fSPavan Nikhilesh struct rte_eventdev_data *data; 145295c053fSPavan Nikhilesh /**< Pointer to device data */ 146295c053fSPavan Nikhilesh struct eventdev_ops *dev_ops; 147295c053fSPavan Nikhilesh /**< Functions exported by PMD */ 148295c053fSPavan Nikhilesh struct rte_device *dev; 149295c053fSPavan Nikhilesh /**< Device info. supplied by probing */ 150295c053fSPavan Nikhilesh 151295c053fSPavan Nikhilesh RTE_STD_C11 152295c053fSPavan Nikhilesh uint8_t attached : 1; 153295c053fSPavan Nikhilesh /**< Flag indicating the device is attached */ 154295c053fSPavan Nikhilesh 155295c053fSPavan Nikhilesh event_enqueue_t enqueue; 156295c053fSPavan Nikhilesh /**< Pointer to PMD enqueue function. */ 157295c053fSPavan Nikhilesh event_enqueue_burst_t enqueue_burst; 158295c053fSPavan Nikhilesh /**< Pointer to PMD enqueue burst function. */ 159295c053fSPavan Nikhilesh event_enqueue_burst_t enqueue_new_burst; 160295c053fSPavan Nikhilesh /**< Pointer to PMD enqueue burst function(op new variant) */ 161295c053fSPavan Nikhilesh event_enqueue_burst_t enqueue_forward_burst; 162295c053fSPavan Nikhilesh /**< Pointer to PMD enqueue burst function(op forward variant) */ 163295c053fSPavan Nikhilesh event_dequeue_t dequeue; 164295c053fSPavan Nikhilesh /**< Pointer to PMD dequeue function. */ 165295c053fSPavan Nikhilesh event_dequeue_burst_t dequeue_burst; 166295c053fSPavan Nikhilesh /**< Pointer to PMD dequeue burst function. */ 16754f17843SMattias Rönnblom event_maintain_t maintain; 16854f17843SMattias Rönnblom /**< Pointer to PMD port maintenance function. */ 169295c053fSPavan Nikhilesh event_tx_adapter_enqueue_t txa_enqueue_same_dest; 170295c053fSPavan Nikhilesh /**< Pointer to PMD eth Tx adapter burst enqueue function with 171295c053fSPavan Nikhilesh * events destined to same Eth port & Tx queue. 172295c053fSPavan Nikhilesh */ 173295c053fSPavan Nikhilesh event_tx_adapter_enqueue_t txa_enqueue; 174295c053fSPavan Nikhilesh /**< Pointer to PMD eth Tx adapter enqueue function. */ 175295c053fSPavan Nikhilesh event_crypto_adapter_enqueue_t ca_enqueue; 176295c053fSPavan Nikhilesh 177295c053fSPavan Nikhilesh uint64_t reserved_64s[4]; /**< Reserved for future fields */ 178295c053fSPavan Nikhilesh void *reserved_ptrs[3]; /**< Reserved for future fields */ 179295c053fSPavan Nikhilesh } __rte_cache_aligned; 180295c053fSPavan Nikhilesh 181295c053fSPavan Nikhilesh extern struct rte_eventdev *rte_eventdevs; 182295c053fSPavan Nikhilesh /** @internal The pool of rte_eventdev structures. */ 183295c053fSPavan Nikhilesh 184295c053fSPavan Nikhilesh /** 18599a2dd95SBruce Richardson * Get the rte_eventdev structure device pointer for the named device. 18699a2dd95SBruce Richardson * 18799a2dd95SBruce Richardson * @param name 18899a2dd95SBruce Richardson * device name to select the device structure. 18999a2dd95SBruce Richardson * 19099a2dd95SBruce Richardson * @return 19199a2dd95SBruce Richardson * - The rte_eventdev structure pointer for the given device ID. 19299a2dd95SBruce Richardson */ 19323d06e37SPavan Nikhilesh __rte_internal 19499a2dd95SBruce Richardson static inline struct rte_eventdev * 19599a2dd95SBruce Richardson rte_event_pmd_get_named_dev(const char *name) 19699a2dd95SBruce Richardson { 19799a2dd95SBruce Richardson struct rte_eventdev *dev; 19899a2dd95SBruce Richardson unsigned int i; 19999a2dd95SBruce Richardson 20099a2dd95SBruce Richardson if (name == NULL) 20199a2dd95SBruce Richardson return NULL; 20299a2dd95SBruce Richardson 20399a2dd95SBruce Richardson for (i = 0; i < RTE_EVENT_MAX_DEVS; i++) { 20499a2dd95SBruce Richardson dev = &rte_eventdevs[i]; 20599a2dd95SBruce Richardson if ((dev->attached == RTE_EVENTDEV_ATTACHED) && 20699a2dd95SBruce Richardson (strcmp(dev->data->name, name) == 0)) 20799a2dd95SBruce Richardson return dev; 20899a2dd95SBruce Richardson } 20999a2dd95SBruce Richardson 21099a2dd95SBruce Richardson return NULL; 21199a2dd95SBruce Richardson } 21299a2dd95SBruce Richardson 21399a2dd95SBruce Richardson /** 21499a2dd95SBruce Richardson * Validate if the event device index is valid attached event device. 21599a2dd95SBruce Richardson * 21699a2dd95SBruce Richardson * @param dev_id 21799a2dd95SBruce Richardson * Event device index. 21899a2dd95SBruce Richardson * 21999a2dd95SBruce Richardson * @return 22099a2dd95SBruce Richardson * - If the device index is valid (1) or not (0). 22199a2dd95SBruce Richardson */ 22223d06e37SPavan Nikhilesh __rte_internal 22399a2dd95SBruce Richardson static inline unsigned 22499a2dd95SBruce Richardson rte_event_pmd_is_valid_dev(uint8_t dev_id) 22599a2dd95SBruce Richardson { 22699a2dd95SBruce Richardson struct rte_eventdev *dev; 22799a2dd95SBruce Richardson 22899a2dd95SBruce Richardson if (dev_id >= RTE_EVENT_MAX_DEVS) 22999a2dd95SBruce Richardson return 0; 23099a2dd95SBruce Richardson 23199a2dd95SBruce Richardson dev = &rte_eventdevs[dev_id]; 23299a2dd95SBruce Richardson if (dev->attached != RTE_EVENTDEV_ATTACHED) 23399a2dd95SBruce Richardson return 0; 23499a2dd95SBruce Richardson else 23599a2dd95SBruce Richardson return 1; 23699a2dd95SBruce Richardson } 23799a2dd95SBruce Richardson 23899a2dd95SBruce Richardson /** 23999a2dd95SBruce Richardson * Definitions of all functions exported by a driver through the 240*b53d106dSSean Morrissey * generic structure of type *event_dev_ops* supplied in the 24199a2dd95SBruce Richardson * *rte_eventdev* structure associated with a device. 24299a2dd95SBruce Richardson */ 24399a2dd95SBruce Richardson 24499a2dd95SBruce Richardson /** 24599a2dd95SBruce Richardson * Get device information of a device. 24699a2dd95SBruce Richardson * 24799a2dd95SBruce Richardson * @param dev 24899a2dd95SBruce Richardson * Event device pointer 24999a2dd95SBruce Richardson * @param dev_info 25099a2dd95SBruce Richardson * Event device information structure 25199a2dd95SBruce Richardson */ 25299a2dd95SBruce Richardson typedef void (*eventdev_info_get_t)(struct rte_eventdev *dev, 25399a2dd95SBruce Richardson struct rte_event_dev_info *dev_info); 25499a2dd95SBruce Richardson 25599a2dd95SBruce Richardson /** 25699a2dd95SBruce Richardson * Configure a device. 25799a2dd95SBruce Richardson * 25899a2dd95SBruce Richardson * @param dev 25999a2dd95SBruce Richardson * Event device pointer 26099a2dd95SBruce Richardson * 26199a2dd95SBruce Richardson * @return 26299a2dd95SBruce Richardson * Returns 0 on success 26399a2dd95SBruce Richardson */ 26499a2dd95SBruce Richardson typedef int (*eventdev_configure_t)(const struct rte_eventdev *dev); 26599a2dd95SBruce Richardson 26699a2dd95SBruce Richardson /** 26799a2dd95SBruce Richardson * Start a configured device. 26899a2dd95SBruce Richardson * 26999a2dd95SBruce Richardson * @param dev 27099a2dd95SBruce Richardson * Event device pointer 27199a2dd95SBruce Richardson * 27299a2dd95SBruce Richardson * @return 27399a2dd95SBruce Richardson * Returns 0 on success 27499a2dd95SBruce Richardson */ 27599a2dd95SBruce Richardson typedef int (*eventdev_start_t)(struct rte_eventdev *dev); 27699a2dd95SBruce Richardson 27799a2dd95SBruce Richardson /** 27899a2dd95SBruce Richardson * Stop a configured device. 27999a2dd95SBruce Richardson * 28099a2dd95SBruce Richardson * @param dev 28199a2dd95SBruce Richardson * Event device pointer 28299a2dd95SBruce Richardson */ 28399a2dd95SBruce Richardson typedef void (*eventdev_stop_t)(struct rte_eventdev *dev); 28499a2dd95SBruce Richardson 28599a2dd95SBruce Richardson /** 28699a2dd95SBruce Richardson * Close a configured device. 28799a2dd95SBruce Richardson * 28899a2dd95SBruce Richardson * @param dev 28999a2dd95SBruce Richardson * Event device pointer 29099a2dd95SBruce Richardson * 29199a2dd95SBruce Richardson * @return 29299a2dd95SBruce Richardson * - 0 on success 29399a2dd95SBruce Richardson * - (-EAGAIN) if can't close as device is busy 29499a2dd95SBruce Richardson */ 29599a2dd95SBruce Richardson typedef int (*eventdev_close_t)(struct rte_eventdev *dev); 29699a2dd95SBruce Richardson 29799a2dd95SBruce Richardson /** 29899a2dd95SBruce Richardson * Retrieve the default event queue configuration. 29999a2dd95SBruce Richardson * 30099a2dd95SBruce Richardson * @param dev 30199a2dd95SBruce Richardson * Event device pointer 30299a2dd95SBruce Richardson * @param queue_id 30399a2dd95SBruce Richardson * Event queue index 30499a2dd95SBruce Richardson * @param[out] queue_conf 30599a2dd95SBruce Richardson * Event queue configuration structure 30699a2dd95SBruce Richardson * 30799a2dd95SBruce Richardson */ 30899a2dd95SBruce Richardson typedef void (*eventdev_queue_default_conf_get_t)(struct rte_eventdev *dev, 30999a2dd95SBruce Richardson uint8_t queue_id, struct rte_event_queue_conf *queue_conf); 31099a2dd95SBruce Richardson 31199a2dd95SBruce Richardson /** 31299a2dd95SBruce Richardson * Setup an event queue. 31399a2dd95SBruce Richardson * 31499a2dd95SBruce Richardson * @param dev 31599a2dd95SBruce Richardson * Event device pointer 31699a2dd95SBruce Richardson * @param queue_id 31799a2dd95SBruce Richardson * Event queue index 31899a2dd95SBruce Richardson * @param queue_conf 31999a2dd95SBruce Richardson * Event queue configuration structure 32099a2dd95SBruce Richardson * 32199a2dd95SBruce Richardson * @return 32299a2dd95SBruce Richardson * Returns 0 on success. 32399a2dd95SBruce Richardson */ 32499a2dd95SBruce Richardson typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev, 32599a2dd95SBruce Richardson uint8_t queue_id, 32699a2dd95SBruce Richardson const struct rte_event_queue_conf *queue_conf); 32799a2dd95SBruce Richardson 32899a2dd95SBruce Richardson /** 32999a2dd95SBruce Richardson * Release resources allocated by given event queue. 33099a2dd95SBruce Richardson * 33199a2dd95SBruce Richardson * @param dev 33299a2dd95SBruce Richardson * Event device pointer 33399a2dd95SBruce Richardson * @param queue_id 33499a2dd95SBruce Richardson * Event queue index 33599a2dd95SBruce Richardson * 33699a2dd95SBruce Richardson */ 33799a2dd95SBruce Richardson typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev, 33899a2dd95SBruce Richardson uint8_t queue_id); 33999a2dd95SBruce Richardson 34099a2dd95SBruce Richardson /** 34199a2dd95SBruce Richardson * Retrieve the default event port configuration. 34299a2dd95SBruce Richardson * 34399a2dd95SBruce Richardson * @param dev 34499a2dd95SBruce Richardson * Event device pointer 34599a2dd95SBruce Richardson * @param port_id 34699a2dd95SBruce Richardson * Event port index 34799a2dd95SBruce Richardson * @param[out] port_conf 34899a2dd95SBruce Richardson * Event port configuration structure 34999a2dd95SBruce Richardson * 35099a2dd95SBruce Richardson */ 35199a2dd95SBruce Richardson typedef void (*eventdev_port_default_conf_get_t)(struct rte_eventdev *dev, 35299a2dd95SBruce Richardson uint8_t port_id, struct rte_event_port_conf *port_conf); 35399a2dd95SBruce Richardson 35499a2dd95SBruce Richardson /** 35599a2dd95SBruce Richardson * Setup an event port. 35699a2dd95SBruce Richardson * 35799a2dd95SBruce Richardson * @param dev 35899a2dd95SBruce Richardson * Event device pointer 35999a2dd95SBruce Richardson * @param port_id 36099a2dd95SBruce Richardson * Event port index 36199a2dd95SBruce Richardson * @param port_conf 36299a2dd95SBruce Richardson * Event port configuration structure 36399a2dd95SBruce Richardson * 36499a2dd95SBruce Richardson * @return 36599a2dd95SBruce Richardson * Returns 0 on success. 36699a2dd95SBruce Richardson */ 36799a2dd95SBruce Richardson typedef int (*eventdev_port_setup_t)(struct rte_eventdev *dev, 36899a2dd95SBruce Richardson uint8_t port_id, 36999a2dd95SBruce Richardson const struct rte_event_port_conf *port_conf); 37099a2dd95SBruce Richardson 37199a2dd95SBruce Richardson /** 37299a2dd95SBruce Richardson * Release memory resources allocated by given event port. 37399a2dd95SBruce Richardson * 37499a2dd95SBruce Richardson * @param port 37599a2dd95SBruce Richardson * Event port pointer 37699a2dd95SBruce Richardson * 37799a2dd95SBruce Richardson */ 37899a2dd95SBruce Richardson typedef void (*eventdev_port_release_t)(void *port); 37999a2dd95SBruce Richardson 38099a2dd95SBruce Richardson /** 38199a2dd95SBruce Richardson * Link multiple source event queues to destination event port. 38299a2dd95SBruce Richardson * 38399a2dd95SBruce Richardson * @param dev 38499a2dd95SBruce Richardson * Event device pointer 38599a2dd95SBruce Richardson * @param port 38699a2dd95SBruce Richardson * Event port pointer 38799a2dd95SBruce Richardson * @param queues 38899a2dd95SBruce Richardson * Points to an array of *nb_links* event queues to be linked 38999a2dd95SBruce Richardson * to the event port. 39099a2dd95SBruce Richardson * @param priorities 39199a2dd95SBruce Richardson * Points to an array of *nb_links* service priorities associated with each 39299a2dd95SBruce Richardson * event queue link to event port. 39399a2dd95SBruce Richardson * @param nb_links 39499a2dd95SBruce Richardson * The number of links to establish 39599a2dd95SBruce Richardson * 39699a2dd95SBruce Richardson * @return 39799a2dd95SBruce Richardson * Returns 0 on success. 39899a2dd95SBruce Richardson * 39999a2dd95SBruce Richardson */ 40099a2dd95SBruce Richardson typedef int (*eventdev_port_link_t)(struct rte_eventdev *dev, void *port, 40199a2dd95SBruce Richardson const uint8_t queues[], const uint8_t priorities[], 40299a2dd95SBruce Richardson uint16_t nb_links); 40399a2dd95SBruce Richardson 40499a2dd95SBruce Richardson /** 40599a2dd95SBruce Richardson * Unlink multiple source event queues from destination event port. 40699a2dd95SBruce Richardson * 40799a2dd95SBruce Richardson * @param dev 40899a2dd95SBruce Richardson * Event device pointer 40999a2dd95SBruce Richardson * @param port 41099a2dd95SBruce Richardson * Event port pointer 41199a2dd95SBruce Richardson * @param queues 41299a2dd95SBruce Richardson * An array of *nb_unlinks* event queues to be unlinked from the event port. 41399a2dd95SBruce Richardson * @param nb_unlinks 41499a2dd95SBruce Richardson * The number of unlinks to establish 41599a2dd95SBruce Richardson * 41699a2dd95SBruce Richardson * @return 41799a2dd95SBruce Richardson * Returns 0 on success. 41899a2dd95SBruce Richardson * 41999a2dd95SBruce Richardson */ 42099a2dd95SBruce Richardson typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port, 42199a2dd95SBruce Richardson uint8_t queues[], uint16_t nb_unlinks); 42299a2dd95SBruce Richardson 42399a2dd95SBruce Richardson /** 42499a2dd95SBruce Richardson * Unlinks in progress. Returns number of unlinks that the PMD is currently 42599a2dd95SBruce Richardson * performing, but have not yet been completed. 42699a2dd95SBruce Richardson * 42799a2dd95SBruce Richardson * @param dev 42899a2dd95SBruce Richardson * Event device pointer 42999a2dd95SBruce Richardson * 43099a2dd95SBruce Richardson * @param port 43199a2dd95SBruce Richardson * Event port pointer 43299a2dd95SBruce Richardson * 43399a2dd95SBruce Richardson * @return 43499a2dd95SBruce Richardson * Returns the number of in-progress unlinks. Zero is returned if none are 43599a2dd95SBruce Richardson * in progress. 43699a2dd95SBruce Richardson */ 43799a2dd95SBruce Richardson typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev, 43899a2dd95SBruce Richardson void *port); 43999a2dd95SBruce Richardson 44099a2dd95SBruce Richardson /** 44199a2dd95SBruce Richardson * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue() 44299a2dd95SBruce Richardson * 44399a2dd95SBruce Richardson * @param dev 44499a2dd95SBruce Richardson * Event device pointer 44599a2dd95SBruce Richardson * @param ns 44699a2dd95SBruce Richardson * Wait time in nanosecond 44799a2dd95SBruce Richardson * @param[out] timeout_ticks 44899a2dd95SBruce Richardson * Value for the *timeout_ticks* parameter in rte_event_dequeue() function 44999a2dd95SBruce Richardson * 45099a2dd95SBruce Richardson * @return 45199a2dd95SBruce Richardson * Returns 0 on success. 45299a2dd95SBruce Richardson * 45399a2dd95SBruce Richardson */ 45499a2dd95SBruce Richardson typedef int (*eventdev_dequeue_timeout_ticks_t)(struct rte_eventdev *dev, 45599a2dd95SBruce Richardson uint64_t ns, uint64_t *timeout_ticks); 45699a2dd95SBruce Richardson 45799a2dd95SBruce Richardson /** 45899a2dd95SBruce Richardson * Dump internal information 45999a2dd95SBruce Richardson * 46099a2dd95SBruce Richardson * @param dev 46199a2dd95SBruce Richardson * Event device pointer 46299a2dd95SBruce Richardson * @param f 46399a2dd95SBruce Richardson * A pointer to a file for output 46499a2dd95SBruce Richardson * 46599a2dd95SBruce Richardson */ 46699a2dd95SBruce Richardson typedef void (*eventdev_dump_t)(struct rte_eventdev *dev, FILE *f); 46799a2dd95SBruce Richardson 46899a2dd95SBruce Richardson /** 46999a2dd95SBruce Richardson * Retrieve a set of statistics from device 47099a2dd95SBruce Richardson * 47199a2dd95SBruce Richardson * @param dev 47299a2dd95SBruce Richardson * Event device pointer 47399a2dd95SBruce Richardson * @param mode 47499a2dd95SBruce Richardson * Level (device, port or queue) 47599a2dd95SBruce Richardson * @param queue_port_id 47699a2dd95SBruce Richardson * Queue or port number depending on mode 47799a2dd95SBruce Richardson * @param ids 47899a2dd95SBruce Richardson * The stat ids to retrieve 47999a2dd95SBruce Richardson * @param values 48099a2dd95SBruce Richardson * The returned stat values 48199a2dd95SBruce Richardson * @param n 48299a2dd95SBruce Richardson * The number of id values and entries in the values array 48399a2dd95SBruce Richardson * @return 48499a2dd95SBruce Richardson * The number of stat values successfully filled into the values array 48599a2dd95SBruce Richardson */ 48699a2dd95SBruce Richardson typedef int (*eventdev_xstats_get_t)(const struct rte_eventdev *dev, 48799a2dd95SBruce Richardson enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id, 48899a2dd95SBruce Richardson const unsigned int ids[], uint64_t values[], unsigned int n); 48999a2dd95SBruce Richardson 49099a2dd95SBruce Richardson /** 49199a2dd95SBruce Richardson * Resets the statistic values in xstats for the device, based on mode. 49299a2dd95SBruce Richardson */ 49399a2dd95SBruce Richardson typedef int (*eventdev_xstats_reset_t)(struct rte_eventdev *dev, 49499a2dd95SBruce Richardson enum rte_event_dev_xstats_mode mode, 49599a2dd95SBruce Richardson int16_t queue_port_id, 49699a2dd95SBruce Richardson const uint32_t ids[], 49799a2dd95SBruce Richardson uint32_t nb_ids); 49899a2dd95SBruce Richardson 49999a2dd95SBruce Richardson /** 50099a2dd95SBruce Richardson * Get names of extended stats of an event device 50199a2dd95SBruce Richardson * 50299a2dd95SBruce Richardson * @param dev 50399a2dd95SBruce Richardson * Event device pointer 50499a2dd95SBruce Richardson * @param mode 50599a2dd95SBruce Richardson * Level (device, port or queue) 50699a2dd95SBruce Richardson * @param queue_port_id 50799a2dd95SBruce Richardson * Queue or port number depending on mode 50899a2dd95SBruce Richardson * @param xstats_names 50999a2dd95SBruce Richardson * Array of name values to be filled in 51099a2dd95SBruce Richardson * @param ids 51199a2dd95SBruce Richardson * The stat ids to retrieve 51299a2dd95SBruce Richardson * @param size 51399a2dd95SBruce Richardson * Number of values in the xstats_names array 51499a2dd95SBruce Richardson * @return 51599a2dd95SBruce Richardson * When size >= the number of stats, return the number of stat values filled 51699a2dd95SBruce Richardson * into the array. 51799a2dd95SBruce Richardson * When size < the number of available stats, return the number of stats 51899a2dd95SBruce Richardson * values, and do not fill in any data into xstats_names. 51999a2dd95SBruce Richardson */ 52099a2dd95SBruce Richardson typedef int (*eventdev_xstats_get_names_t)(const struct rte_eventdev *dev, 52199a2dd95SBruce Richardson enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id, 52299a2dd95SBruce Richardson struct rte_event_dev_xstats_name *xstats_names, 52399a2dd95SBruce Richardson unsigned int *ids, unsigned int size); 52499a2dd95SBruce Richardson 52599a2dd95SBruce Richardson /** 52699a2dd95SBruce Richardson * Get value of one stats and optionally return its id 52799a2dd95SBruce Richardson * 52899a2dd95SBruce Richardson * @param dev 52999a2dd95SBruce Richardson * Event device pointer 53099a2dd95SBruce Richardson * @param name 53199a2dd95SBruce Richardson * The name of the stat to retrieve 53299a2dd95SBruce Richardson * @param id 53399a2dd95SBruce Richardson * Pointer to an unsigned int where we store the stat-id for future reference. 53499a2dd95SBruce Richardson * This pointer may be null if the id is not required. 53599a2dd95SBruce Richardson * @return 53699a2dd95SBruce Richardson * The value of the stat, or (uint64_t)-1 if the stat is not found. 53799a2dd95SBruce Richardson * If the stat is not found, the id value will be returned as (unsigned)-1, 53899a2dd95SBruce Richardson * if id pointer is non-NULL 53999a2dd95SBruce Richardson */ 54099a2dd95SBruce Richardson typedef uint64_t (*eventdev_xstats_get_by_name)(const struct rte_eventdev *dev, 54199a2dd95SBruce Richardson const char *name, unsigned int *id); 54299a2dd95SBruce Richardson 54399a2dd95SBruce Richardson 54499a2dd95SBruce Richardson /** 54599a2dd95SBruce Richardson * Retrieve the event device's ethdev Rx adapter capabilities for the 54699a2dd95SBruce Richardson * specified ethernet port 54799a2dd95SBruce Richardson * 54899a2dd95SBruce Richardson * @param dev 54999a2dd95SBruce Richardson * Event device pointer 55099a2dd95SBruce Richardson * 55199a2dd95SBruce Richardson * @param eth_dev 55299a2dd95SBruce Richardson * Ethernet device pointer 55399a2dd95SBruce Richardson * 55499a2dd95SBruce Richardson * @param[out] caps 55599a2dd95SBruce Richardson * A pointer to memory filled with Rx event adapter capabilities. 55699a2dd95SBruce Richardson * 55799a2dd95SBruce Richardson * @return 55899a2dd95SBruce Richardson * - 0: Success, driver provides Rx event adapter capabilities for the 55999a2dd95SBruce Richardson * ethernet device. 56099a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 56199a2dd95SBruce Richardson * 56299a2dd95SBruce Richardson */ 56399a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_caps_get_t) 56499a2dd95SBruce Richardson (const struct rte_eventdev *dev, 56599a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev, 56699a2dd95SBruce Richardson uint32_t *caps); 56799a2dd95SBruce Richardson 56899a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_queue_conf; 56999a2dd95SBruce Richardson 57099a2dd95SBruce Richardson /** 57199a2dd95SBruce Richardson * Retrieve the event device's timer adapter capabilities, as well as the ops 57299a2dd95SBruce Richardson * structure that an event timer adapter should call through to enter the 57399a2dd95SBruce Richardson * driver 57499a2dd95SBruce Richardson * 57599a2dd95SBruce Richardson * @param dev 57699a2dd95SBruce Richardson * Event device pointer 57799a2dd95SBruce Richardson * 57899a2dd95SBruce Richardson * @param flags 57999a2dd95SBruce Richardson * Flags that can be used to determine how to select an event timer 58099a2dd95SBruce Richardson * adapter ops structure 58199a2dd95SBruce Richardson * 58299a2dd95SBruce Richardson * @param[out] caps 58399a2dd95SBruce Richardson * A pointer to memory filled with Rx event adapter capabilities. 58499a2dd95SBruce Richardson * 58599a2dd95SBruce Richardson * @param[out] ops 58699a2dd95SBruce Richardson * A pointer to the ops pointer to set with the address of the desired ops 58799a2dd95SBruce Richardson * structure 58899a2dd95SBruce Richardson * 58999a2dd95SBruce Richardson * @return 59099a2dd95SBruce Richardson * - 0: Success, driver provides Rx event adapter capabilities for the 59199a2dd95SBruce Richardson * ethernet device. 59299a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 59399a2dd95SBruce Richardson * 59499a2dd95SBruce Richardson */ 59599a2dd95SBruce Richardson typedef int (*eventdev_timer_adapter_caps_get_t)( 59653548ad3SPavan Nikhilesh const struct rte_eventdev *dev, uint64_t flags, uint32_t *caps, 59753548ad3SPavan Nikhilesh const struct event_timer_adapter_ops **ops); 59899a2dd95SBruce Richardson 59999a2dd95SBruce Richardson /** 60099a2dd95SBruce Richardson * Add ethernet Rx queues to event device. This callback is invoked if 60199a2dd95SBruce Richardson * the caps returned from rte_eventdev_eth_rx_adapter_caps_get(, eth_port_id) 60299a2dd95SBruce Richardson * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set. 60399a2dd95SBruce Richardson * 60499a2dd95SBruce Richardson * @param dev 60599a2dd95SBruce Richardson * Event device pointer 60699a2dd95SBruce Richardson * 60799a2dd95SBruce Richardson * @param eth_dev 60899a2dd95SBruce Richardson * Ethernet device pointer 60999a2dd95SBruce Richardson * 61099a2dd95SBruce Richardson * @param rx_queue_id 61199a2dd95SBruce Richardson * Ethernet device receive queue index 61299a2dd95SBruce Richardson * 61399a2dd95SBruce Richardson * @param queue_conf 61499a2dd95SBruce Richardson * Additional configuration structure 61599a2dd95SBruce Richardson 61699a2dd95SBruce Richardson * @return 61799a2dd95SBruce Richardson * - 0: Success, ethernet receive queue added successfully. 61899a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 61999a2dd95SBruce Richardson * 62099a2dd95SBruce Richardson */ 62199a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_queue_add_t)( 62299a2dd95SBruce Richardson const struct rte_eventdev *dev, 62399a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev, 62499a2dd95SBruce Richardson int32_t rx_queue_id, 62599a2dd95SBruce Richardson const struct rte_event_eth_rx_adapter_queue_conf *queue_conf); 62699a2dd95SBruce Richardson 62799a2dd95SBruce Richardson /** 62899a2dd95SBruce Richardson * Delete ethernet Rx queues from event device. This callback is invoked if 62999a2dd95SBruce Richardson * the caps returned from eventdev_eth_rx_adapter_caps_get(, eth_port_id) 63099a2dd95SBruce Richardson * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set. 63199a2dd95SBruce Richardson * 63299a2dd95SBruce Richardson * @param dev 63399a2dd95SBruce Richardson * Event device pointer 63499a2dd95SBruce Richardson * 63599a2dd95SBruce Richardson * @param eth_dev 63699a2dd95SBruce Richardson * Ethernet device pointer 63799a2dd95SBruce Richardson * 63899a2dd95SBruce Richardson * @param rx_queue_id 63999a2dd95SBruce Richardson * Ethernet device receive queue index 64099a2dd95SBruce Richardson * 64199a2dd95SBruce Richardson * @return 64299a2dd95SBruce Richardson * - 0: Success, ethernet receive queue deleted successfully. 64399a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 64499a2dd95SBruce Richardson * 64599a2dd95SBruce Richardson */ 64699a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_queue_del_t) 64799a2dd95SBruce Richardson (const struct rte_eventdev *dev, 64899a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev, 64999a2dd95SBruce Richardson int32_t rx_queue_id); 65099a2dd95SBruce Richardson 65199a2dd95SBruce Richardson /** 652da781e64SGanapati Kundapura * Retrieve Rx adapter queue config information for the specified 653da781e64SGanapati Kundapura * rx queue ID. 654da781e64SGanapati Kundapura * 655da781e64SGanapati Kundapura * @param dev 656da781e64SGanapati Kundapura * Event device pointer 657da781e64SGanapati Kundapura * 658da781e64SGanapati Kundapura * @param eth_dev 659da781e64SGanapati Kundapura * Ethernet device pointer 660da781e64SGanapati Kundapura * 661da781e64SGanapati Kundapura * @param rx_queue_id 662da781e64SGanapati Kundapura * Ethernet device receive queue index. 663da781e64SGanapati Kundapura * 664da781e64SGanapati Kundapura * @param[out] queue_conf 665da781e64SGanapati Kundapura * Pointer to rte_event_eth_rx_adapter_queue_conf structure 666da781e64SGanapati Kundapura * 667da781e64SGanapati Kundapura * @return 668da781e64SGanapati Kundapura * - 0: Success 669da781e64SGanapati Kundapura * - <0: Error code on failure. 670da781e64SGanapati Kundapura */ 671da781e64SGanapati Kundapura typedef int (*eventdev_eth_rx_adapter_queue_conf_get_t) 672da781e64SGanapati Kundapura (const struct rte_eventdev *dev, 673da781e64SGanapati Kundapura const struct rte_eth_dev *eth_dev, 674da781e64SGanapati Kundapura uint16_t rx_queue_id, 675da781e64SGanapati Kundapura struct rte_event_eth_rx_adapter_queue_conf *queue_conf); 676da781e64SGanapati Kundapura 677da781e64SGanapati Kundapura /** 67899a2dd95SBruce Richardson * Start ethernet Rx adapter. This callback is invoked if 67999a2dd95SBruce Richardson * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_id) 68099a2dd95SBruce Richardson * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues 68199a2dd95SBruce Richardson * from eth_port_id have been added to the event device. 68299a2dd95SBruce Richardson * 68399a2dd95SBruce Richardson * @param dev 68499a2dd95SBruce Richardson * Event device pointer 68599a2dd95SBruce Richardson * 68699a2dd95SBruce Richardson * @param eth_dev 68799a2dd95SBruce Richardson * Ethernet device pointer 68899a2dd95SBruce Richardson * 68999a2dd95SBruce Richardson * @return 69099a2dd95SBruce Richardson * - 0: Success, ethernet Rx adapter started successfully. 69199a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 69299a2dd95SBruce Richardson */ 69399a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_start_t) 69499a2dd95SBruce Richardson (const struct rte_eventdev *dev, 69599a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev); 69699a2dd95SBruce Richardson 69799a2dd95SBruce Richardson /** 69899a2dd95SBruce Richardson * Stop ethernet Rx adapter. This callback is invoked if 69999a2dd95SBruce Richardson * the caps returned from eventdev_eth_rx_adapter_caps_get(..,eth_port_id) 70099a2dd95SBruce Richardson * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues 70199a2dd95SBruce Richardson * from eth_port_id have been added to the event device. 70299a2dd95SBruce Richardson * 70399a2dd95SBruce Richardson * @param dev 70499a2dd95SBruce Richardson * Event device pointer 70599a2dd95SBruce Richardson * 70699a2dd95SBruce Richardson * @param eth_dev 70799a2dd95SBruce Richardson * Ethernet device pointer 70899a2dd95SBruce Richardson * 70999a2dd95SBruce Richardson * @return 71099a2dd95SBruce Richardson * - 0: Success, ethernet Rx adapter stopped successfully. 71199a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 71299a2dd95SBruce Richardson */ 71399a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stop_t) 71499a2dd95SBruce Richardson (const struct rte_eventdev *dev, 71599a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev); 71699a2dd95SBruce Richardson 71799a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_stats; 71899a2dd95SBruce Richardson 71999a2dd95SBruce Richardson /** 72099a2dd95SBruce Richardson * Retrieve ethernet Rx adapter statistics. 72199a2dd95SBruce Richardson * 72299a2dd95SBruce Richardson * @param dev 72399a2dd95SBruce Richardson * Event device pointer 72499a2dd95SBruce Richardson * 72599a2dd95SBruce Richardson * @param eth_dev 72699a2dd95SBruce Richardson * Ethernet device pointer 72799a2dd95SBruce Richardson * 72899a2dd95SBruce Richardson * @param[out] stats 72999a2dd95SBruce Richardson * Pointer to stats structure 73099a2dd95SBruce Richardson * 73199a2dd95SBruce Richardson * @return 73299a2dd95SBruce Richardson * Return 0 on success. 73399a2dd95SBruce Richardson */ 73499a2dd95SBruce Richardson 73599a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stats_get) 73699a2dd95SBruce Richardson (const struct rte_eventdev *dev, 73799a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev, 73899a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_stats *stats); 73999a2dd95SBruce Richardson /** 74099a2dd95SBruce Richardson * Reset ethernet Rx adapter statistics. 74199a2dd95SBruce Richardson * 74299a2dd95SBruce Richardson * @param dev 74399a2dd95SBruce Richardson * Event device pointer 74499a2dd95SBruce Richardson * 74599a2dd95SBruce Richardson * @param eth_dev 74699a2dd95SBruce Richardson * Ethernet device pointer 74799a2dd95SBruce Richardson * 74899a2dd95SBruce Richardson * @return 74999a2dd95SBruce Richardson * Return 0 on success. 75099a2dd95SBruce Richardson */ 75199a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_stats_reset) 75299a2dd95SBruce Richardson (const struct rte_eventdev *dev, 75399a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev); 754995b150cSNaga Harish K S V 755995b150cSNaga Harish K S V struct rte_event_eth_rx_adapter_queue_stats; 756995b150cSNaga Harish K S V 757995b150cSNaga Harish K S V /** 758995b150cSNaga Harish K S V * Retrieve ethernet Rx adapter queue statistics. 759995b150cSNaga Harish K S V * 760995b150cSNaga Harish K S V * @param dev 761995b150cSNaga Harish K S V * Event device pointer 762995b150cSNaga Harish K S V * 763995b150cSNaga Harish K S V * @param eth_dev 764995b150cSNaga Harish K S V * Ethernet device pointer 765995b150cSNaga Harish K S V * 766995b150cSNaga Harish K S V * @param rx_queue_id 767995b150cSNaga Harish K S V * Ethernet device receive queue index. 768995b150cSNaga Harish K S V * 769995b150cSNaga Harish K S V * @param[out] q_stats 770995b150cSNaga Harish K S V * Pointer to queue stats structure 771995b150cSNaga Harish K S V * 772995b150cSNaga Harish K S V * @return 773995b150cSNaga Harish K S V * Return 0 on success. 774995b150cSNaga Harish K S V */ 775995b150cSNaga Harish K S V typedef int (*eventdev_eth_rx_adapter_q_stats_get) 776995b150cSNaga Harish K S V (const struct rte_eventdev *dev, 777995b150cSNaga Harish K S V const struct rte_eth_dev *eth_dev, 778995b150cSNaga Harish K S V uint16_t rx_queue_id, 779995b150cSNaga Harish K S V struct rte_event_eth_rx_adapter_queue_stats *q_stats); 780995b150cSNaga Harish K S V 781995b150cSNaga Harish K S V /** 782995b150cSNaga Harish K S V * Reset ethernet Rx adapter queue statistics. 783995b150cSNaga Harish K S V * 784995b150cSNaga Harish K S V * @param dev 785995b150cSNaga Harish K S V * Event device pointer 786995b150cSNaga Harish K S V * 787995b150cSNaga Harish K S V * @param eth_dev 788995b150cSNaga Harish K S V * Ethernet device pointer 789995b150cSNaga Harish K S V * 790995b150cSNaga Harish K S V * @param rx_queue_id 791995b150cSNaga Harish K S V * Ethernet device receive queue index. 792995b150cSNaga Harish K S V * 793995b150cSNaga Harish K S V * @return 794995b150cSNaga Harish K S V * Return 0 on success. 795995b150cSNaga Harish K S V */ 796995b150cSNaga Harish K S V typedef int (*eventdev_eth_rx_adapter_q_stats_reset) 797995b150cSNaga Harish K S V (const struct rte_eventdev *dev, 798995b150cSNaga Harish K S V const struct rte_eth_dev *eth_dev, 799995b150cSNaga Harish K S V uint16_t rx_queue_id); 800995b150cSNaga Harish K S V 80199a2dd95SBruce Richardson /** 80299a2dd95SBruce Richardson * Start eventdev selftest. 80399a2dd95SBruce Richardson * 80499a2dd95SBruce Richardson * @return 80599a2dd95SBruce Richardson * Return 0 on success. 80699a2dd95SBruce Richardson */ 80799a2dd95SBruce Richardson typedef int (*eventdev_selftest)(void); 80899a2dd95SBruce Richardson 80999a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_vector_limits; 81099a2dd95SBruce Richardson /** 81199a2dd95SBruce Richardson * Get event vector limits for a given event, ethernet device pair. 81299a2dd95SBruce Richardson * 81399a2dd95SBruce Richardson * @param dev 81499a2dd95SBruce Richardson * Event device pointer 81599a2dd95SBruce Richardson * 81699a2dd95SBruce Richardson * @param eth_dev 81799a2dd95SBruce Richardson * Ethernet device pointer 81899a2dd95SBruce Richardson * 81999a2dd95SBruce Richardson * @param[out] limits 82099a2dd95SBruce Richardson * Pointer to the limits structure to be filled. 82199a2dd95SBruce Richardson * 82299a2dd95SBruce Richardson * @return 82399a2dd95SBruce Richardson * - 0: Success. 82499a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 82599a2dd95SBruce Richardson */ 82699a2dd95SBruce Richardson typedef int (*eventdev_eth_rx_adapter_vector_limits_get_t)( 82799a2dd95SBruce Richardson const struct rte_eventdev *dev, const struct rte_eth_dev *eth_dev, 82899a2dd95SBruce Richardson struct rte_event_eth_rx_adapter_vector_limits *limits); 82999a2dd95SBruce Richardson 83099a2dd95SBruce Richardson typedef uint32_t rte_event_pmd_selftest_seqn_t; 83199a2dd95SBruce Richardson extern int rte_event_pmd_selftest_seqn_dynfield_offset; 83299a2dd95SBruce Richardson 83399a2dd95SBruce Richardson /** 83499a2dd95SBruce Richardson * Read test sequence number from mbuf. 83599a2dd95SBruce Richardson * 83699a2dd95SBruce Richardson * @param mbuf Structure to read from. 83799a2dd95SBruce Richardson * @return pointer to test sequence number. 83899a2dd95SBruce Richardson */ 83999a2dd95SBruce Richardson __rte_internal 84099a2dd95SBruce Richardson static inline rte_event_pmd_selftest_seqn_t * 84199a2dd95SBruce Richardson rte_event_pmd_selftest_seqn(struct rte_mbuf *mbuf) 84299a2dd95SBruce Richardson { 84399a2dd95SBruce Richardson return RTE_MBUF_DYNFIELD(mbuf, 84499a2dd95SBruce Richardson rte_event_pmd_selftest_seqn_dynfield_offset, 84599a2dd95SBruce Richardson rte_event_pmd_selftest_seqn_t *); 84699a2dd95SBruce Richardson } 84799a2dd95SBruce Richardson 84899a2dd95SBruce Richardson struct rte_cryptodev; 84999a2dd95SBruce Richardson 85099a2dd95SBruce Richardson /** 85199a2dd95SBruce Richardson * This API may change without prior notice 85299a2dd95SBruce Richardson * 85399a2dd95SBruce Richardson * Retrieve the event device's crypto adapter capabilities for the 85499a2dd95SBruce Richardson * specified cryptodev 85599a2dd95SBruce Richardson * 85699a2dd95SBruce Richardson * @param dev 85799a2dd95SBruce Richardson * Event device pointer 85899a2dd95SBruce Richardson * 85999a2dd95SBruce Richardson * @param cdev 86099a2dd95SBruce Richardson * cryptodev pointer 86199a2dd95SBruce Richardson * 86299a2dd95SBruce Richardson * @param[out] caps 86399a2dd95SBruce Richardson * A pointer to memory filled with event adapter capabilities. 86499a2dd95SBruce Richardson * It is expected to be pre-allocated & initialized by caller. 86599a2dd95SBruce Richardson * 86699a2dd95SBruce Richardson * @return 86799a2dd95SBruce Richardson * - 0: Success, driver provides event adapter capabilities for the 86899a2dd95SBruce Richardson * cryptodev. 86999a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 87099a2dd95SBruce Richardson * 87199a2dd95SBruce Richardson */ 87299a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_caps_get_t) 87399a2dd95SBruce Richardson (const struct rte_eventdev *dev, 87499a2dd95SBruce Richardson const struct rte_cryptodev *cdev, 87599a2dd95SBruce Richardson uint32_t *caps); 87699a2dd95SBruce Richardson 87799a2dd95SBruce Richardson /** 87899a2dd95SBruce Richardson * This API may change without prior notice 87999a2dd95SBruce Richardson * 88099a2dd95SBruce Richardson * Add crypto queue pair to event device. This callback is invoked if 88199a2dd95SBruce Richardson * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id) 88299a2dd95SBruce Richardson * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set. 88399a2dd95SBruce Richardson * 88499a2dd95SBruce Richardson * @param dev 88599a2dd95SBruce Richardson * Event device pointer 88699a2dd95SBruce Richardson * 88799a2dd95SBruce Richardson * @param cdev 88899a2dd95SBruce Richardson * cryptodev pointer 88999a2dd95SBruce Richardson * 89099a2dd95SBruce Richardson * @param queue_pair_id 89199a2dd95SBruce Richardson * cryptodev queue pair identifier. 89299a2dd95SBruce Richardson * 89399a2dd95SBruce Richardson * @param event 89499a2dd95SBruce Richardson * Event information required for binding cryptodev queue pair to event queue. 89599a2dd95SBruce Richardson * This structure will have a valid value for only those HW PMDs supporting 89699a2dd95SBruce Richardson * @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability. 89799a2dd95SBruce Richardson * 89899a2dd95SBruce Richardson * @return 89999a2dd95SBruce Richardson * - 0: Success, cryptodev queue pair added successfully. 90099a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 90199a2dd95SBruce Richardson * 90299a2dd95SBruce Richardson */ 90399a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_queue_pair_add_t) 90499a2dd95SBruce Richardson (const struct rte_eventdev *dev, 90599a2dd95SBruce Richardson const struct rte_cryptodev *cdev, 90699a2dd95SBruce Richardson int32_t queue_pair_id, 90799a2dd95SBruce Richardson const struct rte_event *event); 90899a2dd95SBruce Richardson 90999a2dd95SBruce Richardson 91099a2dd95SBruce Richardson /** 91199a2dd95SBruce Richardson * This API may change without prior notice 91299a2dd95SBruce Richardson * 91399a2dd95SBruce Richardson * Delete crypto queue pair to event device. This callback is invoked if 91499a2dd95SBruce Richardson * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id) 91599a2dd95SBruce Richardson * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set. 91699a2dd95SBruce Richardson * 91799a2dd95SBruce Richardson * @param dev 91899a2dd95SBruce Richardson * Event device pointer 91999a2dd95SBruce Richardson * 92099a2dd95SBruce Richardson * @param cdev 92199a2dd95SBruce Richardson * cryptodev pointer 92299a2dd95SBruce Richardson * 92399a2dd95SBruce Richardson * @param queue_pair_id 92499a2dd95SBruce Richardson * cryptodev queue pair identifier. 92599a2dd95SBruce Richardson * 92699a2dd95SBruce Richardson * @return 92799a2dd95SBruce Richardson * - 0: Success, cryptodev queue pair deleted successfully. 92899a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 92999a2dd95SBruce Richardson * 93099a2dd95SBruce Richardson */ 93199a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_queue_pair_del_t) 93299a2dd95SBruce Richardson (const struct rte_eventdev *dev, 93399a2dd95SBruce Richardson const struct rte_cryptodev *cdev, 93499a2dd95SBruce Richardson int32_t queue_pair_id); 93599a2dd95SBruce Richardson 93699a2dd95SBruce Richardson /** 93799a2dd95SBruce Richardson * Start crypto adapter. This callback is invoked if 93899a2dd95SBruce Richardson * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id) 93999a2dd95SBruce Richardson * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs 94099a2dd95SBruce Richardson * from cdev_id have been added to the event device. 94199a2dd95SBruce Richardson * 94299a2dd95SBruce Richardson * @param dev 94399a2dd95SBruce Richardson * Event device pointer 94499a2dd95SBruce Richardson * 94599a2dd95SBruce Richardson * @param cdev 94699a2dd95SBruce Richardson * Crypto device pointer 94799a2dd95SBruce Richardson * 94899a2dd95SBruce Richardson * @return 94999a2dd95SBruce Richardson * - 0: Success, crypto adapter started successfully. 95099a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 95199a2dd95SBruce Richardson */ 95299a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_start_t) 95399a2dd95SBruce Richardson (const struct rte_eventdev *dev, 95499a2dd95SBruce Richardson const struct rte_cryptodev *cdev); 95599a2dd95SBruce Richardson 95699a2dd95SBruce Richardson /** 95799a2dd95SBruce Richardson * Stop crypto adapter. This callback is invoked if 95899a2dd95SBruce Richardson * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id) 95999a2dd95SBruce Richardson * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs 96099a2dd95SBruce Richardson * from cdev_id have been added to the event device. 96199a2dd95SBruce Richardson * 96299a2dd95SBruce Richardson * @param dev 96399a2dd95SBruce Richardson * Event device pointer 96499a2dd95SBruce Richardson * 96599a2dd95SBruce Richardson * @param cdev 96699a2dd95SBruce Richardson * Crypto device pointer 96799a2dd95SBruce Richardson * 96899a2dd95SBruce Richardson * @return 96999a2dd95SBruce Richardson * - 0: Success, crypto adapter stopped successfully. 97099a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 97199a2dd95SBruce Richardson */ 97299a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stop_t) 97399a2dd95SBruce Richardson (const struct rte_eventdev *dev, 97499a2dd95SBruce Richardson const struct rte_cryptodev *cdev); 97599a2dd95SBruce Richardson 97699a2dd95SBruce Richardson struct rte_event_crypto_adapter_stats; 97799a2dd95SBruce Richardson 97899a2dd95SBruce Richardson /** 97999a2dd95SBruce Richardson * Retrieve crypto adapter statistics. 98099a2dd95SBruce Richardson * 98199a2dd95SBruce Richardson * @param dev 98299a2dd95SBruce Richardson * Event device pointer 98399a2dd95SBruce Richardson * 98499a2dd95SBruce Richardson * @param cdev 98599a2dd95SBruce Richardson * Crypto device pointer 98699a2dd95SBruce Richardson * 98799a2dd95SBruce Richardson * @param[out] stats 98899a2dd95SBruce Richardson * Pointer to stats structure 98999a2dd95SBruce Richardson * 99099a2dd95SBruce Richardson * @return 99199a2dd95SBruce Richardson * Return 0 on success. 99299a2dd95SBruce Richardson */ 99399a2dd95SBruce Richardson 99499a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stats_get) 99599a2dd95SBruce Richardson (const struct rte_eventdev *dev, 99699a2dd95SBruce Richardson const struct rte_cryptodev *cdev, 99799a2dd95SBruce Richardson struct rte_event_crypto_adapter_stats *stats); 99899a2dd95SBruce Richardson 99999a2dd95SBruce Richardson /** 100099a2dd95SBruce Richardson * Reset crypto adapter statistics. 100199a2dd95SBruce Richardson * 100299a2dd95SBruce Richardson * @param dev 100399a2dd95SBruce Richardson * Event device pointer 100499a2dd95SBruce Richardson * 100599a2dd95SBruce Richardson * @param cdev 100699a2dd95SBruce Richardson * Crypto device pointer 100799a2dd95SBruce Richardson * 100899a2dd95SBruce Richardson * @return 100999a2dd95SBruce Richardson * Return 0 on success. 101099a2dd95SBruce Richardson */ 101199a2dd95SBruce Richardson 101299a2dd95SBruce Richardson typedef int (*eventdev_crypto_adapter_stats_reset) 101399a2dd95SBruce Richardson (const struct rte_eventdev *dev, 101499a2dd95SBruce Richardson const struct rte_cryptodev *cdev); 101599a2dd95SBruce Richardson 101699a2dd95SBruce Richardson /** 101799a2dd95SBruce Richardson * Retrieve the event device's eth Tx adapter capabilities. 101899a2dd95SBruce Richardson * 101999a2dd95SBruce Richardson * @param dev 102099a2dd95SBruce Richardson * Event device pointer 102199a2dd95SBruce Richardson * 102299a2dd95SBruce Richardson * @param eth_dev 102399a2dd95SBruce Richardson * Ethernet device pointer 102499a2dd95SBruce Richardson * 102599a2dd95SBruce Richardson * @param[out] caps 102699a2dd95SBruce Richardson * A pointer to memory filled with eth Tx adapter capabilities. 102799a2dd95SBruce Richardson * 102899a2dd95SBruce Richardson * @return 102999a2dd95SBruce Richardson * - 0: Success, driver provides eth Tx adapter capabilities 103099a2dd95SBruce Richardson * - <0: Error code returned by the driver function. 103199a2dd95SBruce Richardson * 103299a2dd95SBruce Richardson */ 103399a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_caps_get_t) 103499a2dd95SBruce Richardson (const struct rte_eventdev *dev, 103599a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev, 103699a2dd95SBruce Richardson uint32_t *caps); 103799a2dd95SBruce Richardson 103899a2dd95SBruce Richardson /** 103999a2dd95SBruce Richardson * Create adapter callback. 104099a2dd95SBruce Richardson * 104199a2dd95SBruce Richardson * @param id 104299a2dd95SBruce Richardson * Adapter identifier 104399a2dd95SBruce Richardson * 104499a2dd95SBruce Richardson * @param dev 104599a2dd95SBruce Richardson * Event device pointer 104699a2dd95SBruce Richardson * 104799a2dd95SBruce Richardson * @return 104899a2dd95SBruce Richardson * - 0: Success. 104999a2dd95SBruce Richardson * - <0: Error code on failure. 105099a2dd95SBruce Richardson */ 105199a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_create_t)(uint8_t id, 105299a2dd95SBruce Richardson const struct rte_eventdev *dev); 105399a2dd95SBruce Richardson 105499a2dd95SBruce Richardson /** 105599a2dd95SBruce Richardson * Free adapter callback. 105699a2dd95SBruce Richardson * 105799a2dd95SBruce Richardson * @param id 105899a2dd95SBruce Richardson * Adapter identifier 105999a2dd95SBruce Richardson * 106099a2dd95SBruce Richardson * @param dev 106199a2dd95SBruce Richardson * Event device pointer 106299a2dd95SBruce Richardson * 106399a2dd95SBruce Richardson * @return 106499a2dd95SBruce Richardson * - 0: Success. 106599a2dd95SBruce Richardson * - <0: Error code on failure. 106699a2dd95SBruce Richardson */ 106799a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_free_t)(uint8_t id, 106899a2dd95SBruce Richardson const struct rte_eventdev *dev); 106999a2dd95SBruce Richardson 107099a2dd95SBruce Richardson /** 107199a2dd95SBruce Richardson * Add a Tx queue to the adapter. 107299a2dd95SBruce Richardson * A queue value of -1 is used to indicate all 107399a2dd95SBruce Richardson * queues within the device. 107499a2dd95SBruce Richardson * 107599a2dd95SBruce Richardson * @param id 107699a2dd95SBruce Richardson * Adapter identifier 107799a2dd95SBruce Richardson * 107899a2dd95SBruce Richardson * @param dev 107999a2dd95SBruce Richardson * Event device pointer 108099a2dd95SBruce Richardson * 108199a2dd95SBruce Richardson * @param eth_dev 108299a2dd95SBruce Richardson * Ethernet device pointer 108399a2dd95SBruce Richardson * 108499a2dd95SBruce Richardson * @param tx_queue_id 108599a2dd95SBruce Richardson * Transmit queue index 108699a2dd95SBruce Richardson * 108799a2dd95SBruce Richardson * @return 108899a2dd95SBruce Richardson * - 0: Success. 108999a2dd95SBruce Richardson * - <0: Error code on failure. 109099a2dd95SBruce Richardson */ 109199a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_queue_add_t)( 109299a2dd95SBruce Richardson uint8_t id, 109399a2dd95SBruce Richardson const struct rte_eventdev *dev, 109499a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev, 109599a2dd95SBruce Richardson int32_t tx_queue_id); 109699a2dd95SBruce Richardson 109799a2dd95SBruce Richardson /** 109899a2dd95SBruce Richardson * Delete a Tx queue from the adapter. 109999a2dd95SBruce Richardson * A queue value of -1 is used to indicate all 110099a2dd95SBruce Richardson * queues within the device, that have been added to this 110199a2dd95SBruce Richardson * adapter. 110299a2dd95SBruce Richardson * 110399a2dd95SBruce Richardson * @param id 110499a2dd95SBruce Richardson * Adapter identifier 110599a2dd95SBruce Richardson * 110699a2dd95SBruce Richardson * @param dev 110799a2dd95SBruce Richardson * Event device pointer 110899a2dd95SBruce Richardson * 110999a2dd95SBruce Richardson * @param eth_dev 111099a2dd95SBruce Richardson * Ethernet device pointer 111199a2dd95SBruce Richardson * 111299a2dd95SBruce Richardson * @param tx_queue_id 111399a2dd95SBruce Richardson * Transmit queue index 111499a2dd95SBruce Richardson * 111599a2dd95SBruce Richardson * @return 111699a2dd95SBruce Richardson * - 0: Success, Queues deleted successfully. 111799a2dd95SBruce Richardson * - <0: Error code on failure. 111899a2dd95SBruce Richardson */ 111999a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_queue_del_t)( 112099a2dd95SBruce Richardson uint8_t id, 112199a2dd95SBruce Richardson const struct rte_eventdev *dev, 112299a2dd95SBruce Richardson const struct rte_eth_dev *eth_dev, 112399a2dd95SBruce Richardson int32_t tx_queue_id); 112499a2dd95SBruce Richardson 112599a2dd95SBruce Richardson /** 112699a2dd95SBruce Richardson * Start the adapter. 112799a2dd95SBruce Richardson * 112899a2dd95SBruce Richardson * @param id 112999a2dd95SBruce Richardson * Adapter identifier 113099a2dd95SBruce Richardson * 113199a2dd95SBruce Richardson * @param dev 113299a2dd95SBruce Richardson * Event device pointer 113399a2dd95SBruce Richardson * 113499a2dd95SBruce Richardson * @return 113599a2dd95SBruce Richardson * - 0: Success, Adapter started correctly. 113699a2dd95SBruce Richardson * - <0: Error code on failure. 113799a2dd95SBruce Richardson */ 113899a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_start_t)(uint8_t id, 113999a2dd95SBruce Richardson const struct rte_eventdev *dev); 114099a2dd95SBruce Richardson 114199a2dd95SBruce Richardson /** 114299a2dd95SBruce Richardson * Stop the adapter. 114399a2dd95SBruce Richardson * 114499a2dd95SBruce Richardson * @param id 114599a2dd95SBruce Richardson * Adapter identifier 114699a2dd95SBruce Richardson * 114799a2dd95SBruce Richardson * @param dev 114899a2dd95SBruce Richardson * Event device pointer 114999a2dd95SBruce Richardson * 115099a2dd95SBruce Richardson * @return 115199a2dd95SBruce Richardson * - 0: Success. 115299a2dd95SBruce Richardson * - <0: Error code on failure. 115399a2dd95SBruce Richardson */ 115499a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stop_t)(uint8_t id, 115599a2dd95SBruce Richardson const struct rte_eventdev *dev); 115699a2dd95SBruce Richardson 115799a2dd95SBruce Richardson struct rte_event_eth_tx_adapter_stats; 115899a2dd95SBruce Richardson 115999a2dd95SBruce Richardson /** 116099a2dd95SBruce Richardson * Retrieve statistics for an adapter 116199a2dd95SBruce Richardson * 116299a2dd95SBruce Richardson * @param id 116399a2dd95SBruce Richardson * Adapter identifier 116499a2dd95SBruce Richardson * 116599a2dd95SBruce Richardson * @param dev 116699a2dd95SBruce Richardson * Event device pointer 116799a2dd95SBruce Richardson * 116899a2dd95SBruce Richardson * @param [out] stats 116999a2dd95SBruce Richardson * A pointer to structure used to retrieve statistics for an adapter 117099a2dd95SBruce Richardson * 117199a2dd95SBruce Richardson * @return 117299a2dd95SBruce Richardson * - 0: Success, statistics retrieved successfully. 117399a2dd95SBruce Richardson * - <0: Error code on failure. 117499a2dd95SBruce Richardson */ 117599a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stats_get_t)( 117699a2dd95SBruce Richardson uint8_t id, 117799a2dd95SBruce Richardson const struct rte_eventdev *dev, 117899a2dd95SBruce Richardson struct rte_event_eth_tx_adapter_stats *stats); 117999a2dd95SBruce Richardson 118099a2dd95SBruce Richardson /** 118199a2dd95SBruce Richardson * Reset statistics for an adapter 118299a2dd95SBruce Richardson * 118399a2dd95SBruce Richardson * @param id 118499a2dd95SBruce Richardson * Adapter identifier 118599a2dd95SBruce Richardson * 118699a2dd95SBruce Richardson * @param dev 118799a2dd95SBruce Richardson * Event device pointer 118899a2dd95SBruce Richardson * 118999a2dd95SBruce Richardson * @return 119099a2dd95SBruce Richardson * - 0: Success, statistics retrieved successfully. 119199a2dd95SBruce Richardson * - <0: Error code on failure. 119299a2dd95SBruce Richardson */ 119399a2dd95SBruce Richardson typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id, 119499a2dd95SBruce Richardson const struct rte_eventdev *dev); 119599a2dd95SBruce Richardson 119699a2dd95SBruce Richardson /** Event device operations function pointer table */ 119723d06e37SPavan Nikhilesh struct eventdev_ops { 119899a2dd95SBruce Richardson eventdev_info_get_t dev_infos_get; /**< Get device info. */ 119999a2dd95SBruce Richardson eventdev_configure_t dev_configure; /**< Configure device. */ 120099a2dd95SBruce Richardson eventdev_start_t dev_start; /**< Start device. */ 120199a2dd95SBruce Richardson eventdev_stop_t dev_stop; /**< Stop device. */ 120299a2dd95SBruce Richardson eventdev_close_t dev_close; /**< Close device. */ 120399a2dd95SBruce Richardson 120499a2dd95SBruce Richardson eventdev_queue_default_conf_get_t queue_def_conf; 120599a2dd95SBruce Richardson /**< Get default queue configuration. */ 120699a2dd95SBruce Richardson eventdev_queue_setup_t queue_setup; 120799a2dd95SBruce Richardson /**< Set up an event queue. */ 120899a2dd95SBruce Richardson eventdev_queue_release_t queue_release; 120999a2dd95SBruce Richardson /**< Release an event queue. */ 121099a2dd95SBruce Richardson 121199a2dd95SBruce Richardson eventdev_port_default_conf_get_t port_def_conf; 121299a2dd95SBruce Richardson /**< Get default port configuration. */ 121399a2dd95SBruce Richardson eventdev_port_setup_t port_setup; 121499a2dd95SBruce Richardson /**< Set up an event port. */ 121599a2dd95SBruce Richardson eventdev_port_release_t port_release; 121699a2dd95SBruce Richardson /**< Release an event port. */ 121799a2dd95SBruce Richardson 121899a2dd95SBruce Richardson eventdev_port_link_t port_link; 121999a2dd95SBruce Richardson /**< Link event queues to an event port. */ 122099a2dd95SBruce Richardson eventdev_port_unlink_t port_unlink; 122199a2dd95SBruce Richardson /**< Unlink event queues from an event port. */ 122299a2dd95SBruce Richardson eventdev_port_unlinks_in_progress_t port_unlinks_in_progress; 122399a2dd95SBruce Richardson /**< Unlinks in progress on an event port. */ 122499a2dd95SBruce Richardson eventdev_dequeue_timeout_ticks_t timeout_ticks; 122599a2dd95SBruce Richardson /**< Converts ns to *timeout_ticks* value for rte_event_dequeue() */ 122699a2dd95SBruce Richardson eventdev_dump_t dump; 122799a2dd95SBruce Richardson /* Dump internal information */ 122899a2dd95SBruce Richardson 122999a2dd95SBruce Richardson eventdev_xstats_get_t xstats_get; 123099a2dd95SBruce Richardson /**< Get extended device statistics. */ 123199a2dd95SBruce Richardson eventdev_xstats_get_names_t xstats_get_names; 123299a2dd95SBruce Richardson /**< Get names of extended stats. */ 123399a2dd95SBruce Richardson eventdev_xstats_get_by_name xstats_get_by_name; 123499a2dd95SBruce Richardson /**< Get one value by name. */ 123599a2dd95SBruce Richardson eventdev_xstats_reset_t xstats_reset; 123699a2dd95SBruce Richardson /**< Reset the statistics values in xstats. */ 123799a2dd95SBruce Richardson 123899a2dd95SBruce Richardson eventdev_eth_rx_adapter_caps_get_t eth_rx_adapter_caps_get; 123999a2dd95SBruce Richardson /**< Get ethernet Rx adapter capabilities */ 124099a2dd95SBruce Richardson eventdev_eth_rx_adapter_queue_add_t eth_rx_adapter_queue_add; 124199a2dd95SBruce Richardson /**< Add Rx queues to ethernet Rx adapter */ 124299a2dd95SBruce Richardson eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del; 124399a2dd95SBruce Richardson /**< Delete Rx queues from ethernet Rx adapter */ 1244da781e64SGanapati Kundapura eventdev_eth_rx_adapter_queue_conf_get_t eth_rx_adapter_queue_conf_get; 1245da781e64SGanapati Kundapura /**< Get Rx adapter queue info */ 124699a2dd95SBruce Richardson eventdev_eth_rx_adapter_start_t eth_rx_adapter_start; 124799a2dd95SBruce Richardson /**< Start ethernet Rx adapter */ 124899a2dd95SBruce Richardson eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop; 124999a2dd95SBruce Richardson /**< Stop ethernet Rx adapter */ 125099a2dd95SBruce Richardson eventdev_eth_rx_adapter_stats_get eth_rx_adapter_stats_get; 125199a2dd95SBruce Richardson /**< Get ethernet Rx stats */ 125299a2dd95SBruce Richardson eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset; 125399a2dd95SBruce Richardson /**< Reset ethernet Rx stats */ 125499a2dd95SBruce Richardson eventdev_eth_rx_adapter_vector_limits_get_t 125599a2dd95SBruce Richardson eth_rx_adapter_vector_limits_get; 125699a2dd95SBruce Richardson /**< Get event vector limits for the Rx adapter */ 125799a2dd95SBruce Richardson 125899a2dd95SBruce Richardson eventdev_timer_adapter_caps_get_t timer_adapter_caps_get; 125999a2dd95SBruce Richardson /**< Get timer adapter capabilities */ 126099a2dd95SBruce Richardson 126199a2dd95SBruce Richardson eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get; 126299a2dd95SBruce Richardson /**< Get crypto adapter capabilities */ 126399a2dd95SBruce Richardson eventdev_crypto_adapter_queue_pair_add_t crypto_adapter_queue_pair_add; 126499a2dd95SBruce Richardson /**< Add queue pair to crypto adapter */ 126599a2dd95SBruce Richardson eventdev_crypto_adapter_queue_pair_del_t crypto_adapter_queue_pair_del; 126699a2dd95SBruce Richardson /**< Delete queue pair from crypto adapter */ 126799a2dd95SBruce Richardson eventdev_crypto_adapter_start_t crypto_adapter_start; 126899a2dd95SBruce Richardson /**< Start crypto adapter */ 126999a2dd95SBruce Richardson eventdev_crypto_adapter_stop_t crypto_adapter_stop; 127099a2dd95SBruce Richardson /**< Stop crypto adapter */ 127199a2dd95SBruce Richardson eventdev_crypto_adapter_stats_get crypto_adapter_stats_get; 127299a2dd95SBruce Richardson /**< Get crypto stats */ 127399a2dd95SBruce Richardson eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset; 127499a2dd95SBruce Richardson /**< Reset crypto stats */ 127599a2dd95SBruce Richardson 1276995b150cSNaga Harish K S V eventdev_eth_rx_adapter_q_stats_get eth_rx_adapter_queue_stats_get; 1277995b150cSNaga Harish K S V /**< Get ethernet Rx queue stats */ 1278995b150cSNaga Harish K S V eventdev_eth_rx_adapter_q_stats_reset eth_rx_adapter_queue_stats_reset; 1279995b150cSNaga Harish K S V /**< Reset ethernet Rx queue stats */ 1280995b150cSNaga Harish K S V 128199a2dd95SBruce Richardson eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get; 128299a2dd95SBruce Richardson /**< Get ethernet Tx adapter capabilities */ 128399a2dd95SBruce Richardson 128499a2dd95SBruce Richardson eventdev_eth_tx_adapter_create_t eth_tx_adapter_create; 128599a2dd95SBruce Richardson /**< Create adapter callback */ 128699a2dd95SBruce Richardson eventdev_eth_tx_adapter_free_t eth_tx_adapter_free; 128799a2dd95SBruce Richardson /**< Free adapter callback */ 128899a2dd95SBruce Richardson eventdev_eth_tx_adapter_queue_add_t eth_tx_adapter_queue_add; 128999a2dd95SBruce Richardson /**< Add Tx queues to the eth Tx adapter */ 129099a2dd95SBruce Richardson eventdev_eth_tx_adapter_queue_del_t eth_tx_adapter_queue_del; 129199a2dd95SBruce Richardson /**< Delete Tx queues from the eth Tx adapter */ 129299a2dd95SBruce Richardson eventdev_eth_tx_adapter_start_t eth_tx_adapter_start; 129399a2dd95SBruce Richardson /**< Start eth Tx adapter */ 129499a2dd95SBruce Richardson eventdev_eth_tx_adapter_stop_t eth_tx_adapter_stop; 129599a2dd95SBruce Richardson /**< Stop eth Tx adapter */ 129699a2dd95SBruce Richardson eventdev_eth_tx_adapter_stats_get_t eth_tx_adapter_stats_get; 129799a2dd95SBruce Richardson /**< Get eth Tx adapter statistics */ 129899a2dd95SBruce Richardson eventdev_eth_tx_adapter_stats_reset_t eth_tx_adapter_stats_reset; 129999a2dd95SBruce Richardson /**< Reset eth Tx adapter statistics */ 130099a2dd95SBruce Richardson 130199a2dd95SBruce Richardson eventdev_selftest dev_selftest; 130299a2dd95SBruce Richardson /**< Start eventdev Selftest */ 130399a2dd95SBruce Richardson 130499a2dd95SBruce Richardson eventdev_stop_flush_t dev_stop_flush; 130599a2dd95SBruce Richardson /**< User-provided event flush function */ 130699a2dd95SBruce Richardson }; 130799a2dd95SBruce Richardson 130899a2dd95SBruce Richardson /** 130999a2dd95SBruce Richardson * Allocates a new eventdev slot for an event device and returns the pointer 131099a2dd95SBruce Richardson * to that slot for the driver to use. 131199a2dd95SBruce Richardson * 131299a2dd95SBruce Richardson * @param name 131399a2dd95SBruce Richardson * Unique identifier name for each device 131499a2dd95SBruce Richardson * @param socket_id 131599a2dd95SBruce Richardson * Socket to allocate resources on. 131699a2dd95SBruce Richardson * @return 131799a2dd95SBruce Richardson * - Slot in the rte_dev_devices array for a new device; 131899a2dd95SBruce Richardson */ 131923d06e37SPavan Nikhilesh __rte_internal 132099a2dd95SBruce Richardson struct rte_eventdev * 132199a2dd95SBruce Richardson rte_event_pmd_allocate(const char *name, int socket_id); 132299a2dd95SBruce Richardson 132399a2dd95SBruce Richardson /** 132499a2dd95SBruce Richardson * Release the specified eventdev device. 132599a2dd95SBruce Richardson * 132699a2dd95SBruce Richardson * @param eventdev 132799a2dd95SBruce Richardson * The *eventdev* pointer is the address of the *rte_eventdev* structure. 132899a2dd95SBruce Richardson * @return 132999a2dd95SBruce Richardson * - 0 on success, negative on error 133099a2dd95SBruce Richardson */ 133123d06e37SPavan Nikhilesh __rte_internal 133299a2dd95SBruce Richardson int 133399a2dd95SBruce Richardson rte_event_pmd_release(struct rte_eventdev *eventdev); 133499a2dd95SBruce Richardson 1335d35e6132SPavan Nikhilesh /** 1336d35e6132SPavan Nikhilesh * 1337d35e6132SPavan Nikhilesh * @internal 1338d35e6132SPavan Nikhilesh * This is the last step of device probing. 1339d35e6132SPavan Nikhilesh * It must be called after a port is allocated and initialized successfully. 1340d35e6132SPavan Nikhilesh * 1341d35e6132SPavan Nikhilesh * @param eventdev 1342d35e6132SPavan Nikhilesh * New event device. 1343d35e6132SPavan Nikhilesh */ 1344d35e6132SPavan Nikhilesh __rte_internal 1345d35e6132SPavan Nikhilesh void 1346d35e6132SPavan Nikhilesh event_dev_probing_finish(struct rte_eventdev *eventdev); 1347d35e6132SPavan Nikhilesh 1348d35e6132SPavan Nikhilesh /** 1349d35e6132SPavan Nikhilesh * Reset eventdevice fastpath APIs to dummy values. 1350d35e6132SPavan Nikhilesh * 1351d35e6132SPavan Nikhilesh * @param fp_ops 1352d35e6132SPavan Nikhilesh * The *fp_ops* pointer to reset. 1353d35e6132SPavan Nikhilesh */ 1354d35e6132SPavan Nikhilesh __rte_internal 1355d35e6132SPavan Nikhilesh void 1356d35e6132SPavan Nikhilesh event_dev_fp_ops_reset(struct rte_event_fp_ops *fp_op); 1357d35e6132SPavan Nikhilesh 1358d35e6132SPavan Nikhilesh /** 1359d35e6132SPavan Nikhilesh * Set eventdevice fastpath APIs to event device values. 1360d35e6132SPavan Nikhilesh * 1361d35e6132SPavan Nikhilesh * @param fp_ops 1362d35e6132SPavan Nikhilesh * The *fp_ops* pointer to set. 1363d35e6132SPavan Nikhilesh */ 1364d35e6132SPavan Nikhilesh __rte_internal 1365d35e6132SPavan Nikhilesh void 1366d35e6132SPavan Nikhilesh event_dev_fp_ops_set(struct rte_event_fp_ops *fp_ops, 1367d35e6132SPavan Nikhilesh const struct rte_eventdev *dev); 1368d35e6132SPavan Nikhilesh 1369d35e6132SPavan Nikhilesh #ifdef __cplusplus 1370d35e6132SPavan Nikhilesh } 1371d35e6132SPavan Nikhilesh #endif 1372d35e6132SPavan Nikhilesh 137399a2dd95SBruce Richardson #endif /* _RTE_EVENTDEV_PMD_H_ */ 1374