[PATCH net-next V2 2/2] net/mlx5e: Expose TIS via devlink tx reporter diagnose

Tariq Toukan posted 2 patches 2 months, 2 weeks ago
[PATCH net-next V2 2/2] net/mlx5e: Expose TIS via devlink tx reporter diagnose
Posted by Tariq Toukan 2 months, 2 weeks ago
From: Feng Liu <feliu@nvidia.com>

Underneath "TIS Config" tag expose TIS diagnostic information.
Expose the tisn of each TC under each lag port.

$ sudo devlink health diagnose auxiliary/mlx5_core.eth.2/131072 reporter tx
......
  TIS Config:
      lag port: 0 tc: 0 tisn: 0
      lag port: 1 tc: 0 tisn: 8
......

Signed-off-by: Feng Liu <feliu@nvidia.com>
Reviewed-by: Aya Levin <ayal@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 .../mellanox/mlx5/core/en/reporter_tx.c       | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
index bd96988e102c..85d5cb39b107 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
@@ -311,6 +311,30 @@ mlx5e_tx_reporter_diagnose_common_config(struct devlink_health_reporter *reporte
 	mlx5e_health_fmsg_named_obj_nest_end(fmsg);
 }
 
+static void
+mlx5e_tx_reporter_diagnose_tis_config(struct devlink_health_reporter *reporter,
+				      struct devlink_fmsg *fmsg)
+{
+	struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
+	u8 num_tc = mlx5e_get_dcb_num_tc(&priv->channels.params);
+	u32 tc, i, tisn;
+
+	devlink_fmsg_arr_pair_nest_start(fmsg, "TIS Config");
+	for (i = 0; i < mlx5e_get_num_lag_ports(priv->mdev); i++) {
+		for (tc = 0; tc < num_tc; tc++) {
+			tisn = mlx5e_profile_get_tisn(priv->mdev, priv,
+						      priv->profile, i, tc);
+
+			devlink_fmsg_obj_nest_start(fmsg);
+			devlink_fmsg_u32_pair_put(fmsg, "lag port", i);
+			devlink_fmsg_u32_pair_put(fmsg, "tc", tc);
+			devlink_fmsg_u32_pair_put(fmsg, "tisn", tisn);
+			devlink_fmsg_obj_nest_end(fmsg);
+		}
+	}
+	devlink_fmsg_arr_pair_nest_end(fmsg);
+}
+
 static int mlx5e_tx_reporter_diagnose(struct devlink_health_reporter *reporter,
 				      struct devlink_fmsg *fmsg,
 				      struct netlink_ext_ack *extack)
@@ -326,6 +350,7 @@ static int mlx5e_tx_reporter_diagnose(struct devlink_health_reporter *reporter,
 		goto unlock;
 
 	mlx5e_tx_reporter_diagnose_common_config(reporter, fmsg);
+	mlx5e_tx_reporter_diagnose_tis_config(reporter, fmsg);
 	devlink_fmsg_arr_pair_nest_start(fmsg, "SQs");
 
 	for (i = 0; i < priv->channels.num; i++) {
-- 
2.31.1
Re: [PATCH net-next V2 2/2] net/mlx5e: Expose TIS via devlink tx reporter diagnose
Posted by Michal Swiatkowski 2 months, 2 weeks ago
On Tue, Jul 22, 2025 at 05:23:48PM +0300, Tariq Toukan wrote:
> From: Feng Liu <feliu@nvidia.com>
> 
> Underneath "TIS Config" tag expose TIS diagnostic information.
> Expose the tisn of each TC under each lag port.
> 
> $ sudo devlink health diagnose auxiliary/mlx5_core.eth.2/131072 reporter tx
> ......
>   TIS Config:
>       lag port: 0 tc: 0 tisn: 0
>       lag port: 1 tc: 0 tisn: 8
> ......
> 
> Signed-off-by: Feng Liu <feliu@nvidia.com>
> Reviewed-by: Aya Levin <ayal@nvidia.com>
> Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
> ---
>  .../mellanox/mlx5/core/en/reporter_tx.c       | 25 +++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
> index bd96988e102c..85d5cb39b107 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c
> @@ -311,6 +311,30 @@ mlx5e_tx_reporter_diagnose_common_config(struct devlink_health_reporter *reporte
>  	mlx5e_health_fmsg_named_obj_nest_end(fmsg);
>  }
>  
> +static void
> +mlx5e_tx_reporter_diagnose_tis_config(struct devlink_health_reporter *reporter,
> +				      struct devlink_fmsg *fmsg)
> +{
> +	struct mlx5e_priv *priv = devlink_health_reporter_priv(reporter);
> +	u8 num_tc = mlx5e_get_dcb_num_tc(&priv->channels.params);
> +	u32 tc, i, tisn;
> +
> +	devlink_fmsg_arr_pair_nest_start(fmsg, "TIS Config");
> +	for (i = 0; i < mlx5e_get_num_lag_ports(priv->mdev); i++) {
> +		for (tc = 0; tc < num_tc; tc++) {

nit: tisn can be defined in this for, not outside.

> +			tisn = mlx5e_profile_get_tisn(priv->mdev, priv,
> +						      priv->profile, i, tc);
> +
> +			devlink_fmsg_obj_nest_start(fmsg);
> +			devlink_fmsg_u32_pair_put(fmsg, "lag port", i);
> +			devlink_fmsg_u32_pair_put(fmsg, "tc", tc);
> +			devlink_fmsg_u32_pair_put(fmsg, "tisn", tisn);
> +			devlink_fmsg_obj_nest_end(fmsg);
> +		}
> +	}
> +	devlink_fmsg_arr_pair_nest_end(fmsg);
> +}
> +
>  static int mlx5e_tx_reporter_diagnose(struct devlink_health_reporter *reporter,
>  				      struct devlink_fmsg *fmsg,
>  				      struct netlink_ext_ack *extack)
> @@ -326,6 +350,7 @@ static int mlx5e_tx_reporter_diagnose(struct devlink_health_reporter *reporter,
>  		goto unlock;
>  
>  	mlx5e_tx_reporter_diagnose_common_config(reporter, fmsg);
> +	mlx5e_tx_reporter_diagnose_tis_config(reporter, fmsg);
>  	devlink_fmsg_arr_pair_nest_start(fmsg, "SQs");
>  	for (i = 0; i < priv->channels.num; i++) {

Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>

> -- 
> 2.31.1