Subject: linux-next: manual merge of the rdma tree with the net-next tree

From: Michael Ellerman <[email-masked]>
Date: Wed, 17 Jun 2015 13:20:43 +1000

Hi Doug,

Today's linux-next merge of the rdma tree got a conflict in:

  drivers/infiniband/hw/mlx4/mad.c

between commit:

  7193a141eb74 "IB/mlx4: Set VF to read from QP counters"

from the net-next tree and commit:

  4cd7c9479aff "IB/mad: Add support for additional MAD info to/from drivers"

from the rdma tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

cheers

diff --cc drivers/infiniband/hw/mlx4/mad.c
index bc09b4e1f57c,3e2dee46caa2..000000000000
--- a/drivers/infiniband/hw/mlx4/mad.c
+++ b/drivers/infiniband/hw/mlx4/mad.c
@@@ -817,12 -827,14 +819,12 @@@ static void edit_counter(struct mlx4_co
  }
  
  static int iboe_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
- 			struct ib_wc *in_wc, struct ib_grh *in_grh,
- 			struct ib_mad *in_mad, struct ib_mad *out_mad)
+ 			const struct ib_wc *in_wc, const struct ib_grh *in_grh,
+ 			const struct ib_mad *in_mad, struct ib_mad *out_mad)
  {
 -	struct mlx4_cmd_mailbox *mailbox;
 +	struct mlx4_counter counter_stats;
  	struct mlx4_ib_dev *dev = to_mdev(ibdev);
  	int err;
 -	u32 inmod = dev->counters[port_num - 1] & 0xffff;
 -	u8 mode;
  
  	if (in_mad->mad_hdr.mgmt_class != IB_MGMT_CLASS_PERF_MGMT)
  		return -EINVAL;
@@@ -850,15 -868,21 +852,23 @@@
  }
  
  int mlx4_ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
- 			struct ib_wc *in_wc, struct ib_grh *in_grh,
- 			struct ib_mad *in_mad, struct ib_mad *out_mad)
+ 			const struct ib_wc *in_wc, const struct ib_grh *in_grh,
+ 			const struct ib_mad_hdr *in, size_t in_mad_size,
+ 			struct ib_mad_hdr *out, size_t *out_mad_size,
+ 			u16 *out_mad_pkey_index)
  {
 +	struct mlx4_ib_dev *dev = to_mdev(ibdev);
+ 	const struct ib_mad *in_mad = (const struct ib_mad *)in;
+ 	struct ib_mad *out_mad = (struct ib_mad *)out;
+ 
+ 	BUG_ON(in_mad_size != sizeof(*in_mad) ||
+ 	       *out_mad_size != sizeof(*out_mad));
+ 
  	switch (rdma_port_get_link_layer(ibdev, port_num)) {
  	case IB_LINK_LAYER_INFINIBAND:
 -		return ib_process_mad(ibdev, mad_flags, port_num, in_wc,
 -				      in_grh, in_mad, out_mad);
 +		if (!mlx4_is_slave(dev->dev))
 +			return ib_process_mad(ibdev, mad_flags, port_num, in_wc,
 +					      in_grh, in_mad, out_mad);
  	case IB_LINK_LAYER_ETHERNET:
  		return iboe_process_mad(ibdev, mad_flags, port_num, in_wc,
  					  in_grh, in_mad, out_mad);