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