From: Jason Gunthorpe <jgg@mellanox.com>
Date: Mon, 29 Jan 2018 20:26:40 +0000 (-0700)
Subject: Merge tag v4.15 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2... 
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e7996a9a77fc669387da43ff4823b91cc4872bd0;p=linux.git

Merge tag v4.15 of git://git./linux/kernel/git/torvalds/linux-2.6.git

To resolve conflicts in:
 drivers/infiniband/hw/mlx5/main.c
 drivers/infiniband/hw/mlx5/qp.c

From patches merged into the -rc cycle. The conflict resolution matches
what linux-next has been carrying.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
---

e7996a9a77fc669387da43ff4823b91cc4872bd0
diff --cc drivers/infiniband/hw/mlx5/main.c
index 5007280321b6f,262c1aa2e028a..4236c80868200
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@@ -4706,38 -4111,8 +4708,39 @@@ static int mlx5_ib_stage_caps_init(stru
  			(1ull << IB_USER_VERBS_EX_CMD_CREATE_FLOW) |
  			(1ull << IB_USER_VERBS_EX_CMD_DESTROY_FLOW);
  
 -	if (mlx5_ib_port_link_layer(&dev->ib_dev, 1) ==
 -	    IB_LINK_LAYER_ETHERNET) {
 +	err = init_node_data(dev);
 +	if (err)
 +		return err;
 +
 +	if ((MLX5_CAP_GEN(dev->mdev, port_type) == MLX5_CAP_PORT_TYPE_ETH) &&
- 	    MLX5_CAP_GEN(dev->mdev, disable_local_lb))
++	    (MLX5_CAP_GEN(dev->mdev, disable_local_lb_uc) ||
++	     MLX5_CAP_GEN(dev->mdev, disable_local_lb_mc)))
 +		mutex_init(&dev->lb_mutex);
 +
 +	return 0;
 +}
 +
 +static int mlx5_ib_stage_roce_init(struct mlx5_ib_dev *dev)
 +{
 +	struct mlx5_core_dev *mdev = dev->mdev;
 +	enum rdma_link_layer ll;
 +	int port_type_cap;
 +	u8 port_num;
 +	int err;
 +	int i;
 +
 +	port_num = mlx5_core_native_port_num(dev->mdev) - 1;
 +	port_type_cap = MLX5_CAP_GEN(mdev, port_type);
 +	ll = mlx5_port_type_cap_to_rdma_ll(port_type_cap);
 +
 +	if (ll == IB_LINK_LAYER_ETHERNET) {
 +		for (i = 0; i < dev->num_ports; i++) {
 +			dev->roce[i].dev = dev;
 +			dev->roce[i].native_port_num = i + 1;
 +			dev->roce[i].last_port_state = IB_PORT_DOWN;
 +		}
 +
 +		dev->ib_dev.get_netdev	= mlx5_ib_get_netdev;
  		dev->ib_dev.create_wq	 = mlx5_ib_create_wq;
  		dev->ib_dev.modify_wq	 = mlx5_ib_modify_wq;
  		dev->ib_dev.destroy_wq	 = mlx5_ib_destroy_wq;
diff --cc drivers/infiniband/hw/mlx5/qp.c
index d5cc95ffd4ace,cffe5966aef97..39d24bf694a86
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@@ -4674,12 -4361,12 +4674,11 @@@ static void to_rdma_ah_attr(struct mlx5
  
  	memset(ah_attr, 0, sizeof(*ah_attr));
  
- 	ah_attr->type = rdma_ah_find_type(&ibdev->ib_dev, path->port);
- 	rdma_ah_set_port_num(ah_attr, path->port);
- 	if (rdma_ah_get_port_num(ah_attr) == 0 ||
- 	    rdma_ah_get_port_num(ah_attr) > ibdev->num_ports)
 -	if (!path->port || path->port > MLX5_CAP_GEN(dev, num_ports))
++	if (!path->port || path->port > ibdev->num_ports)
  		return;
  
+ 	ah_attr->type = rdma_ah_find_type(&ibdev->ib_dev, path->port);
+ 
  	rdma_ah_set_port_num(ah_attr, path->port);
  	rdma_ah_set_sl(ah_attr, path->dci_cfi_prio_sl & 0xf);