1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2016 Cavium, Inc
5 #ifndef _RTE_EVENTDEV_PMD_H_
6 #define _RTE_EVENTDEV_PMD_H_
12 * These API are from event PMD only and user applications should not call
18 #include <rte_common.h>
19 #include <rte_compat.h>
20 #include <rte_config.h>
23 #include <rte_malloc.h>
25 #include <rte_mbuf_dyn.h>
27 #include "rte_eventdev.h"
28 #include "rte_event_timer_adapter_pmd.h"
31 #define RTE_EDEV_LOG_ERR(...) \
32 RTE_LOG(ERR, EVENTDEV, \
33 RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \
34 __func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,)))
36 #ifdef RTE_LIBRTE_EVENTDEV_DEBUG
37 #define RTE_EDEV_LOG_DEBUG(...) \
38 RTE_LOG(DEBUG, EVENTDEV, \
39 RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \
40 __func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,)))
42 #define RTE_EDEV_LOG_DEBUG(...) (void)0
45 /* Macros to check for valid device */
46 #define RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, retval) do { \
47 if (!rte_event_pmd_is_valid_dev((dev_id))) { \
48 RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \
53 #define RTE_EVENTDEV_VALID_DEVID_OR_ERRNO_RET(dev_id, errno, retval) do { \
54 if (!rte_event_pmd_is_valid_dev((dev_id))) { \
55 RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \
61 #define RTE_EVENTDEV_VALID_DEVID_OR_RET(dev_id) do { \
62 if (!rte_event_pmd_is_valid_dev((dev_id))) { \
63 RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \
68 #define RTE_EVENT_ETH_RX_ADAPTER_SW_CAP \
69 ((RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID) | \
70 (RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ) | \
71 (RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR))
73 #define RTE_EVENT_CRYPTO_ADAPTER_SW_CAP \
74 RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA
76 /**< Ethernet Rx adapter cap to return If the packet transfers from
77 * the ethdev to eventdev use a SW service function
80 #define RTE_EVENTDEV_DETACHED (0)
81 #define RTE_EVENTDEV_ATTACHED (1)
85 /** Global structure used for maintaining state of allocated event devices */
86 struct rte_eventdev_global {
87 uint8_t nb_devs; /**< Number of devices found */
90 extern struct rte_eventdev *rte_eventdevs;
91 /** The pool of rte_eventdev structures. */
94 * Get the rte_eventdev structure device pointer for the named device.
97 * device name to select the device structure.
100 * - The rte_eventdev structure pointer for the given device ID.
103 static inline struct rte_eventdev *
104 rte_event_pmd_get_named_dev(const char *name)
106 struct rte_eventdev *dev;
112 for (i = 0; i < RTE_EVENT_MAX_DEVS; i++) {
113 dev = &rte_eventdevs[i];
114 if ((dev->attached == RTE_EVENTDEV_ATTACHED) &&
115 (strcmp(dev->data->name, name) == 0))
123 * Validate if the event device index is valid attached event device.
126 * Event device index.
129 * - If the device index is valid (1) or not (0).
132 static inline unsigned
133 rte_event_pmd_is_valid_dev(uint8_t dev_id)
135 struct rte_eventdev *dev;
137 if (dev_id >= RTE_EVENT_MAX_DEVS)
140 dev = &rte_eventdevs[dev_id];
141 if (dev->attached != RTE_EVENTDEV_ATTACHED)
148 * Definitions of all functions exported by a driver through the
149 * the generic structure of type *event_dev_ops* supplied in the
150 * *rte_eventdev* structure associated with a device.
154 * Get device information of a device.
157 * Event device pointer
159 * Event device information structure
161 typedef void (*eventdev_info_get_t)(struct rte_eventdev *dev,
162 struct rte_event_dev_info *dev_info);
165 * Configure a device.
168 * Event device pointer
171 * Returns 0 on success
173 typedef int (*eventdev_configure_t)(const struct rte_eventdev *dev);
176 * Start a configured device.
179 * Event device pointer
182 * Returns 0 on success
184 typedef int (*eventdev_start_t)(struct rte_eventdev *dev);
187 * Stop a configured device.
190 * Event device pointer
192 typedef void (*eventdev_stop_t)(struct rte_eventdev *dev);
195 * Close a configured device.
198 * Event device pointer
202 * - (-EAGAIN) if can't close as device is busy
204 typedef int (*eventdev_close_t)(struct rte_eventdev *dev);
207 * Retrieve the default event queue configuration.
210 * Event device pointer
213 * @param[out] queue_conf
214 * Event queue configuration structure
217 typedef void (*eventdev_queue_default_conf_get_t)(struct rte_eventdev *dev,
218 uint8_t queue_id, struct rte_event_queue_conf *queue_conf);
221 * Setup an event queue.
224 * Event device pointer
228 * Event queue configuration structure
231 * Returns 0 on success.
233 typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev,
235 const struct rte_event_queue_conf *queue_conf);
238 * Release resources allocated by given event queue.
241 * Event device pointer
246 typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev,
250 * Retrieve the default event port configuration.
253 * Event device pointer
256 * @param[out] port_conf
257 * Event port configuration structure
260 typedef void (*eventdev_port_default_conf_get_t)(struct rte_eventdev *dev,
261 uint8_t port_id, struct rte_event_port_conf *port_conf);
264 * Setup an event port.
267 * Event device pointer
271 * Event port configuration structure
274 * Returns 0 on success.
276 typedef int (*eventdev_port_setup_t)(struct rte_eventdev *dev,
278 const struct rte_event_port_conf *port_conf);
281 * Release memory resources allocated by given event port.
287 typedef void (*eventdev_port_release_t)(void *port);
290 * Link multiple source event queues to destination event port.
293 * Event device pointer
297 * Points to an array of *nb_links* event queues to be linked
300 * Points to an array of *nb_links* service priorities associated with each
301 * event queue link to event port.
303 * The number of links to establish
306 * Returns 0 on success.
309 typedef int (*eventdev_port_link_t)(struct rte_eventdev *dev, void *port,
310 const uint8_t queues[], const uint8_t priorities[],
314 * Unlink multiple source event queues from destination event port.
317 * Event device pointer
321 * An array of *nb_unlinks* event queues to be unlinked from the event port.
323 * The number of unlinks to establish
326 * Returns 0 on success.
329 typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port,
330 uint8_t queues[], uint16_t nb_unlinks);
333 * Unlinks in progress. Returns number of unlinks that the PMD is currently
334 * performing, but have not yet been completed.
337 * Event device pointer
343 * Returns the number of in-progress unlinks. Zero is returned if none are
346 typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev,
350 * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue()
353 * Event device pointer
355 * Wait time in nanosecond
356 * @param[out] timeout_ticks
357 * Value for the *timeout_ticks* parameter in rte_event_dequeue() function
360 * Returns 0 on success.
363 typedef int (*eventdev_dequeue_timeout_ticks_t)(struct rte_eventdev *dev,
364 uint64_t ns, uint64_t *timeout_ticks);
367 * Dump internal information
370 * Event device pointer
372 * A pointer to a file for output
375 typedef void (*eventdev_dump_t)(struct rte_eventdev *dev, FILE *f);
378 * Retrieve a set of statistics from device
381 * Event device pointer
383 * Level (device, port or queue)
384 * @param queue_port_id
385 * Queue or port number depending on mode
387 * The stat ids to retrieve
389 * The returned stat values
391 * The number of id values and entries in the values array
393 * The number of stat values successfully filled into the values array
395 typedef int (*eventdev_xstats_get_t)(const struct rte_eventdev *dev,
396 enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
397 const unsigned int ids[], uint64_t values[], unsigned int n);
400 * Resets the statistic values in xstats for the device, based on mode.
402 typedef int (*eventdev_xstats_reset_t)(struct rte_eventdev *dev,
403 enum rte_event_dev_xstats_mode mode,
404 int16_t queue_port_id,
405 const uint32_t ids[],
409 * Get names of extended stats of an event device
412 * Event device pointer
414 * Level (device, port or queue)
415 * @param queue_port_id
416 * Queue or port number depending on mode
417 * @param xstats_names
418 * Array of name values to be filled in
420 * The stat ids to retrieve
422 * Number of values in the xstats_names array
424 * When size >= the number of stats, return the number of stat values filled
426 * When size < the number of available stats, return the number of stats
427 * values, and do not fill in any data into xstats_names.
429 typedef int (*eventdev_xstats_get_names_t)(const struct rte_eventdev *dev,
430 enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
431 struct rte_event_dev_xstats_name *xstats_names,
432 unsigned int *ids, unsigned int size);
435 * Get value of one stats and optionally return its id
438 * Event device pointer
440 * The name of the stat to retrieve
442 * Pointer to an unsigned int where we store the stat-id for future reference.
443 * This pointer may be null if the id is not required.
445 * The value of the stat, or (uint64_t)-1 if the stat is not found.
446 * If the stat is not found, the id value will be returned as (unsigned)-1,
447 * if id pointer is non-NULL
449 typedef uint64_t (*eventdev_xstats_get_by_name)(const struct rte_eventdev *dev,
450 const char *name, unsigned int *id);
454 * Retrieve the event device's ethdev Rx adapter capabilities for the
455 * specified ethernet port
458 * Event device pointer
461 * Ethernet device pointer
464 * A pointer to memory filled with Rx event adapter capabilities.
467 * - 0: Success, driver provides Rx event adapter capabilities for the
469 * - <0: Error code returned by the driver function.
472 typedef int (*eventdev_eth_rx_adapter_caps_get_t)
473 (const struct rte_eventdev *dev,
474 const struct rte_eth_dev *eth_dev,
477 struct rte_event_eth_rx_adapter_queue_conf;
480 * Retrieve the event device's timer adapter capabilities, as well as the ops
481 * structure that an event timer adapter should call through to enter the
485 * Event device pointer
488 * Flags that can be used to determine how to select an event timer
489 * adapter ops structure
492 * A pointer to memory filled with Rx event adapter capabilities.
495 * A pointer to the ops pointer to set with the address of the desired ops
499 * - 0: Success, driver provides Rx event adapter capabilities for the
501 * - <0: Error code returned by the driver function.
504 typedef int (*eventdev_timer_adapter_caps_get_t)(
505 const struct rte_eventdev *dev,
508 const struct rte_event_timer_adapter_ops **ops);
511 * Add ethernet Rx queues to event device. This callback is invoked if
512 * the caps returned from rte_eventdev_eth_rx_adapter_caps_get(, eth_port_id)
513 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
516 * Event device pointer
519 * Ethernet device pointer
522 * Ethernet device receive queue index
525 * Additional configuration structure
528 * - 0: Success, ethernet receive queue added successfully.
529 * - <0: Error code returned by the driver function.
532 typedef int (*eventdev_eth_rx_adapter_queue_add_t)(
533 const struct rte_eventdev *dev,
534 const struct rte_eth_dev *eth_dev,
536 const struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
539 * Delete ethernet Rx queues from event device. This callback is invoked if
540 * the caps returned from eventdev_eth_rx_adapter_caps_get(, eth_port_id)
541 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
544 * Event device pointer
547 * Ethernet device pointer
550 * Ethernet device receive queue index
553 * - 0: Success, ethernet receive queue deleted successfully.
554 * - <0: Error code returned by the driver function.
557 typedef int (*eventdev_eth_rx_adapter_queue_del_t)
558 (const struct rte_eventdev *dev,
559 const struct rte_eth_dev *eth_dev,
560 int32_t rx_queue_id);
563 * Retrieve Rx adapter queue config information for the specified
567 * Event device pointer
570 * Ethernet device pointer
573 * Ethernet device receive queue index.
575 * @param[out] queue_conf
576 * Pointer to rte_event_eth_rx_adapter_queue_conf structure
580 * - <0: Error code on failure.
582 typedef int (*eventdev_eth_rx_adapter_queue_conf_get_t)
583 (const struct rte_eventdev *dev,
584 const struct rte_eth_dev *eth_dev,
585 uint16_t rx_queue_id,
586 struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
589 * Start ethernet Rx adapter. This callback is invoked if
590 * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_id)
591 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
592 * from eth_port_id have been added to the event device.
595 * Event device pointer
598 * Ethernet device pointer
601 * - 0: Success, ethernet Rx adapter started successfully.
602 * - <0: Error code returned by the driver function.
604 typedef int (*eventdev_eth_rx_adapter_start_t)
605 (const struct rte_eventdev *dev,
606 const struct rte_eth_dev *eth_dev);
609 * Stop ethernet Rx adapter. This callback is invoked if
610 * the caps returned from eventdev_eth_rx_adapter_caps_get(..,eth_port_id)
611 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
612 * from eth_port_id have been added to the event device.
615 * Event device pointer
618 * Ethernet device pointer
621 * - 0: Success, ethernet Rx adapter stopped successfully.
622 * - <0: Error code returned by the driver function.
624 typedef int (*eventdev_eth_rx_adapter_stop_t)
625 (const struct rte_eventdev *dev,
626 const struct rte_eth_dev *eth_dev);
628 struct rte_event_eth_rx_adapter_stats;
631 * Retrieve ethernet Rx adapter statistics.
634 * Event device pointer
637 * Ethernet device pointer
640 * Pointer to stats structure
643 * Return 0 on success.
646 typedef int (*eventdev_eth_rx_adapter_stats_get)
647 (const struct rte_eventdev *dev,
648 const struct rte_eth_dev *eth_dev,
649 struct rte_event_eth_rx_adapter_stats *stats);
651 * Reset ethernet Rx adapter statistics.
654 * Event device pointer
657 * Ethernet device pointer
660 * Return 0 on success.
662 typedef int (*eventdev_eth_rx_adapter_stats_reset)
663 (const struct rte_eventdev *dev,
664 const struct rte_eth_dev *eth_dev);
666 * Start eventdev selftest.
669 * Return 0 on success.
671 typedef int (*eventdev_selftest)(void);
673 struct rte_event_eth_rx_adapter_vector_limits;
675 * Get event vector limits for a given event, ethernet device pair.
678 * Event device pointer
681 * Ethernet device pointer
684 * Pointer to the limits structure to be filled.
688 * - <0: Error code returned by the driver function.
690 typedef int (*eventdev_eth_rx_adapter_vector_limits_get_t)(
691 const struct rte_eventdev *dev, const struct rte_eth_dev *eth_dev,
692 struct rte_event_eth_rx_adapter_vector_limits *limits);
694 typedef uint32_t rte_event_pmd_selftest_seqn_t;
695 extern int rte_event_pmd_selftest_seqn_dynfield_offset;
698 * Read test sequence number from mbuf.
700 * @param mbuf Structure to read from.
701 * @return pointer to test sequence number.
704 static inline rte_event_pmd_selftest_seqn_t *
705 rte_event_pmd_selftest_seqn(struct rte_mbuf *mbuf)
707 return RTE_MBUF_DYNFIELD(mbuf,
708 rte_event_pmd_selftest_seqn_dynfield_offset,
709 rte_event_pmd_selftest_seqn_t *);
712 struct rte_cryptodev;
715 * This API may change without prior notice
717 * Retrieve the event device's crypto adapter capabilities for the
718 * specified cryptodev
721 * Event device pointer
727 * A pointer to memory filled with event adapter capabilities.
728 * It is expected to be pre-allocated & initialized by caller.
731 * - 0: Success, driver provides event adapter capabilities for the
733 * - <0: Error code returned by the driver function.
736 typedef int (*eventdev_crypto_adapter_caps_get_t)
737 (const struct rte_eventdev *dev,
738 const struct rte_cryptodev *cdev,
742 * This API may change without prior notice
744 * Add crypto queue pair to event device. This callback is invoked if
745 * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
746 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
749 * Event device pointer
754 * @param queue_pair_id
755 * cryptodev queue pair identifier.
758 * Event information required for binding cryptodev queue pair to event queue.
759 * This structure will have a valid value for only those HW PMDs supporting
760 * @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability.
763 * - 0: Success, cryptodev queue pair added successfully.
764 * - <0: Error code returned by the driver function.
767 typedef int (*eventdev_crypto_adapter_queue_pair_add_t)
768 (const struct rte_eventdev *dev,
769 const struct rte_cryptodev *cdev,
770 int32_t queue_pair_id,
771 const struct rte_event *event);
775 * This API may change without prior notice
777 * Delete crypto queue pair to event device. This callback is invoked if
778 * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
779 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
782 * Event device pointer
787 * @param queue_pair_id
788 * cryptodev queue pair identifier.
791 * - 0: Success, cryptodev queue pair deleted successfully.
792 * - <0: Error code returned by the driver function.
795 typedef int (*eventdev_crypto_adapter_queue_pair_del_t)
796 (const struct rte_eventdev *dev,
797 const struct rte_cryptodev *cdev,
798 int32_t queue_pair_id);
801 * Start crypto adapter. This callback is invoked if
802 * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
803 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
804 * from cdev_id have been added to the event device.
807 * Event device pointer
810 * Crypto device pointer
813 * - 0: Success, crypto adapter started successfully.
814 * - <0: Error code returned by the driver function.
816 typedef int (*eventdev_crypto_adapter_start_t)
817 (const struct rte_eventdev *dev,
818 const struct rte_cryptodev *cdev);
821 * Stop crypto adapter. This callback is invoked if
822 * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
823 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
824 * from cdev_id have been added to the event device.
827 * Event device pointer
830 * Crypto device pointer
833 * - 0: Success, crypto adapter stopped successfully.
834 * - <0: Error code returned by the driver function.
836 typedef int (*eventdev_crypto_adapter_stop_t)
837 (const struct rte_eventdev *dev,
838 const struct rte_cryptodev *cdev);
840 struct rte_event_crypto_adapter_stats;
843 * Retrieve crypto adapter statistics.
846 * Event device pointer
849 * Crypto device pointer
852 * Pointer to stats structure
855 * Return 0 on success.
858 typedef int (*eventdev_crypto_adapter_stats_get)
859 (const struct rte_eventdev *dev,
860 const struct rte_cryptodev *cdev,
861 struct rte_event_crypto_adapter_stats *stats);
864 * Reset crypto adapter statistics.
867 * Event device pointer
870 * Crypto device pointer
873 * Return 0 on success.
876 typedef int (*eventdev_crypto_adapter_stats_reset)
877 (const struct rte_eventdev *dev,
878 const struct rte_cryptodev *cdev);
881 * Retrieve the event device's eth Tx adapter capabilities.
884 * Event device pointer
887 * Ethernet device pointer
890 * A pointer to memory filled with eth Tx adapter capabilities.
893 * - 0: Success, driver provides eth Tx adapter capabilities
894 * - <0: Error code returned by the driver function.
897 typedef int (*eventdev_eth_tx_adapter_caps_get_t)
898 (const struct rte_eventdev *dev,
899 const struct rte_eth_dev *eth_dev,
903 * Create adapter callback.
909 * Event device pointer
913 * - <0: Error code on failure.
915 typedef int (*eventdev_eth_tx_adapter_create_t)(uint8_t id,
916 const struct rte_eventdev *dev);
919 * Free adapter callback.
925 * Event device pointer
929 * - <0: Error code on failure.
931 typedef int (*eventdev_eth_tx_adapter_free_t)(uint8_t id,
932 const struct rte_eventdev *dev);
935 * Add a Tx queue to the adapter.
936 * A queue value of -1 is used to indicate all
937 * queues within the device.
943 * Event device pointer
946 * Ethernet device pointer
949 * Transmit queue index
953 * - <0: Error code on failure.
955 typedef int (*eventdev_eth_tx_adapter_queue_add_t)(
957 const struct rte_eventdev *dev,
958 const struct rte_eth_dev *eth_dev,
959 int32_t tx_queue_id);
962 * Delete a Tx queue from the adapter.
963 * A queue value of -1 is used to indicate all
964 * queues within the device, that have been added to this
971 * Event device pointer
974 * Ethernet device pointer
977 * Transmit queue index
980 * - 0: Success, Queues deleted successfully.
981 * - <0: Error code on failure.
983 typedef int (*eventdev_eth_tx_adapter_queue_del_t)(
985 const struct rte_eventdev *dev,
986 const struct rte_eth_dev *eth_dev,
987 int32_t tx_queue_id);
996 * Event device pointer
999 * - 0: Success, Adapter started correctly.
1000 * - <0: Error code on failure.
1002 typedef int (*eventdev_eth_tx_adapter_start_t)(uint8_t id,
1003 const struct rte_eventdev *dev);
1009 * Adapter identifier
1012 * Event device pointer
1016 * - <0: Error code on failure.
1018 typedef int (*eventdev_eth_tx_adapter_stop_t)(uint8_t id,
1019 const struct rte_eventdev *dev);
1021 struct rte_event_eth_tx_adapter_stats;
1024 * Retrieve statistics for an adapter
1027 * Adapter identifier
1030 * Event device pointer
1032 * @param [out] stats
1033 * A pointer to structure used to retrieve statistics for an adapter
1036 * - 0: Success, statistics retrieved successfully.
1037 * - <0: Error code on failure.
1039 typedef int (*eventdev_eth_tx_adapter_stats_get_t)(
1041 const struct rte_eventdev *dev,
1042 struct rte_event_eth_tx_adapter_stats *stats);
1045 * Reset statistics for an adapter
1048 * Adapter identifier
1051 * Event device pointer
1054 * - 0: Success, statistics retrieved successfully.
1055 * - <0: Error code on failure.
1057 typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id,
1058 const struct rte_eventdev *dev);
1060 /** Event device operations function pointer table */
1061 struct eventdev_ops {
1062 eventdev_info_get_t dev_infos_get; /**< Get device info. */
1063 eventdev_configure_t dev_configure; /**< Configure device. */
1064 eventdev_start_t dev_start; /**< Start device. */
1065 eventdev_stop_t dev_stop; /**< Stop device. */
1066 eventdev_close_t dev_close; /**< Close device. */
1068 eventdev_queue_default_conf_get_t queue_def_conf;
1069 /**< Get default queue configuration. */
1070 eventdev_queue_setup_t queue_setup;
1071 /**< Set up an event queue. */
1072 eventdev_queue_release_t queue_release;
1073 /**< Release an event queue. */
1075 eventdev_port_default_conf_get_t port_def_conf;
1076 /**< Get default port configuration. */
1077 eventdev_port_setup_t port_setup;
1078 /**< Set up an event port. */
1079 eventdev_port_release_t port_release;
1080 /**< Release an event port. */
1082 eventdev_port_link_t port_link;
1083 /**< Link event queues to an event port. */
1084 eventdev_port_unlink_t port_unlink;
1085 /**< Unlink event queues from an event port. */
1086 eventdev_port_unlinks_in_progress_t port_unlinks_in_progress;
1087 /**< Unlinks in progress on an event port. */
1088 eventdev_dequeue_timeout_ticks_t timeout_ticks;
1089 /**< Converts ns to *timeout_ticks* value for rte_event_dequeue() */
1090 eventdev_dump_t dump;
1091 /* Dump internal information */
1093 eventdev_xstats_get_t xstats_get;
1094 /**< Get extended device statistics. */
1095 eventdev_xstats_get_names_t xstats_get_names;
1096 /**< Get names of extended stats. */
1097 eventdev_xstats_get_by_name xstats_get_by_name;
1098 /**< Get one value by name. */
1099 eventdev_xstats_reset_t xstats_reset;
1100 /**< Reset the statistics values in xstats. */
1102 eventdev_eth_rx_adapter_caps_get_t eth_rx_adapter_caps_get;
1103 /**< Get ethernet Rx adapter capabilities */
1104 eventdev_eth_rx_adapter_queue_add_t eth_rx_adapter_queue_add;
1105 /**< Add Rx queues to ethernet Rx adapter */
1106 eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del;
1107 /**< Delete Rx queues from ethernet Rx adapter */
1108 eventdev_eth_rx_adapter_queue_conf_get_t eth_rx_adapter_queue_conf_get;
1109 /**< Get Rx adapter queue info */
1110 eventdev_eth_rx_adapter_start_t eth_rx_adapter_start;
1111 /**< Start ethernet Rx adapter */
1112 eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop;
1113 /**< Stop ethernet Rx adapter */
1114 eventdev_eth_rx_adapter_stats_get eth_rx_adapter_stats_get;
1115 /**< Get ethernet Rx stats */
1116 eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset;
1117 /**< Reset ethernet Rx stats */
1118 eventdev_eth_rx_adapter_vector_limits_get_t
1119 eth_rx_adapter_vector_limits_get;
1120 /**< Get event vector limits for the Rx adapter */
1122 eventdev_timer_adapter_caps_get_t timer_adapter_caps_get;
1123 /**< Get timer adapter capabilities */
1125 eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get;
1126 /**< Get crypto adapter capabilities */
1127 eventdev_crypto_adapter_queue_pair_add_t crypto_adapter_queue_pair_add;
1128 /**< Add queue pair to crypto adapter */
1129 eventdev_crypto_adapter_queue_pair_del_t crypto_adapter_queue_pair_del;
1130 /**< Delete queue pair from crypto adapter */
1131 eventdev_crypto_adapter_start_t crypto_adapter_start;
1132 /**< Start crypto adapter */
1133 eventdev_crypto_adapter_stop_t crypto_adapter_stop;
1134 /**< Stop crypto adapter */
1135 eventdev_crypto_adapter_stats_get crypto_adapter_stats_get;
1136 /**< Get crypto stats */
1137 eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset;
1138 /**< Reset crypto stats */
1140 eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get;
1141 /**< Get ethernet Tx adapter capabilities */
1143 eventdev_eth_tx_adapter_create_t eth_tx_adapter_create;
1144 /**< Create adapter callback */
1145 eventdev_eth_tx_adapter_free_t eth_tx_adapter_free;
1146 /**< Free adapter callback */
1147 eventdev_eth_tx_adapter_queue_add_t eth_tx_adapter_queue_add;
1148 /**< Add Tx queues to the eth Tx adapter */
1149 eventdev_eth_tx_adapter_queue_del_t eth_tx_adapter_queue_del;
1150 /**< Delete Tx queues from the eth Tx adapter */
1151 eventdev_eth_tx_adapter_start_t eth_tx_adapter_start;
1152 /**< Start eth Tx adapter */
1153 eventdev_eth_tx_adapter_stop_t eth_tx_adapter_stop;
1154 /**< Stop eth Tx adapter */
1155 eventdev_eth_tx_adapter_stats_get_t eth_tx_adapter_stats_get;
1156 /**< Get eth Tx adapter statistics */
1157 eventdev_eth_tx_adapter_stats_reset_t eth_tx_adapter_stats_reset;
1158 /**< Reset eth Tx adapter statistics */
1160 eventdev_selftest dev_selftest;
1161 /**< Start eventdev Selftest */
1163 eventdev_stop_flush_t dev_stop_flush;
1164 /**< User-provided event flush function */
1168 * Allocates a new eventdev slot for an event device and returns the pointer
1169 * to that slot for the driver to use.
1172 * Unique identifier name for each device
1174 * Socket to allocate resources on.
1176 * - Slot in the rte_dev_devices array for a new device;
1179 struct rte_eventdev *
1180 rte_event_pmd_allocate(const char *name, int socket_id);
1183 * Release the specified eventdev device.
1186 * The *eventdev* pointer is the address of the *rte_eventdev* structure.
1188 * - 0 on success, negative on error
1192 rte_event_pmd_release(struct rte_eventdev *eventdev);
1194 #endif /* _RTE_EVENTDEV_PMD_H_ */