On Sat, Nov 7, 2026 at 10:48 AM <[email protected]> wrote:
>
> From: Pavan Nikhilesh <[email protected]>
>
> Add an I/O write barrier after LMTST submissions in the new-event
> helper so the stores are ordered before the next iteration.
>
> Enqueue small bursts, below one LMT line of entries, event by event
> instead of using the LMTST path.
>
> Fixes: c3320d21b475 ("event/cnxk: use LMTST for enqueue new burst")
> Fixes: b08b193bceab ("event/cnxk: add CN20K SSO enqueue fast path")
>
> Signed-off-by: Pavan Nikhilesh <[email protected]>


Applied to dpdk-next-eventdev/for-main. Thanks

> ---
>  drivers/event/cnxk/cn10k_worker.c | 9 +++++++++
>  drivers/event/cnxk/cn20k_worker.c | 9 +++++++++
>  2 files changed, 18 insertions(+)
>
> diff --git a/drivers/event/cnxk/cn10k_worker.c 
> b/drivers/event/cnxk/cn10k_worker.c
> index f33c3a561a88..a8ddbc5d8bfb 100644
> --- a/drivers/event/cnxk/cn10k_worker.c
> +++ b/drivers/event/cnxk/cn10k_worker.c
> @@ -350,6 +350,8 @@ cn10k_sso_hws_new_event_lmtst(struct cn10k_sso_hws *ws, 
> uint8_t queue_id,
>                 roc_lmt_submit_steorl(wdata[1], pa[1]);
>         }
>
> +       rte_io_wmb();
> +
>         left -= (sz0 + sz1);
>         if (left)
>                 goto again;
> @@ -395,6 +397,13 @@ cn10k_sso_hws_enq_new_burst(void *port, const struct 
> rte_event ev[],
>         uint8_t queue_id;
>         int32_t space;
>
> +       if (nb_events < BIT(ROC_SSO_AW_PER_LMT_LINE_LOG2)) {
> +               for (idx = 0; idx < nb_events; idx++)
> +                       if (!cn10k_sso_hws_new_event(ws, &ev[idx]))
> +                               break;
> +               return idx;
> +       }
> +
>         /* Do a common back-pressure check and return */
>         space = sso_read_xaq_space(ws) - ws->xae_waes;
>         if (space <= 0)
> diff --git a/drivers/event/cnxk/cn20k_worker.c 
> b/drivers/event/cnxk/cn20k_worker.c
> index 8c1df3dbafc1..c15e3cd46ae7 100644
> --- a/drivers/event/cnxk/cn20k_worker.c
> +++ b/drivers/event/cnxk/cn20k_worker.c
> @@ -308,6 +308,8 @@ cn20k_sso_hws_new_event_lmtst(struct cn20k_sso_hws *ws, 
> uint8_t queue_id,
>                 roc_lmt_submit_steorl(wdata[1], pa[1]);
>         }
>
> +       rte_io_wmb();
> +
>         left -= (sz0 + sz1);
>         if (left)
>                 goto again;
> @@ -350,6 +352,13 @@ cn20k_sso_hws_enq_new_burst(void *port, const struct 
> rte_event ev[], uint16_t nb
>         uint8_t queue_id;
>         int32_t space;
>
> +       if (nb_events < BIT(ROC_SSO_AW_PER_LMT_LINE_LOG2)) {
> +               for (idx = 0; idx < nb_events; idx++)
> +                       if (!cn20k_sso_hws_new_event(ws, &ev[idx]))
> +                               break;
> +               return idx;
> +       }
> +
>         /* Do a common back-pressure check and return */
>         space = sso_read_xaq_space(ws) - ws->xae_waes;
>         if (space <= 0)
> --
> 2.50.1 (Apple Git-155)
>

Reply via email to