Added library function to get ML adapter capabilities. Signed-off-by: Srikanth Yalavarthi <syalavar...@marvell.com> --- lib/eventdev/eventdev_pmd.h | 29 +++++++++++++++++++++++++++++ lib/eventdev/rte_eventdev.c | 27 +++++++++++++++++++++++++++ 2 files changed, 56 insertions(+)
diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h index 1790587808a..94d505753dc 100644 --- a/lib/eventdev/eventdev_pmd.h +++ b/lib/eventdev/eventdev_pmd.h @@ -84,6 +84,8 @@ extern "C" { #define RTE_EVENT_TIMER_ADAPTER_SW_CAP \ RTE_EVENT_TIMER_ADAPTER_CAP_PERIODIC +#define RTE_EVENT_ML_ADAPTER_SW_CAP 0x0 + #define RTE_EVENTDEV_DETACHED (0) #define RTE_EVENTDEV_ATTACHED (1) @@ -1522,6 +1524,30 @@ typedef int (*eventdev_dma_adapter_stats_get)(const struct rte_eventdev *dev, typedef int (*eventdev_dma_adapter_stats_reset)(const struct rte_eventdev *dev, const int16_t dma_dev_id); +struct rte_ml_dev; + +/** + * Retrieve the event device's ML adapter capabilities for the + * specified MLDEV + * + * @param dev + * Event device pointer + * + * @param mldev + * ML device pointer + * + * @param[out] caps + * A pointer to memory filled with event adapter capabilities. + * It is expected to be pre-allocated & initialized by caller. + * + * @return + * - 0: Success, driver provides event adapter capabilities for the + * MLDEV. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_ml_adapter_caps_get_t)(const struct rte_eventdev *dev, + const struct rte_ml_dev *mldev, uint32_t *caps); /** Event device operations function pointer table */ struct eventdev_ops { @@ -1662,6 +1688,9 @@ struct eventdev_ops { eventdev_dma_adapter_stats_reset dma_adapter_stats_reset; /**< Reset DMA stats */ + eventdev_ml_adapter_caps_get_t ml_adapter_caps_get; + /**< Get ML adapter capabilities */ + eventdev_selftest dev_selftest; /**< Start eventdev Selftest */ diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c index 157752868d5..7fbc6f3d98a 100644 --- a/lib/eventdev/rte_eventdev.c +++ b/lib/eventdev/rte_eventdev.c @@ -22,6 +22,7 @@ #include <rte_cryptodev.h> #include <rte_dmadev.h> #include <cryptodev_pmd.h> +#include <rte_mldev_pmd.h> #include <rte_telemetry.h> #include "rte_eventdev.h" @@ -249,6 +250,32 @@ rte_event_dma_adapter_caps_get(uint8_t dev_id, uint8_t dma_dev_id, uint32_t *cap return 0; } +int +rte_event_ml_adapter_caps_get(uint8_t evdev_id, int16_t mldev_id, uint32_t *caps) +{ + struct rte_eventdev *dev; + struct rte_ml_dev *mldev; + + RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(evdev_id, -EINVAL); + if (!rte_ml_dev_is_valid_dev(mldev_id)) + return -EINVAL; + + dev = &rte_eventdevs[evdev_id]; + mldev = rte_ml_dev_pmd_get_dev(mldev_id); + + if (caps == NULL) + return -EINVAL; + + if (dev->dev_ops->ml_adapter_caps_get == NULL) + *caps = RTE_EVENT_ML_ADAPTER_SW_CAP; + else + *caps = 0; + + return dev->dev_ops->ml_adapter_caps_get ? + (*dev->dev_ops->ml_adapter_caps_get)(dev, mldev, caps) : + 0; +} + static inline int event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues) { -- 2.42.0