Implemented ML adapter dequeue function. Signed-off-by: Srikanth Yalavarthi <syalavar...@marvell.com> --- drivers/event/cnxk/cn10k_worker.h | 3 +++ drivers/ml/cnxk/cn10k_ml_event_dp.h | 2 ++ drivers/ml/cnxk/cn10k_ml_ops.c | 17 +++++++++++++++++ drivers/ml/cnxk/version.map | 1 + 4 files changed, 23 insertions(+)
diff --git a/drivers/event/cnxk/cn10k_worker.h b/drivers/event/cnxk/cn10k_worker.h index 8aa916fa129..1a0ca7f9493 100644 --- a/drivers/event/cnxk/cn10k_worker.h +++ b/drivers/event/cnxk/cn10k_worker.h @@ -7,6 +7,7 @@ #include <rte_eventdev.h> #include "cn10k_cryptodev_event_dp.h" +#include "cn10k_ml_event_dp.h" #include "cn10k_rx.h" #include "cnxk_worker.h" #include "cn10k_eventdev.h" @@ -236,6 +237,8 @@ cn10k_sso_hws_post_process(struct cn10k_sso_hws *ws, uint64_t *u64, /* Mark vector mempool object as get */ RTE_MEMPOOL_CHECK_COOKIES(rte_mempool_from_obj((void *)u64[1]), (void **)&u64[1], 1, 1); + } else if (CNXK_EVENT_TYPE_FROM_TAG(u64[0]) == RTE_EVENT_TYPE_MLDEV) { + u64[1] = cn10k_ml_adapter_dequeue(u64[1]); } } diff --git a/drivers/ml/cnxk/cn10k_ml_event_dp.h b/drivers/ml/cnxk/cn10k_ml_event_dp.h index bf7fc57bceb..0ff92091296 100644 --- a/drivers/ml/cnxk/cn10k_ml_event_dp.h +++ b/drivers/ml/cnxk/cn10k_ml_event_dp.h @@ -12,5 +12,7 @@ __rte_internal __rte_hot uint16_t cn10k_ml_adapter_enqueue(void *ws, struct rte_event ev[], uint16_t nb_events); +__rte_internal +__rte_hot uintptr_t cn10k_ml_adapter_dequeue(uintptr_t get_work1); #endif /* _CN10K_ML_EVENT_DP_H_ */ diff --git a/drivers/ml/cnxk/cn10k_ml_ops.c b/drivers/ml/cnxk/cn10k_ml_ops.c index 4bc17eaa8c4..c33a7a85987 100644 --- a/drivers/ml/cnxk/cn10k_ml_ops.c +++ b/drivers/ml/cnxk/cn10k_ml_ops.c @@ -1660,3 +1660,20 @@ cn10k_ml_adapter_enqueue(void *ws, struct rte_event ev[], uint16_t nb_events) return count; } + +__rte_hot uintptr_t +cn10k_ml_adapter_dequeue(uintptr_t get_work1) +{ + struct cnxk_ml_dev *cnxk_mldev; + struct cnxk_ml_req *req; + struct cnxk_ml_qp *qp; + + req = (struct cnxk_ml_req *)(get_work1); + cnxk_mldev = req->cnxk_mldev; + qp = cnxk_mldev->mldev->data->queue_pairs[req->qp_id]; + + cn10k_ml_result_update(cnxk_mldev, req->qp_id, req); + rte_mempool_put(qp->mla.req_mp, req); + + return (uintptr_t)req->op; +} diff --git a/drivers/ml/cnxk/version.map b/drivers/ml/cnxk/version.map index c2cacaf8c65..97c2c149998 100644 --- a/drivers/ml/cnxk/version.map +++ b/drivers/ml/cnxk/version.map @@ -2,6 +2,7 @@ INTERNAL { global: cn10k_ml_adapter_enqueue; + cn10k_ml_adapter_dequeue; local: *; }; -- 2.42.0