> Subject: [dpdk-dev] [PATCH] net/mlx5: fix shared RSS action update
> 
> The shared RSS action update was not operational due to lack of kernel driver
> support of TIR object modification.
> This commit introduces the workaround to support shared RSS action modify
> using an indirect queue table update instead of touching TIR object directly.
> Limitations: the only supported RSS property to update is queues, the rest of
> the properties ignored.
> 
> Fixes: d2046c09aa64 ("net/mlx5: support shared action for RSS")
> 
> Signed-off-by: Andrey Vesnovaty <andr...@nvidia.com>
> ---
>  drivers/net/mlx5/mlx5.h         |   8 +-
>  drivers/net/mlx5/mlx5_devx.c    |  84 +++++++++++++++--
>  drivers/net/mlx5/mlx5_flow.h    |   4 +-
>  drivers/net/mlx5/mlx5_flow_dv.c | 103 ++++++++++++---------
>  drivers/net/mlx5/mlx5_rxq.c     | 159 +++++++++++++++++++++++++++-----
>  drivers/net/mlx5/mlx5_rxtx.h    |   6 ++
>  6 files changed, 283 insertions(+), 81 deletions(-)
> 

<snip>

> +11528,14 @@ __flow_dv_action_rss_release(struct rte_eth_dev *dev,
> uint32_t idx,
>                                         RTE_FLOW_ERROR_TYPE_ACTION,
>                                         NULL,
>                                         "shared rss hrxq has references");
> +     queue = shared_rss->ind_tbl->queues;
> +     remaining = mlx5_ind_table_obj_release(dev, shared_rss->ind_tbl,
> true);
> +     if (remaining)
> +             return rte_flow_error_set(error, ETOOMANYREFS,
> +                                       RTE_FLOW_ERROR_TYPE_ACTION,
> +                                       NULL,
> +                                       "shared rss indirection table has"
> +                                       " references");

Please do not use ETOOMANYREFS, the API errno was changed to EBUSY.

>       if (!__atomic_compare_exchange_n(&shared_rss->refcnt,
> &old_refcnt,
>                                        0, 0, __ATOMIC_ACQUIRE,
>                                        __ATOMIC_RELAXED))


</snip>

> --
> 2.26.2

Reply via email to