Added support to set and get runtime params for ML adapter. Signed-off-by: Srikanth Yalavarthi <syalavar...@marvell.com> --- lib/eventdev/rte_event_ml_adapter.c | 99 +++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+)
diff --git a/lib/eventdev/rte_event_ml_adapter.c b/lib/eventdev/rte_event_ml_adapter.c index 474aeb6325b..feb488f730a 100644 --- a/lib/eventdev/rte_event_ml_adapter.c +++ b/lib/eventdev/rte_event_ml_adapter.c @@ -1166,3 +1166,102 @@ rte_event_ml_adapter_stop(uint8_t id) { return emla_adapter_ctrl(id, 0); } + +#define DEFAULT_MAX_NB 128 + +int +rte_event_ml_adapter_runtime_params_init(struct rte_event_ml_adapter_runtime_params *params) +{ + if (params == NULL) + return -EINVAL; + + memset(params, 0, sizeof(*params)); + params->max_nb = DEFAULT_MAX_NB; + + return 0; +} + +static int +ml_adapter_cap_check(struct event_ml_adapter *adapter) +{ + uint32_t caps; + int ret; + + if (!adapter->nb_qps) + return -EINVAL; + + ret = rte_event_ml_adapter_caps_get(adapter->eventdev_id, adapter->next_mldev_id, &caps); + if (ret) { + RTE_EDEV_LOG_ERR("Failed to get adapter caps dev %" PRIu8 " cdev %" PRIu8, + adapter->eventdev_id, adapter->next_mldev_id); + return ret; + } + + if ((caps & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD) || + (caps & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW)) + return -ENOTSUP; + + return 0; +} + +int +rte_event_ml_adapter_runtime_params_set(uint8_t id, + struct rte_event_ml_adapter_runtime_params *params) +{ + struct event_ml_adapter *adapter; + int ret; + + if (!emla_valid_id(id)) { + RTE_EDEV_LOG_ERR("Invalid ML adapter id = %d", id); + return -EINVAL; + } + + if (params == NULL) { + RTE_EDEV_LOG_ERR("params pointer is NULL"); + return -EINVAL; + } + + adapter = emla_id_to_adapter(id); + if (adapter == NULL) + return -EINVAL; + + ret = ml_adapter_cap_check(adapter); + if (ret) + return ret; + + rte_spinlock_lock(&adapter->lock); + adapter->max_nb = params->max_nb; + rte_spinlock_unlock(&adapter->lock); + + return 0; +} + +int +rte_event_ml_adapter_runtime_params_get(uint8_t id, + struct rte_event_ml_adapter_runtime_params *params) +{ + struct event_ml_adapter *adapter; + int ret; + + if (!emla_valid_id(id)) { + RTE_EDEV_LOG_ERR("Invalid ML adapter id = %d", id); + return -EINVAL; + } + + if (params == NULL) { + RTE_EDEV_LOG_ERR("params pointer is NULL"); + return -EINVAL; + } + + adapter = emla_id_to_adapter(id); + if (adapter == NULL) + return -EINVAL; + + ret = ml_adapter_cap_check(adapter); + if (ret) + return ret; + + params->max_nb = adapter->max_nb; + + return 0; +} -- 2.42.0