[PATCH net 1/6] net/mlx5: Fix multiport device check over light SFs

Tariq Toukan posted 6 patches 1 month, 2 weeks ago
[PATCH net 1/6] net/mlx5: Fix multiport device check over light SFs
Posted by Tariq Toukan 1 month, 2 weeks ago
From: Shay Drory <shayd@nvidia.com>

Driver is using num_vhca_ports capability to distinguish between
multiport master device and multiport slave device. num_vhca_ports is a
capability the driver sets according to the MAX num_vhca_ports
capability reported by FW. On the other hand, light SFs doesn't set the
above capbility.

This leads to wrong results whenever light SFs is checking whether he is
a multiport master or slave.

Therefore, use the MAX capability to distinguish between master and
slave devices.

Fixes: e71383fb9cd1 ("net/mlx5: Light probe local SFs")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
 include/linux/mlx5/driver.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index 1c54aa6f74fb..1967d1c79139 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -1281,12 +1281,12 @@ static inline bool mlx5_rl_is_supported(struct mlx5_core_dev *dev)
 static inline int mlx5_core_is_mp_slave(struct mlx5_core_dev *dev)
 {
 	return MLX5_CAP_GEN(dev, affiliate_nic_vport_criteria) &&
-	       MLX5_CAP_GEN(dev, num_vhca_ports) <= 1;
+	       MLX5_CAP_GEN_MAX(dev, num_vhca_ports) <= 1;
 }
 
 static inline int mlx5_core_is_mp_master(struct mlx5_core_dev *dev)
 {
-	return MLX5_CAP_GEN(dev, num_vhca_ports) > 1;
+	return MLX5_CAP_GEN_MAX(dev, num_vhca_ports) > 1;
 }
 
 static inline int mlx5_core_mp_enabled(struct mlx5_core_dev *dev)
-- 
2.44.0
Re: [PATCH net 1/6] net/mlx5: Fix multiport device check over light SFs
Posted by Jacob Keller 1 month, 2 weeks ago

On 2/12/2026 2:32 AM, Tariq Toukan wrote:
> From: Shay Drory <shayd@nvidia.com>
> 
> Driver is using num_vhca_ports capability to distinguish between
> multiport master device and multiport slave device. num_vhca_ports is a
> capability the driver sets according to the MAX num_vhca_ports
> capability reported by FW. On the other hand, light SFs doesn't set the
> above capbility.
> 
> This leads to wrong results whenever light SFs is checking whether he is
> a multiport master or slave.
> 
> Therefore, use the MAX capability to distinguish between master and
> slave devices.
> 

So we were previously checking the number of VHCA ports, but since SFs 
set this to 0, they would always be ported as mp_slave, even though they 
should be mp_master.

Makes sense.

Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>