On Tue, May 24, 2022 at 2:13 PM Harman Kalra <hka...@marvell.com> wrote:
>
> Segmentation fault is observed as soon as any dpdk application
> with ethdev event is launched. Handling the event types
> appropriately.
>
> Also fixing sub event type violation as in OCTEONTX event device we
> use sub_event_type to store the ethernet port identifier when we receive
> work from OCTEONTX ethernet device. This violates the event device spec
> as sub_event_type should be 0 in the initial receive stage.
> Set sub_event_type to 0 after copying the port id in single workslot
> mode.
>
> Fixes: 8dc6c2f12ecf ("crypto/octeontx: add crypto adapter data path")


Updated the git commit as follows and applied to
dpdk-next-net-eventdev/for-main. Thanks

    event/octeontx: fix SSO fastpath

    Segmentation fault is observed as soon as any  application
    with ethdev event is launched as ev->mbuf was not set properly.

    Fixing sub event type violation as in OCTEONTX event device
    sub_event_type is used to store the ethernet port identifier
    when work is received from OCTEONTX ethernet device. This violates
    the event device spec as sub_event_type should be 0 in the initial
    receive stage. Setting sub_event_type to 0 after copying the port id
    in single workslot mode.

    Fixes: 44a2cebbd489 ("crypto/octeontx: add crypto adapter data path")
    Cc: sta...@dpdk.org

    Signed-off-by: Harman Kalra <hka...@marvell.com>
    Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com>


>
> Signed-off-by: Harman Kalra <hka...@marvell.com>
> Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com>
> ---
> V3:
>  * fixing sub event type violation
> V2:
>  * Seperated out a generic patch from the series
>
>  drivers/event/octeontx/ssovf_worker.h | 24 +++++++++++++++---------
>  1 file changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/event/octeontx/ssovf_worker.h 
> b/drivers/event/octeontx/ssovf_worker.h
> index e6ee292688..57be476394 100644
> --- a/drivers/event/octeontx/ssovf_worker.h
> +++ b/drivers/event/octeontx/ssovf_worker.h
> @@ -179,16 +179,22 @@ ssows_get_work(struct ssows *ws, struct rte_event *ev, 
> const uint16_t flag)
>         ev->event = sched_type_queue | (get_work0 & 0xffffffff);
>
>         if (get_work1) {
> -               if (ev->event_type == RTE_EVENT_TYPE_ETHDEV)
> -                       get_work1 = (uintptr_t)ssovf_octeontx_wqe_to_pkt(
> -                               get_work1, (ev->event >> 20) & 0x7F, flag,
> -                               ws->lookup_mem);
> -               else if (ev->event_type == RTE_EVENT_TYPE_CRYPTODEV)
> +               if (ev->event_type == RTE_EVENT_TYPE_ETHDEV) {
> +                       uint16_t port = (ev->event >> 20) & 0x7F;
> +
> +                       ev->sub_event_type = 0;
> +                       ev->mbuf = ssovf_octeontx_wqe_to_pkt(
> +                               get_work1, port, flag, ws->lookup_mem);
> +               } else if (ev->event_type == RTE_EVENT_TYPE_CRYPTODEV) {
>                         get_work1 = otx_crypto_adapter_dequeue(get_work1);
> -               ev->u64 = get_work1;
> -       } else if (unlikely((get_work0 & 0xFFFFFFFF) == 0xFFFFFFFF)) {
> -               ssovf_octeontx_wqe_free(get_work1);
> -               return 0;
> +                       ev->u64 = get_work1;
> +               } else {
> +                       if (unlikely((get_work0 & 0xFFFFFFFF) == 0xFFFFFFFF)) 
> {
> +                               ssovf_octeontx_wqe_free(get_work1);
> +                               return 0;
> +                       }
> +                       ev->u64 = get_work1;
> +               }
>         }
>
>         return !!get_work1;
> --
> 2.18.0
>

Reply via email to