|
@@ -543,14 +543,21 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
|
|
|
{
|
|
|
static int mlx4_ib_version_printed;
|
|
|
struct mlx4_ib_dev *ibdev;
|
|
|
+ int num_ports = 0;
|
|
|
int i;
|
|
|
|
|
|
-
|
|
|
if (!mlx4_ib_version_printed) {
|
|
|
printk(KERN_INFO "%s", mlx4_ib_version);
|
|
|
++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);
|
|
|
if (!ibdev) {
|
|
|
dev_err(&dev->pdev->dev, "Device struct alloc failed\n");
|
|
@@ -574,9 +581,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
|
|
|
ibdev->ib_dev.owner = THIS_MODULE;
|
|
|
ibdev->ib_dev.node_type = RDMA_NODE_IB_CA;
|
|
|
ibdev->ib_dev.local_dma_lkey = dev->caps.reserved_lkey;
|
|
|
- ibdev->num_ports = 0;
|
|
|
- mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
|
|
|
- ibdev->num_ports++;
|
|
|
+ ibdev->num_ports = 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.dma_device = &dev->pdev->dev;
|