[v1] event/cnxk: fix setting event attributes in empty get work
Checks
Commit Message
Even when no events are dequeued, it is important to update event
attributes as they provide valuable information for checking the work
slot state and other attributes.
Fixes: c0a9774f030d ("event/cnxk: move post-processing to separate function")
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
drivers/event/cnxk/cn10k_worker.h | 3 +++
drivers/event/cnxk/cn9k_worker.h | 6 ++++--
2 files changed, 7 insertions(+), 2 deletions(-)
Comments
> -----Original Message-----
> From: Shijith Thotton <sthotton@marvell.com>
> Sent: Thursday, April 27, 2023 11:58 AM
> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
> Cc: Shijith Thotton <sthotton@marvell.com>; dev@dpdk.org; Pavan
> Nikhilesh Bhagavatula <pbhagavatula@marvell.com>; stable@dpdk.org
> Subject: [PATCH v1] event/cnxk: fix setting event attributes in empty get
> work
>
> Even when no events are dequeued, it is important to update event
> attributes as they provide valuable information for checking the work
> slot state and other attributes.
>
> Fixes: c0a9774f030d ("event/cnxk: move post-processing to separate
> function")
>
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
> ---
> drivers/event/cnxk/cn10k_worker.h | 3 +++
> drivers/event/cnxk/cn9k_worker.h | 6 ++++--
> 2 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/event/cnxk/cn10k_worker.h
> b/drivers/event/cnxk/cn10k_worker.h
> index 06c71c6092..beae2be903 100644
> --- a/drivers/event/cnxk/cn10k_worker.h
> +++ b/drivers/event/cnxk/cn10k_worker.h
> @@ -282,6 +282,9 @@ cn10k_sso_hws_get_work_empty(struct
> cn10k_sso_hws *ws, struct rte_event *ev,
> ws->gw_rdata = gw.u64[0];
> if (gw.u64[1])
> cn10k_sso_hws_post_process(ws, gw.u64, flags);
> + else
> + gw.u64[0] = (gw.u64[0] & (0x3ull << 32)) << 6 |
> + (gw.u64[0] & (0x3FFull << 36)) << 4 | (gw.u64[0] &
> 0xffffffff);
>
> ev->event = gw.u64[0];
> ev->u64 = gw.u64[1];
> diff --git a/drivers/event/cnxk/cn9k_worker.h
> b/drivers/event/cnxk/cn9k_worker.h
> index 1ce4b044e8..47eea70b5f 100644
> --- a/drivers/event/cnxk/cn9k_worker.h
> +++ b/drivers/event/cnxk/cn9k_worker.h
> @@ -353,8 +353,10 @@ cn9k_sso_hws_get_work_empty(uint64_t base,
> struct rte_event *ev,
> #endif
>
> if (gw.u64[1])
> - cn9k_sso_hws_post_process(gw.u64, mbuf, flags,
> lookup_mem,
> - tstamp);
> + cn9k_sso_hws_post_process(gw.u64, mbuf, flags,
> lookup_mem, tstamp);
> + else
> + gw.u64[0] = (gw.u64[0] & (0x3ull << 32)) << 6 |
> + (gw.u64[0] & (0x3FFull << 36)) << 4 | (gw.u64[0] &
> 0xffffffff);
>
> ev->event = gw.u64[0];
> ev->u64 = gw.u64[1];
> --
> 2.25.1
On Thu, Apr 27, 2023 at 12:24 PM Pavan Nikhilesh Bhagavatula
<pbhagavatula@marvell.com> wrote:
>
>
>
> > -----Original Message-----
> > From: Shijith Thotton <sthotton@marvell.com>
> > Sent: Thursday, April 27, 2023 11:58 AM
> > To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
> > Cc: Shijith Thotton <sthotton@marvell.com>; dev@dpdk.org; Pavan
> > Nikhilesh Bhagavatula <pbhagavatula@marvell.com>; stable@dpdk.org
> > Subject: [PATCH v1] event/cnxk: fix setting event attributes in empty get
> > work
> >
> > Even when no events are dequeued, it is important to update event
> > attributes as they provide valuable information for checking the work
> > slot state and other attributes.
> >
> > Fixes: c0a9774f030d ("event/cnxk: move post-processing to separate
> > function")
> >
> > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
>
> Acked-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Applied to dpdk-next-net-eventdev/for-main. Thanks
>
> > ---
> > drivers/event/cnxk/cn10k_worker.h | 3 +++
> > drivers/event/cnxk/cn9k_worker.h | 6 ++++--
> > 2 files changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/event/cnxk/cn10k_worker.h
> > b/drivers/event/cnxk/cn10k_worker.h
> > index 06c71c6092..beae2be903 100644
> > --- a/drivers/event/cnxk/cn10k_worker.h
> > +++ b/drivers/event/cnxk/cn10k_worker.h
> > @@ -282,6 +282,9 @@ cn10k_sso_hws_get_work_empty(struct
> > cn10k_sso_hws *ws, struct rte_event *ev,
> > ws->gw_rdata = gw.u64[0];
> > if (gw.u64[1])
> > cn10k_sso_hws_post_process(ws, gw.u64, flags);
> > + else
> > + gw.u64[0] = (gw.u64[0] & (0x3ull << 32)) << 6 |
> > + (gw.u64[0] & (0x3FFull << 36)) << 4 | (gw.u64[0] &
> > 0xffffffff);
> >
> > ev->event = gw.u64[0];
> > ev->u64 = gw.u64[1];
> > diff --git a/drivers/event/cnxk/cn9k_worker.h
> > b/drivers/event/cnxk/cn9k_worker.h
> > index 1ce4b044e8..47eea70b5f 100644
> > --- a/drivers/event/cnxk/cn9k_worker.h
> > +++ b/drivers/event/cnxk/cn9k_worker.h
> > @@ -353,8 +353,10 @@ cn9k_sso_hws_get_work_empty(uint64_t base,
> > struct rte_event *ev,
> > #endif
> >
> > if (gw.u64[1])
> > - cn9k_sso_hws_post_process(gw.u64, mbuf, flags,
> > lookup_mem,
> > - tstamp);
> > + cn9k_sso_hws_post_process(gw.u64, mbuf, flags,
> > lookup_mem, tstamp);
> > + else
> > + gw.u64[0] = (gw.u64[0] & (0x3ull << 32)) << 6 |
> > + (gw.u64[0] & (0x3FFull << 36)) << 4 | (gw.u64[0] &
> > 0xffffffff);
> >
> > ev->event = gw.u64[0];
> > ev->u64 = gw.u64[1];
> > --
> > 2.25.1
>
@@ -282,6 +282,9 @@ cn10k_sso_hws_get_work_empty(struct cn10k_sso_hws *ws, struct rte_event *ev,
ws->gw_rdata = gw.u64[0];
if (gw.u64[1])
cn10k_sso_hws_post_process(ws, gw.u64, flags);
+ else
+ gw.u64[0] = (gw.u64[0] & (0x3ull << 32)) << 6 |
+ (gw.u64[0] & (0x3FFull << 36)) << 4 | (gw.u64[0] & 0xffffffff);
ev->event = gw.u64[0];
ev->u64 = gw.u64[1];
@@ -353,8 +353,10 @@ cn9k_sso_hws_get_work_empty(uint64_t base, struct rte_event *ev,
#endif
if (gw.u64[1])
- cn9k_sso_hws_post_process(gw.u64, mbuf, flags, lookup_mem,
- tstamp);
+ cn9k_sso_hws_post_process(gw.u64, mbuf, flags, lookup_mem, tstamp);
+ else
+ gw.u64[0] = (gw.u64[0] & (0x3ull << 32)) << 6 |
+ (gw.u64[0] & (0x3FFull << 36)) << 4 | (gw.u64[0] & 0xffffffff);
ev->event = gw.u64[0];
ev->u64 = gw.u64[1];