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

Commit e0fd9aff authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull InfiniBand/RDMA changes from Roland Dreier:
 - XRC transport fixes
 - Fix DHCP on IPoIB
 - mlx4 preparations for flow steering
 - iSER fixes
 - miscellaneous other fixes

* tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (23 commits)
  IB/iser: Add support for iser CM REQ additional info
  IB/iser: Return error to upper layers on EAGAIN registration failures
  IB/iser: Move informational messages from error to info level
  IB/iser: Add module version
  mlx4_core: Expose a few helpers to fill DMFS HW strucutures
  mlx4_core: Directly expose fields of DMFS HW rule control segment
  mlx4_core: Change a few DMFS fields names to match firmare spec
  mlx4: Match DMFS promiscuous field names to firmware spec
  mlx4_core: Move DMFS HW structs to common header file
  IB/mlx4: Set link type for RAW PACKET QPs in the QP context
  IB/mlx4: Disable VLAN stripping for RAW PACKET QPs
  mlx4_core: Reduce warning message for SRQ_LIMIT event to debug level
  RDMA/iwcm: Don't touch cmid after dropping reference
  IB/qib: Correct qib_verbs_register_sysfs() error handling
  IB/ipath: Correct ipath_verbs_register_sysfs() error handling
  RDMA/cxgb4: Fix SQ allocation when on-chip SQ is disabled
  SRPT: Fix odd use of WARN_ON()
  IPoIB: Fix ipoib_hard_header() return value
  RDMA: Rename random32() to prandom_u32()
  RDMA/cxgb3: Fix uninitialized variable
  ...
parents 3d15b798 ea9627c8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -878,6 +878,8 @@ static void cm_work_handler(struct work_struct *_work)
			}
			return;
		}
		if (empty)
			return;
		spin_lock_irqsave(&cm_id_priv->lock, flags);
	}
	spin_unlock_irqrestore(&cm_id_priv->lock, flags);
+2 −1
Original line number Diff line number Diff line
@@ -348,6 +348,7 @@ static void __ib_shared_qp_event_handler(struct ib_event *event, void *context)
	struct ib_qp *qp = context;

	list_for_each_entry(event->element.qp, &qp->open_list, open_list)
		if (event->element.qp->event_handler)
			event->element.qp->event_handler(event, event->element.qp->qp_context);
}

+1 −1
Original line number Diff line number Diff line
@@ -559,7 +559,7 @@ static int iwch_reregister_phys_mem(struct ib_mr *mr,
	__be64 *page_list = NULL;
	int shift = 0;
	u64 total_size;
	int npages;
	int npages = 0;
	int ret;

	PDBG("%s ib_mr %p ib_pd %p\n", __func__, mr, pd);
+13 −9
Original line number Diff line number Diff line
@@ -111,6 +111,16 @@ static int alloc_host_sq(struct c4iw_rdev *rdev, struct t4_sq *sq)
	return 0;
}

static int alloc_sq(struct c4iw_rdev *rdev, struct t4_sq *sq, int user)
{
	int ret = -ENOSYS;
	if (user)
		ret = alloc_oc_sq(rdev, sq);
	if (ret)
		ret = alloc_host_sq(rdev, sq);
	return ret;
}

static int destroy_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
		      struct c4iw_dev_ucontext *uctx)
{
@@ -179,15 +189,9 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
		goto free_sw_rq;
	}

	if (user) {
		if (alloc_oc_sq(rdev, &wq->sq) && alloc_host_sq(rdev, &wq->sq))
			goto free_hwaddr;
	} else {
		ret = alloc_host_sq(rdev, &wq->sq);
	ret = alloc_sq(rdev, &wq->sq, user);
	if (ret)
		goto free_hwaddr;
	}

	memset(wq->sq.queue, 0, wq->sq.memsize);
	dma_unmap_addr_set(&wq->sq, mapping, wq->sq.dma_addr);

+10 −9
Original line number Diff line number Diff line
@@ -2187,7 +2187,8 @@ int ipath_register_ib_device(struct ipath_devdata *dd)
	if (ret)
		goto err_reg;

	if (ipath_verbs_register_sysfs(dev))
	ret = ipath_verbs_register_sysfs(dev);
	if (ret)
		goto err_class;

	enable_timer(dd);
@@ -2327,15 +2328,15 @@ static int ipath_verbs_register_sysfs(struct ib_device *dev)
	int i;
	int ret;

	for (i = 0; i < ARRAY_SIZE(ipath_class_attributes); ++i)
		if (device_create_file(&dev->dev,
				       ipath_class_attributes[i])) {
			ret = 1;
	for (i = 0; i < ARRAY_SIZE(ipath_class_attributes); ++i) {
		ret = device_create_file(&dev->dev,
				       ipath_class_attributes[i]);
		if (ret)
			goto bail;
	}

	ret = 0;

	return 0;
bail:
	for (i = 0; i < ARRAY_SIZE(ipath_class_attributes); ++i)
		device_remove_file(&dev->dev, ipath_class_attributes[i]);
	return ret;
}
Loading