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 */
91 * Get the rte_eventdev structure device pointer for the named device.
94 * device name to select the device structure.
97 * - The rte_eventdev structure pointer for the given device ID.
100 static inline struct rte_eventdev *
101 rte_event_pmd_get_named_dev(const char *name)
103 struct rte_eventdev *dev;
109 for (i = 0; i < RTE_EVENT_MAX_DEVS; i++) {
110 dev = &rte_eventdevs[i];
111 if ((dev->attached == RTE_EVENTDEV_ATTACHED) &&
112 (strcmp(dev->data->name, name) == 0))
120 * Validate if the event device index is valid attached event device.
123 * Event device index.
126 * - If the device index is valid (1) or not (0).
129 static inline unsigned
130 rte_event_pmd_is_valid_dev(uint8_t dev_id)
132 struct rte_eventdev *dev;
134 if (dev_id >= RTE_EVENT_MAX_DEVS)
137 dev = &rte_eventdevs[dev_id];
138 if (dev->attached != RTE_EVENTDEV_ATTACHED)
145 * Definitions of all functions exported by a driver through the
146 * the generic structure of type *event_dev_ops* supplied in the
147 * *rte_eventdev* structure associated with a device.
151 * Get device information of a device.
154 * Event device pointer
156 * Event device information structure
158 typedef void (*eventdev_info_get_t)(struct rte_eventdev *dev,
159 struct rte_event_dev_info *dev_info);
162 * Configure a device.
165 * Event device pointer
168 * Returns 0 on success
170 typedef int (*eventdev_configure_t)(const struct rte_eventdev *dev);
173 * Start a configured device.
176 * Event device pointer
179 * Returns 0 on success
181 typedef int (*eventdev_start_t)(struct rte_eventdev *dev);
184 * Stop a configured device.
187 * Event device pointer
189 typedef void (*eventdev_stop_t)(struct rte_eventdev *dev);
192 * Close a configured device.
195 * Event device pointer
199 * - (-EAGAIN) if can't close as device is busy
201 typedef int (*eventdev_close_t)(struct rte_eventdev *dev);
204 * Retrieve the default event queue configuration.
207 * Event device pointer
210 * @param[out] queue_conf
211 * Event queue configuration structure
214 typedef void (*eventdev_queue_default_conf_get_t)(struct rte_eventdev *dev,
215 uint8_t queue_id, struct rte_event_queue_conf *queue_conf);
218 * Setup an event queue.
221 * Event device pointer
225 * Event queue configuration structure
228 * Returns 0 on success.
230 typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev,
232 const struct rte_event_queue_conf *queue_conf);
235 * Release resources allocated by given event queue.
238 * Event device pointer
243 typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev,
247 * Retrieve the default event port configuration.
250 * Event device pointer
253 * @param[out] port_conf
254 * Event port configuration structure
257 typedef void (*eventdev_port_default_conf_get_t)(struct rte_eventdev *dev,
258 uint8_t port_id, struct rte_event_port_conf *port_conf);
261 * Setup an event port.
264 * Event device pointer
268 * Event port configuration structure
271 * Returns 0 on success.
273 typedef int (*eventdev_port_setup_t)(struct rte_eventdev *dev,
275 const struct rte_event_port_conf *port_conf);
278 * Release memory resources allocated by given event port.
284 typedef void (*eventdev_port_release_t)(void *port);
287 * Link multiple source event queues to destination event port.
290 * Event device pointer
294 * Points to an array of *nb_links* event queues to be linked
297 * Points to an array of *nb_links* service priorities associated with each
298 * event queue link to event port.
300 * The number of links to establish
303 * Returns 0 on success.
306 typedef int (*eventdev_port_link_t)(struct rte_eventdev *dev, void *port,
307 const uint8_t queues[], const uint8_t priorities[],
311 * Unlink multiple source event queues from destination event port.
314 * Event device pointer
318 * An array of *nb_unlinks* event queues to be unlinked from the event port.
320 * The number of unlinks to establish
323 * Returns 0 on success.
326 typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port,
327 uint8_t queues[], uint16_t nb_unlinks);
330 * Unlinks in progress. Returns number of unlinks that the PMD is currently
331 * performing, but have not yet been completed.
334 * Event device pointer
340 * Returns the number of in-progress unlinks. Zero is returned if none are
343 typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev,
347 * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue()
350 * Event device pointer
352 * Wait time in nanosecond
353 * @param[out] timeout_ticks
354 * Value for the *timeout_ticks* parameter in rte_event_dequeue() function
357 * Returns 0 on success.
360 typedef int (*eventdev_dequeue_timeout_ticks_t)(struct rte_eventdev *dev,
361 uint64_t ns, uint64_t *timeout_ticks);
364 * Dump internal information
367 * Event device pointer
369 * A pointer to a file for output
372 typedef void (*eventdev_dump_t)(struct rte_eventdev *dev, FILE *f);
375 * Retrieve a set of statistics from device
378 * Event device pointer
380 * Level (device, port or queue)
381 * @param queue_port_id
382 * Queue or port number depending on mode
384 * The stat ids to retrieve
386 * The returned stat values
388 * The number of id values and entries in the values array
390 * The number of stat values successfully filled into the values array
392 typedef int (*eventdev_xstats_get_t)(const struct rte_eventdev *dev,
393 enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
394 const unsigned int ids[], uint64_t values[], unsigned int n);
397 * Resets the statistic values in xstats for the device, based on mode.
399 typedef int (*eventdev_xstats_reset_t)(struct rte_eventdev *dev,
400 enum rte_event_dev_xstats_mode mode,
401 int16_t queue_port_id,
402 const uint32_t ids[],
406 * Get names of extended stats of an event device
409 * Event device pointer
411 * Level (device, port or queue)
412 * @param queue_port_id
413 * Queue or port number depending on mode
414 * @param xstats_names
415 * Array of name values to be filled in
417 * The stat ids to retrieve
419 * Number of values in the xstats_names array
421 * When size >= the number of stats, return the number of stat values filled
423 * When size < the number of available stats, return the number of stats
424 * values, and do not fill in any data into xstats_names.
426 typedef int (*eventdev_xstats_get_names_t)(const struct rte_eventdev *dev,
427 enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
428 struct rte_event_dev_xstats_name *xstats_names,
429 unsigned int *ids, unsigned int size);
432 * Get value of one stats and optionally return its id
435 * Event device pointer
437 * The name of the stat to retrieve
439 * Pointer to an unsigned int where we store the stat-id for future reference.
440 * This pointer may be null if the id is not required.
442 * The value of the stat, or (uint64_t)-1 if the stat is not found.
443 * If the stat is not found, the id value will be returned as (unsigned)-1,
444 * if id pointer is non-NULL
446 typedef uint64_t (*eventdev_xstats_get_by_name)(const struct rte_eventdev *dev,
447 const char *name, unsigned int *id);
451 * Retrieve the event device's ethdev Rx adapter capabilities for the
452 * specified ethernet port
455 * Event device pointer
458 * Ethernet device pointer
461 * A pointer to memory filled with Rx event adapter capabilities.
464 * - 0: Success, driver provides Rx event adapter capabilities for the
466 * - <0: Error code returned by the driver function.
469 typedef int (*eventdev_eth_rx_adapter_caps_get_t)
470 (const struct rte_eventdev *dev,
471 const struct rte_eth_dev *eth_dev,
474 struct rte_event_eth_rx_adapter_queue_conf;
477 * Retrieve the event device's timer adapter capabilities, as well as the ops
478 * structure that an event timer adapter should call through to enter the
482 * Event device pointer
485 * Flags that can be used to determine how to select an event timer
486 * adapter ops structure
489 * A pointer to memory filled with Rx event adapter capabilities.
492 * A pointer to the ops pointer to set with the address of the desired ops
496 * - 0: Success, driver provides Rx event adapter capabilities for the
498 * - <0: Error code returned by the driver function.
501 typedef int (*eventdev_timer_adapter_caps_get_t)(
502 const struct rte_eventdev *dev,
505 const struct rte_event_timer_adapter_ops **ops);
508 * Add ethernet Rx queues to event device. This callback is invoked if
509 * the caps returned from rte_eventdev_eth_rx_adapter_caps_get(, eth_port_id)
510 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
513 * Event device pointer
516 * Ethernet device pointer
519 * Ethernet device receive queue index
522 * Additional configuration structure
525 * - 0: Success, ethernet receive queue added successfully.
526 * - <0: Error code returned by the driver function.
529 typedef int (*eventdev_eth_rx_adapter_queue_add_t)(
530 const struct rte_eventdev *dev,
531 const struct rte_eth_dev *eth_dev,
533 const struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
536 * Delete ethernet Rx queues from event device. This callback is invoked if
537 * the caps returned from eventdev_eth_rx_adapter_caps_get(, eth_port_id)
538 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set.
541 * Event device pointer
544 * Ethernet device pointer
547 * Ethernet device receive queue index
550 * - 0: Success, ethernet receive queue deleted successfully.
551 * - <0: Error code returned by the driver function.
554 typedef int (*eventdev_eth_rx_adapter_queue_del_t)
555 (const struct rte_eventdev *dev,
556 const struct rte_eth_dev *eth_dev,
557 int32_t rx_queue_id);
560 * Retrieve Rx adapter queue config information for the specified
564 * Event device pointer
567 * Ethernet device pointer
570 * Ethernet device receive queue index.
572 * @param[out] queue_conf
573 * Pointer to rte_event_eth_rx_adapter_queue_conf structure
577 * - <0: Error code on failure.
579 typedef int (*eventdev_eth_rx_adapter_queue_conf_get_t)
580 (const struct rte_eventdev *dev,
581 const struct rte_eth_dev *eth_dev,
582 uint16_t rx_queue_id,
583 struct rte_event_eth_rx_adapter_queue_conf *queue_conf);
586 * Start ethernet Rx adapter. This callback is invoked if
587 * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_id)
588 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
589 * from eth_port_id have been added to the event device.
592 * Event device pointer
595 * Ethernet device pointer
598 * - 0: Success, ethernet Rx adapter started successfully.
599 * - <0: Error code returned by the driver function.
601 typedef int (*eventdev_eth_rx_adapter_start_t)
602 (const struct rte_eventdev *dev,
603 const struct rte_eth_dev *eth_dev);
606 * Stop ethernet Rx adapter. This callback is invoked if
607 * the caps returned from eventdev_eth_rx_adapter_caps_get(..,eth_port_id)
608 * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues
609 * from eth_port_id have been added to the event device.
612 * Event device pointer
615 * Ethernet device pointer
618 * - 0: Success, ethernet Rx adapter stopped successfully.
619 * - <0: Error code returned by the driver function.
621 typedef int (*eventdev_eth_rx_adapter_stop_t)
622 (const struct rte_eventdev *dev,
623 const struct rte_eth_dev *eth_dev);
625 struct rte_event_eth_rx_adapter_stats;
628 * Retrieve ethernet Rx adapter statistics.
631 * Event device pointer
634 * Ethernet device pointer
637 * Pointer to stats structure
640 * Return 0 on success.
643 typedef int (*eventdev_eth_rx_adapter_stats_get)
644 (const struct rte_eventdev *dev,
645 const struct rte_eth_dev *eth_dev,
646 struct rte_event_eth_rx_adapter_stats *stats);
648 * Reset ethernet Rx adapter statistics.
651 * Event device pointer
654 * Ethernet device pointer
657 * Return 0 on success.
659 typedef int (*eventdev_eth_rx_adapter_stats_reset)
660 (const struct rte_eventdev *dev,
661 const struct rte_eth_dev *eth_dev);
663 * Start eventdev selftest.
666 * Return 0 on success.
668 typedef int (*eventdev_selftest)(void);
670 struct rte_event_eth_rx_adapter_vector_limits;
672 * Get event vector limits for a given event, ethernet device pair.
675 * Event device pointer
678 * Ethernet device pointer
681 * Pointer to the limits structure to be filled.
685 * - <0: Error code returned by the driver function.
687 typedef int (*eventdev_eth_rx_adapter_vector_limits_get_t)(
688 const struct rte_eventdev *dev, const struct rte_eth_dev *eth_dev,
689 struct rte_event_eth_rx_adapter_vector_limits *limits);
691 typedef uint32_t rte_event_pmd_selftest_seqn_t;
692 extern int rte_event_pmd_selftest_seqn_dynfield_offset;
695 * Read test sequence number from mbuf.
697 * @param mbuf Structure to read from.
698 * @return pointer to test sequence number.
701 static inline rte_event_pmd_selftest_seqn_t *
702 rte_event_pmd_selftest_seqn(struct rte_mbuf *mbuf)
704 return RTE_MBUF_DYNFIELD(mbuf,
705 rte_event_pmd_selftest_seqn_dynfield_offset,
706 rte_event_pmd_selftest_seqn_t *);
709 struct rte_cryptodev;
712 * This API may change without prior notice
714 * Retrieve the event device's crypto adapter capabilities for the
715 * specified cryptodev
718 * Event device pointer
724 * A pointer to memory filled with event adapter capabilities.
725 * It is expected to be pre-allocated & initialized by caller.
728 * - 0: Success, driver provides event adapter capabilities for the
730 * - <0: Error code returned by the driver function.
733 typedef int (*eventdev_crypto_adapter_caps_get_t)
734 (const struct rte_eventdev *dev,
735 const struct rte_cryptodev *cdev,
739 * This API may change without prior notice
741 * Add crypto queue pair to event device. This callback is invoked if
742 * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
743 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
746 * Event device pointer
751 * @param queue_pair_id
752 * cryptodev queue pair identifier.
755 * Event information required for binding cryptodev queue pair to event queue.
756 * This structure will have a valid value for only those HW PMDs supporting
757 * @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability.
760 * - 0: Success, cryptodev queue pair added successfully.
761 * - <0: Error code returned by the driver function.
764 typedef int (*eventdev_crypto_adapter_queue_pair_add_t)
765 (const struct rte_eventdev *dev,
766 const struct rte_cryptodev *cdev,
767 int32_t queue_pair_id,
768 const struct rte_event *event);
772 * This API may change without prior notice
774 * Delete crypto queue pair to event device. This callback is invoked if
775 * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id)
776 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set.
779 * Event device pointer
784 * @param queue_pair_id
785 * cryptodev queue pair identifier.
788 * - 0: Success, cryptodev queue pair deleted successfully.
789 * - <0: Error code returned by the driver function.
792 typedef int (*eventdev_crypto_adapter_queue_pair_del_t)
793 (const struct rte_eventdev *dev,
794 const struct rte_cryptodev *cdev,
795 int32_t queue_pair_id);
798 * Start crypto adapter. This callback is invoked if
799 * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
800 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
801 * from cdev_id have been added to the event device.
804 * Event device pointer
807 * Crypto device pointer
810 * - 0: Success, crypto adapter started successfully.
811 * - <0: Error code returned by the driver function.
813 typedef int (*eventdev_crypto_adapter_start_t)
814 (const struct rte_eventdev *dev,
815 const struct rte_cryptodev *cdev);
818 * Stop crypto adapter. This callback is invoked if
819 * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id)
820 * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs
821 * from cdev_id have been added to the event device.
824 * Event device pointer
827 * Crypto device pointer
830 * - 0: Success, crypto adapter stopped successfully.
831 * - <0: Error code returned by the driver function.
833 typedef int (*eventdev_crypto_adapter_stop_t)
834 (const struct rte_eventdev *dev,
835 const struct rte_cryptodev *cdev);
837 struct rte_event_crypto_adapter_stats;
840 * Retrieve crypto adapter statistics.
843 * Event device pointer
846 * Crypto device pointer
849 * Pointer to stats structure
852 * Return 0 on success.
855 typedef int (*eventdev_crypto_adapter_stats_get)
856 (const struct rte_eventdev *dev,
857 const struct rte_cryptodev *cdev,
858 struct rte_event_crypto_adapter_stats *stats);
861 * Reset crypto adapter statistics.
864 * Event device pointer
867 * Crypto device pointer
870 * Return 0 on success.
873 typedef int (*eventdev_crypto_adapter_stats_reset)
874 (const struct rte_eventdev *dev,
875 const struct rte_cryptodev *cdev);
878 * Retrieve the event device's eth Tx adapter capabilities.
881 * Event device pointer
884 * Ethernet device pointer
887 * A pointer to memory filled with eth Tx adapter capabilities.
890 * - 0: Success, driver provides eth Tx adapter capabilities
891 * - <0: Error code returned by the driver function.
894 typedef int (*eventdev_eth_tx_adapter_caps_get_t)
895 (const struct rte_eventdev *dev,
896 const struct rte_eth_dev *eth_dev,
900 * Create adapter callback.
906 * Event device pointer
910 * - <0: Error code on failure.
912 typedef int (*eventdev_eth_tx_adapter_create_t)(uint8_t id,
913 const struct rte_eventdev *dev);
916 * Free adapter callback.
922 * Event device pointer
926 * - <0: Error code on failure.
928 typedef int (*eventdev_eth_tx_adapter_free_t)(uint8_t id,
929 const struct rte_eventdev *dev);
932 * Add a Tx queue to the adapter.
933 * A queue value of -1 is used to indicate all
934 * queues within the device.
940 * Event device pointer
943 * Ethernet device pointer
946 * Transmit queue index
950 * - <0: Error code on failure.
952 typedef int (*eventdev_eth_tx_adapter_queue_add_t)(
954 const struct rte_eventdev *dev,
955 const struct rte_eth_dev *eth_dev,
956 int32_t tx_queue_id);
959 * Delete a Tx queue from the adapter.
960 * A queue value of -1 is used to indicate all
961 * queues within the device, that have been added to this
968 * Event device pointer
971 * Ethernet device pointer
974 * Transmit queue index
977 * - 0: Success, Queues deleted successfully.
978 * - <0: Error code on failure.
980 typedef int (*eventdev_eth_tx_adapter_queue_del_t)(
982 const struct rte_eventdev *dev,
983 const struct rte_eth_dev *eth_dev,
984 int32_t tx_queue_id);
993 * Event device pointer
996 * - 0: Success, Adapter started correctly.
997 * - <0: Error code on failure.
999 typedef int (*eventdev_eth_tx_adapter_start_t)(uint8_t id,
1000 const struct rte_eventdev *dev);
1006 * Adapter identifier
1009 * Event device pointer
1013 * - <0: Error code on failure.
1015 typedef int (*eventdev_eth_tx_adapter_stop_t)(uint8_t id,
1016 const struct rte_eventdev *dev);
1018 struct rte_event_eth_tx_adapter_stats;
1021 * Retrieve statistics for an adapter
1024 * Adapter identifier
1027 * Event device pointer
1029 * @param [out] stats
1030 * A pointer to structure used to retrieve statistics for an adapter
1033 * - 0: Success, statistics retrieved successfully.
1034 * - <0: Error code on failure.
1036 typedef int (*eventdev_eth_tx_adapter_stats_get_t)(
1038 const struct rte_eventdev *dev,
1039 struct rte_event_eth_tx_adapter_stats *stats);
1042 * Reset statistics for an adapter
1045 * Adapter identifier
1048 * Event device pointer
1051 * - 0: Success, statistics retrieved successfully.
1052 * - <0: Error code on failure.
1054 typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id,
1055 const struct rte_eventdev *dev);
1057 /** Event device operations function pointer table */
1058 struct eventdev_ops {
1059 eventdev_info_get_t dev_infos_get; /**< Get device info. */
1060 eventdev_configure_t dev_configure; /**< Configure device. */
1061 eventdev_start_t dev_start; /**< Start device. */
1062 eventdev_stop_t dev_stop; /**< Stop device. */
1063 eventdev_close_t dev_close; /**< Close device. */
1065 eventdev_queue_default_conf_get_t queue_def_conf;
1066 /**< Get default queue configuration. */
1067 eventdev_queue_setup_t queue_setup;
1068 /**< Set up an event queue. */
1069 eventdev_queue_release_t queue_release;
1070 /**< Release an event queue. */
1072 eventdev_port_default_conf_get_t port_def_conf;
1073 /**< Get default port configuration. */
1074 eventdev_port_setup_t port_setup;
1075 /**< Set up an event port. */
1076 eventdev_port_release_t port_release;
1077 /**< Release an event port. */
1079 eventdev_port_link_t port_link;
1080 /**< Link event queues to an event port. */
1081 eventdev_port_unlink_t port_unlink;
1082 /**< Unlink event queues from an event port. */
1083 eventdev_port_unlinks_in_progress_t port_unlinks_in_progress;
1084 /**< Unlinks in progress on an event port. */
1085 eventdev_dequeue_timeout_ticks_t timeout_ticks;
1086 /**< Converts ns to *timeout_ticks* value for rte_event_dequeue() */
1087 eventdev_dump_t dump;
1088 /* Dump internal information */
1090 eventdev_xstats_get_t xstats_get;
1091 /**< Get extended device statistics. */
1092 eventdev_xstats_get_names_t xstats_get_names;
1093 /**< Get names of extended stats. */
1094 eventdev_xstats_get_by_name xstats_get_by_name;
1095 /**< Get one value by name. */
1096 eventdev_xstats_reset_t xstats_reset;
1097 /**< Reset the statistics values in xstats. */
1099 eventdev_eth_rx_adapter_caps_get_t eth_rx_adapter_caps_get;
1100 /**< Get ethernet Rx adapter capabilities */
1101 eventdev_eth_rx_adapter_queue_add_t eth_rx_adapter_queue_add;
1102 /**< Add Rx queues to ethernet Rx adapter */
1103 eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del;
1104 /**< Delete Rx queues from ethernet Rx adapter */
1105 eventdev_eth_rx_adapter_queue_conf_get_t eth_rx_adapter_queue_conf_get;
1106 /**< Get Rx adapter queue info */
1107 eventdev_eth_rx_adapter_start_t eth_rx_adapter_start;
1108 /**< Start ethernet Rx adapter */
1109 eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop;
1110 /**< Stop ethernet Rx adapter */
1111 eventdev_eth_rx_adapter_stats_get eth_rx_adapter_stats_get;
1112 /**< Get ethernet Rx stats */
1113 eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset;
1114 /**< Reset ethernet Rx stats */
1115 eventdev_eth_rx_adapter_vector_limits_get_t
1116 eth_rx_adapter_vector_limits_get;
1117 /**< Get event vector limits for the Rx adapter */
1119 eventdev_timer_adapter_caps_get_t timer_adapter_caps_get;
1120 /**< Get timer adapter capabilities */
1122 eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get;
1123 /**< Get crypto adapter capabilities */
1124 eventdev_crypto_adapter_queue_pair_add_t crypto_adapter_queue_pair_add;
1125 /**< Add queue pair to crypto adapter */
1126 eventdev_crypto_adapter_queue_pair_del_t crypto_adapter_queue_pair_del;
1127 /**< Delete queue pair from crypto adapter */
1128 eventdev_crypto_adapter_start_t crypto_adapter_start;
1129 /**< Start crypto adapter */
1130 eventdev_crypto_adapter_stop_t crypto_adapter_stop;
1131 /**< Stop crypto adapter */
1132 eventdev_crypto_adapter_stats_get crypto_adapter_stats_get;
1133 /**< Get crypto stats */
1134 eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset;
1135 /**< Reset crypto stats */
1137 eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get;
1138 /**< Get ethernet Tx adapter capabilities */
1140 eventdev_eth_tx_adapter_create_t eth_tx_adapter_create;
1141 /**< Create adapter callback */
1142 eventdev_eth_tx_adapter_free_t eth_tx_adapter_free;
1143 /**< Free adapter callback */
1144 eventdev_eth_tx_adapter_queue_add_t eth_tx_adapter_queue_add;
1145 /**< Add Tx queues to the eth Tx adapter */
1146 eventdev_eth_tx_adapter_queue_del_t eth_tx_adapter_queue_del;
1147 /**< Delete Tx queues from the eth Tx adapter */
1148 eventdev_eth_tx_adapter_start_t eth_tx_adapter_start;
1149 /**< Start eth Tx adapter */
1150 eventdev_eth_tx_adapter_stop_t eth_tx_adapter_stop;
1151 /**< Stop eth Tx adapter */
1152 eventdev_eth_tx_adapter_stats_get_t eth_tx_adapter_stats_get;
1153 /**< Get eth Tx adapter statistics */
1154 eventdev_eth_tx_adapter_stats_reset_t eth_tx_adapter_stats_reset;
1155 /**< Reset eth Tx adapter statistics */
1157 eventdev_selftest dev_selftest;
1158 /**< Start eventdev Selftest */
1160 eventdev_stop_flush_t dev_stop_flush;
1161 /**< User-provided event flush function */
1165 * Allocates a new eventdev slot for an event device and returns the pointer
1166 * to that slot for the driver to use.
1169 * Unique identifier name for each device
1171 * Socket to allocate resources on.
1173 * - Slot in the rte_dev_devices array for a new device;
1176 struct rte_eventdev *
1177 rte_event_pmd_allocate(const char *name, int socket_id);
1180 * Release the specified eventdev device.
1183 * The *eventdev* pointer is the address of the *rte_eventdev* structure.
1185 * - 0 on success, negative on error
1189 rte_event_pmd_release(struct rte_eventdev *eventdev);
1191 #endif /* _RTE_EVENTDEV_PMD_H_ */