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

Commit 0f66c08e authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband

* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
  IB/mad: Fix race between cancel and receive completion
  RDMA/amso1100: Fix && typo
  RDMA/amso1100: Fix unitialized pseudo_netdev accessed in c2_register_device
  IB/ehca: Activate scaling code by default
  IB/ehca: Use named constant for max mtu
  IB/ehca: Assure 4K alignment for firmware control blocks
parents 4dd7406e 39798695
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1750,7 +1750,7 @@ ib_find_send_mad(struct ib_mad_agent_private *mad_agent_priv,
		     */
		    (is_direct(wc->recv_buf.mad->mad_hdr.mgmt_class) ||
		     rcv_has_same_gid(mad_agent_priv, wr, wc)))
			return wr;
			return (wr->status == IB_WC_SUCCESS) ? wr : NULL;
	}

	/*
+2 −1
Original line number Diff line number Diff line
@@ -1155,7 +1155,8 @@ static int __devinit c2_probe(struct pci_dev *pcidev,
		goto bail10;
	}

	c2_register_device(c2dev);
	if (c2_register_device(c2dev))
		goto bail10;

	return 0;

+20 −19
Original line number Diff line number Diff line
@@ -757,20 +757,17 @@ static struct net_device *c2_pseudo_netdev_init(struct c2_dev *c2dev)

int c2_register_device(struct c2_dev *dev)
{
	int ret;
	int ret = -ENOMEM;
	int i;

	/* Register pseudo network device */
	dev->pseudo_netdev = c2_pseudo_netdev_init(dev);
	if (dev->pseudo_netdev) {
	if (!dev->pseudo_netdev)
		goto out3;

	ret = register_netdev(dev->pseudo_netdev);
		if (ret) {
			printk(KERN_ERR PFX
				"Unable to register netdev, ret = %d\n", ret);
			free_netdev(dev->pseudo_netdev);
			return ret;
		}
	}
	if (ret)
		goto out2;

	pr_debug("%s:%u\n", __FUNCTION__, __LINE__);
	strlcpy(dev->ibdev.name, "amso%d", IB_DEVICE_NAME_MAX);
@@ -848,22 +845,26 @@ int c2_register_device(struct c2_dev *dev)

	ret = ib_register_device(&dev->ibdev);
	if (ret)
		return ret;
		goto out1;

	for (i = 0; i < ARRAY_SIZE(c2_class_attributes); ++i) {
		ret = class_device_create_file(&dev->ibdev.class_dev,
					       c2_class_attributes[i]);
		if (ret) {
		if (ret)
			goto out0;
	}
	goto out3;

out0:
	ib_unregister_device(&dev->ibdev);
out1:
	unregister_netdev(dev->pseudo_netdev);
out2:
	free_netdev(dev->pseudo_netdev);
			ib_unregister_device(&dev->ibdev);
out3:
	pr_debug("%s:%u ret=%d\n", __FUNCTION__, __LINE__, ret);
	return ret;
}
	}

	pr_debug("%s:%u\n", __FUNCTION__, __LINE__);
	return 0;
}

void c2_unregister_device(struct c2_dev *dev)
{
+2 −2
Original line number Diff line number Diff line
@@ -157,8 +157,8 @@ static int c2_rnic_query(struct c2_dev *c2dev, struct ib_device_attr *props)

	props->fw_ver =
		((u64)be32_to_cpu(reply->fw_ver_major) << 32) |
		((be32_to_cpu(reply->fw_ver_minor) && 0xFFFF) << 16) |
		(be32_to_cpu(reply->fw_ver_patch) && 0xFFFF);
		((be32_to_cpu(reply->fw_ver_minor) & 0xFFFF) << 16) |
		(be32_to_cpu(reply->fw_ver_patch) & 0xFFFF);
	memcpy(&props->sys_image_guid, c2dev->netdev->dev_addr, 6);
	props->max_mr_size         = 0xFFFFFFFF;
	props->page_size_cap       = ~(C2_MIN_PAGESIZE-1);
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ config INFINIBAND_EHCA
config INFINIBAND_EHCA_SCALING
	bool "Scaling support (EXPERIMENTAL)"
	depends on IBMEBUS && INFINIBAND_EHCA && HOTPLUG_CPU && EXPERIMENTAL
	default y
	---help---
	eHCA scaling support schedules the CQ callbacks to different CPUs.

Loading