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

From: Simon Horman <[email-masked]>
Date: Fri, 10 Feb 2023 14:25:54 +0100

On Fri, Feb 10, 2023 at 04:40:48PM +0530, Hariprasad Kelam wrote:
> From: Naveen Mamindlapalli <[email-masked]>
> 
> 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 <[email-masked]>
> Co-developed-by: Rahul Rameshbabu <[email-masked]>
> Signed-off-by: Rahul Rameshbabu <[email-masked]>
> Signed-off-by: Hariprasad Kelam <[email-masked]>
> Signed-off-by: Sunil Kovvuri Goutham <[email-masked]>
> ---
>  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.

...