Re: [net-next Patch V4 1/4] sch_htb: Allow HTB priority parameter in offload mode

From: Simon Horman
Date: Fri Feb 10 2023 - 08:26:13 EST


On Fri, Feb 10, 2023 at 04:40:48PM +0530, Hariprasad Kelam wrote:
> From: Naveen Mamindlapalli <naveenm@xxxxxxxxxxx>
>
> The current implementation of HTB offload returns the EINVAL error
> for unsupported parameters like prio and quantum. This patch removes
> the error returning checks for 'prio' parameter and populates its
> value to tc_htb_qopt_offload structure such that driver can use the
> same.
>
> Add prio parameter check in mlx5 driver, as mlx5 devices are not capable
> of supporting the prio parameter when htb offload is used. Report error
> if prio parameter is set to a non-default value.
>
> Signed-off-by: Naveen Mamindlapalli <naveenm@xxxxxxxxxxx>
> Co-developed-by: Rahul Rameshbabu <rrameshbabu@xxxxxxxxxx>
> Signed-off-by: Rahul Rameshbabu <rrameshbabu@xxxxxxxxxx>
> Signed-off-by: Hariprasad Kelam <hkelam@xxxxxxxxxxx>
> Signed-off-by: Sunil Kovvuri Goutham <sgoutham@xxxxxxxxxxx>
> ---
> drivers/net/ethernet/mellanox/mlx5/core/en/qos.c | 7 ++++++-
> include/net/pkt_cls.h | 1 +
> net/sched/sch_htb.c | 7 +++----
> 3 files changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c
> index 2842195ee548..b683dc787827 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/qos.c
> @@ -379,6 +379,12 @@ int mlx5e_htb_setup_tc(struct mlx5e_priv *priv, struct tc_htb_qopt_offload *htb_
> if (!htb && htb_qopt->command != TC_HTB_CREATE)
> return -EINVAL;
>
> + if (htb_qopt->prio) {
> + NL_SET_ERR_MSG_MOD(htb_qopt->extack,
> + "prio parameter is not supported by device with HTB offload enabled.");
> + return -EINVAL;

I think returning -EOPNOTSUPP would be more appropriate here.

> + }
> +
> switch (htb_qopt->command) {
> case TC_HTB_CREATE:
> if (!mlx5_qos_is_supported(priv->mdev)) {
> @@ -515,4 +521,3 @@ int mlx5e_mqprio_rl_get_node_hw_id(struct mlx5e_mqprio_rl *rl, int tc, u32 *hw_i
> *hw_id = rl->leaves_id[tc];
> return 0;
> }
> -

nit: This is a good cleanup. But not strictly related to this patch.

...