OSDN Git Service

IB/mlx4_ib: Adapt code to use caps.num_ports instead of a constant
authorMatan Barak <matanb@mellanox.com>
Wed, 19 Mar 2014 16:11:49 +0000 (18:11 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Mar 2014 20:18:29 +0000 (16:18 -0400)
Some code in the mlx4 IB driver stack assumed MLX4_MAX_PORTS ports.

Instead, we should only loop until the number of actual ports in i
the device, which is stored in dev->caps.num_ports.

Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/infiniband/hw/mlx4/main.c

index 1d1750e..2ff428b 100644 (file)
@@ -1546,7 +1546,7 @@ static int mlx4_ib_addr_event(int event, struct net_device *event_netdev,
        iboe = &ibdev->iboe;
        spin_lock(&iboe->lock);
 
-       for (port = 1; port <= MLX4_MAX_PORTS; ++port)
+       for (port = 1; port <= ibdev->dev->caps.num_ports; ++port)
                if ((netif_is_bond_master(real_dev) &&
                     (real_dev == iboe->masters[port - 1])) ||
                     (!netif_is_bond_master(real_dev) &&
@@ -1569,14 +1569,14 @@ static u8 mlx4_ib_get_dev_port(struct net_device *dev,
 
        iboe = &ibdev->iboe;
 
-       for (port = 1; port <= MLX4_MAX_PORTS; ++port)
+       for (port = 1; port <= ibdev->dev->caps.num_ports; ++port)
                if ((netif_is_bond_master(real_dev) &&
                     (real_dev == iboe->masters[port - 1])) ||
                     (!netif_is_bond_master(real_dev) &&
                     (real_dev == iboe->netdevs[port - 1])))
                        break;
 
-       if ((port == 0) || (port > MLX4_MAX_PORTS))
+       if ((port == 0) || (port > ibdev->dev->caps.num_ports))
                return 0;
        else
                return port;
@@ -1626,7 +1626,7 @@ static void mlx4_ib_get_dev_addr(struct net_device *dev,
        union ib_gid gid;
 
 
-       if ((port == 0) || (port > MLX4_MAX_PORTS))
+       if ((port == 0) || (port > ibdev->dev->caps.num_ports))
                return;
 
        /* IPv4 gids */