]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/infiniband/hw/mlx4/main.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / infiniband / hw / mlx4 / main.c
index 30e09caf0da95af71ce17e4017eaefb13db6cb7d..c7a6213c6996df1202f9b42b4011a348f992fbb3 100644 (file)
@@ -623,8 +623,9 @@ static int mlx4_ib_mcg_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
        struct mlx4_ib_dev *mdev = to_mdev(ibqp->device);
        struct mlx4_ib_qp *mqp = to_mqp(ibqp);
 
-       err = mlx4_multicast_attach(mdev->dev, &mqp->mqp, gid->raw, !!(mqp->flags &
-                                   MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK));
+       err = mlx4_multicast_attach(mdev->dev, &mqp->mqp, gid->raw,
+                                   !!(mqp->flags & MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK),
+                                   MLX4_PROTOCOL_IB);
        if (err)
                return err;
 
@@ -635,7 +636,7 @@ static int mlx4_ib_mcg_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
        return 0;
 
 err_add:
-       mlx4_multicast_detach(mdev->dev, &mqp->mqp, gid->raw);
+       mlx4_multicast_detach(mdev->dev, &mqp->mqp, gid->raw, MLX4_PROTOCOL_IB);
        return err;
 }
 
@@ -665,7 +666,7 @@ static int mlx4_ib_mcg_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
        struct mlx4_ib_gid_entry *ge;
 
        err = mlx4_multicast_detach(mdev->dev,
-                                   &mqp->mqp, gid->raw);
+                                   &mqp->mqp, gid->raw, MLX4_PROTOCOL_IB);
        if (err)
                return err;
 
@@ -848,8 +849,8 @@ static int update_ipv6_gids(struct mlx4_ib_dev *dev, int port, int clear)
                goto out;
        }
 
-       read_lock(&dev_base_lock);
-       for_each_netdev(&init_net, tmp) {
+       rcu_read_lock();
+       for_each_netdev_rcu(&init_net, tmp) {
                if (ndev && (tmp == ndev || rdma_vlan_dev_real_dev(tmp) == ndev)) {
                        gid.global.subnet_prefix = cpu_to_be64(0xfe80000000000000LL);
                        vid = rdma_vlan_dev_vlan_id(tmp);
@@ -884,7 +885,7 @@ static int update_ipv6_gids(struct mlx4_ib_dev *dev, int port, int clear)
                        }
                }
        }
-       read_unlock(&dev_base_lock);
+       rcu_read_unlock();
 
        for (i = 0; i < 128; ++i)
                if (!hits[i]) {
@@ -1005,7 +1006,8 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
        if (mlx4_uar_alloc(dev, &ibdev->priv_uar))
                goto err_pd;
 
-       ibdev->uar_map = ioremap(ibdev->priv_uar.pfn << PAGE_SHIFT, PAGE_SIZE);
+       ibdev->uar_map = ioremap((phys_addr_t) ibdev->priv_uar.pfn << PAGE_SHIFT,
+                                PAGE_SIZE);
        if (!ibdev->uar_map)
                goto err_uar;
        MLX4_INIT_DOORBELL_LOCK(&ibdev->uar_lock);