Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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;