Commit 22e7ef9c authored by Roland Dreier's avatar Roland Dreier

IB/mlx4: Don't register IB device for adapters with no IB ports

If the mlx4_ib driver finds an adapter that has only ethernet ports, the
current code will register an IB device with 0 ports.  Nothing useful or
sensible can be done with such a device, so just skip registering it.
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 70cb9253
...@@ -543,14 +543,21 @@ static void *mlx4_ib_add(struct mlx4_dev *dev) ...@@ -543,14 +543,21 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
{ {
static int mlx4_ib_version_printed; static int mlx4_ib_version_printed;
struct mlx4_ib_dev *ibdev; struct mlx4_ib_dev *ibdev;
int num_ports = 0;
int i; int i;
if (!mlx4_ib_version_printed) { if (!mlx4_ib_version_printed) {
printk(KERN_INFO "%s", mlx4_ib_version); printk(KERN_INFO "%s", mlx4_ib_version);
++mlx4_ib_version_printed; ++mlx4_ib_version_printed;
} }
mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
num_ports++;
/* No point in registering a device with no ports... */
if (num_ports == 0)
return NULL;
ibdev = (struct mlx4_ib_dev *) ib_alloc_device(sizeof *ibdev); ibdev = (struct mlx4_ib_dev *) ib_alloc_device(sizeof *ibdev);
if (!ibdev) { if (!ibdev) {
dev_err(&dev->pdev->dev, "Device struct alloc failed\n"); dev_err(&dev->pdev->dev, "Device struct alloc failed\n");
...@@ -574,9 +581,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev) ...@@ -574,9 +581,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
ibdev->ib_dev.owner = THIS_MODULE; ibdev->ib_dev.owner = THIS_MODULE;
ibdev->ib_dev.node_type = RDMA_NODE_IB_CA; ibdev->ib_dev.node_type = RDMA_NODE_IB_CA;
ibdev->ib_dev.local_dma_lkey = dev->caps.reserved_lkey; ibdev->ib_dev.local_dma_lkey = dev->caps.reserved_lkey;
ibdev->num_ports = 0; ibdev->num_ports = num_ports;
mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
ibdev->num_ports++;
ibdev->ib_dev.phys_port_cnt = ibdev->num_ports; ibdev->ib_dev.phys_port_cnt = ibdev->num_ports;
ibdev->ib_dev.num_comp_vectors = dev->caps.num_comp_vectors; ibdev->ib_dev.num_comp_vectors = dev->caps.num_comp_vectors;
ibdev->ib_dev.dma_device = &dev->pdev->dev; ibdev->ib_dev.dma_device = &dev->pdev->dev;
......
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