From: Pavan Nikhilesh <pbhagavat...@marvell.com> add preliminary Tx queue depth check and return on failure. Once the check passes, tx_adapter_enqueue() function becomes a blocking call till it succeeds.
Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com> --- drivers/event/cnxk/cn10k_worker.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/event/cnxk/cn10k_worker.h b/drivers/event/cnxk/cn10k_worker.h index 0915f404e0..a71e076ff8 100644 --- a/drivers/event/cnxk/cn10k_worker.h +++ b/drivers/event/cnxk/cn10k_worker.h @@ -655,6 +655,11 @@ cn10k_sso_hws_event_tx(struct cn10k_sso_hws *ws, struct rte_event *ev, } m = ev->mbuf; + txq = cn10k_sso_hws_xtract_meta(m, txq_data); + if (((txq->nb_sqb_bufs_adj - + __atomic_load_n((int16_t *)txq->fc_mem, __ATOMIC_RELAXED)) + << txq->sqes_per_sqb_log2) <= 0) + return 0; cn10k_sso_tx_one(ws, m, cmd, lmt_id, lmt_addr, ev->sched_type, txq_data, flags); -- 2.25.1