Commit 4b83c3ca authored by Mark Bloch's avatar Mark Bloch Committed by Leon Romanovsky

RDMA/mlx5: Use the proper number of ports

The cited commit allowed the driver to operate over HCAs that have
4 physical ports. Use the number of ports of the RDMA device in the for
loop instead of using the struct size.

Fixes: 4cd14d44 ("net/mlx5: Support devices with more than 2 ports")
Link: https://lore.kernel.org/r/a54a56c2ede16044a29d119209b35189c662ac72.1659944855.git.leonro@nvidia.comSigned-off-by: default avatarMark Bloch <mbloch@nvidia.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent d6d142cb
...@@ -2738,26 +2738,24 @@ static int set_has_smi_cap(struct mlx5_ib_dev *dev) ...@@ -2738,26 +2738,24 @@ static int set_has_smi_cap(struct mlx5_ib_dev *dev)
int err; int err;
int port; int port;
for (port = 1; port <= ARRAY_SIZE(dev->port_caps); port++) { if (MLX5_CAP_GEN(dev->mdev, port_type) != MLX5_CAP_PORT_TYPE_IB)
dev->port_caps[port - 1].has_smi = false; return 0;
if (MLX5_CAP_GEN(dev->mdev, port_type) ==
MLX5_CAP_PORT_TYPE_IB) { for (port = 1; port <= dev->num_ports; port++) {
if (MLX5_CAP_GEN(dev->mdev, ib_virt)) { if (!MLX5_CAP_GEN(dev->mdev, ib_virt)) {
err = mlx5_query_hca_vport_context(dev->mdev, 0, dev->port_caps[port - 1].has_smi = true;
port, 0, continue;
}
err = mlx5_query_hca_vport_context(dev->mdev, 0, port, 0,
&vport_ctx); &vport_ctx);
if (err) { if (err) {
mlx5_ib_err(dev, "query_hca_vport_context for port=%d failed %d\n", mlx5_ib_err(dev, "query_hca_vport_context for port=%d failed %d\n",
port, err); port, err);
return err; return err;
} }
dev->port_caps[port - 1].has_smi = dev->port_caps[port - 1].has_smi = vport_ctx.has_smi;
vport_ctx.has_smi;
} else {
dev->port_caps[port - 1].has_smi = true;
}
}
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment