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

Commit bb77c03c 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

parents ce12467d aba7a22f
Loading
Loading
Loading
Loading
+21 −24
Original line number Diff line number Diff line
@@ -503,6 +503,25 @@ static int __devinit mthca_init_icm(struct mthca_dev *mdev,
	return err;
}

static void mthca_free_icms(struct mthca_dev *mdev)
{
	u8 status;

	mthca_free_icm_table(mdev, mdev->mcg_table.table);
	if (mdev->mthca_flags & MTHCA_FLAG_SRQ)
		mthca_free_icm_table(mdev, mdev->srq_table.table);
	mthca_free_icm_table(mdev, mdev->cq_table.table);
	mthca_free_icm_table(mdev, mdev->qp_table.rdb_table);
	mthca_free_icm_table(mdev, mdev->qp_table.eqp_table);
	mthca_free_icm_table(mdev, mdev->qp_table.qp_table);
	mthca_free_icm_table(mdev, mdev->mr_table.mpt_table);
	mthca_free_icm_table(mdev, mdev->mr_table.mtt_table);
	mthca_unmap_eq_icm(mdev);

	mthca_UNMAP_ICM_AUX(mdev, &status);
	mthca_free_icm(mdev, mdev->fw.arbel.aux_icm);
}

static int __devinit mthca_init_arbel(struct mthca_dev *mdev)
{
	struct mthca_dev_lim        dev_lim;
@@ -580,18 +599,7 @@ static int __devinit mthca_init_arbel(struct mthca_dev *mdev)
	return 0;

err_free_icm:
	if (mdev->mthca_flags & MTHCA_FLAG_SRQ)
		mthca_free_icm_table(mdev, mdev->srq_table.table);
	mthca_free_icm_table(mdev, mdev->cq_table.table);
	mthca_free_icm_table(mdev, mdev->qp_table.rdb_table);
	mthca_free_icm_table(mdev, mdev->qp_table.eqp_table);
	mthca_free_icm_table(mdev, mdev->qp_table.qp_table);
	mthca_free_icm_table(mdev, mdev->mr_table.mpt_table);
	mthca_free_icm_table(mdev, mdev->mr_table.mtt_table);
	mthca_unmap_eq_icm(mdev);

	mthca_UNMAP_ICM_AUX(mdev, &status);
	mthca_free_icm(mdev, mdev->fw.arbel.aux_icm);
	mthca_free_icms(mdev);

err_stop_fw:
	mthca_UNMAP_FA(mdev, &status);
@@ -611,18 +619,7 @@ static void mthca_close_hca(struct mthca_dev *mdev)
	mthca_CLOSE_HCA(mdev, 0, &status);

	if (mthca_is_memfree(mdev)) {
		if (mdev->mthca_flags & MTHCA_FLAG_SRQ)
			mthca_free_icm_table(mdev, mdev->srq_table.table);
		mthca_free_icm_table(mdev, mdev->cq_table.table);
		mthca_free_icm_table(mdev, mdev->qp_table.rdb_table);
		mthca_free_icm_table(mdev, mdev->qp_table.eqp_table);
		mthca_free_icm_table(mdev, mdev->qp_table.qp_table);
		mthca_free_icm_table(mdev, mdev->mr_table.mpt_table);
		mthca_free_icm_table(mdev, mdev->mr_table.mtt_table);
		mthca_unmap_eq_icm(mdev);

		mthca_UNMAP_ICM_AUX(mdev, &status);
		mthca_free_icm(mdev, mdev->fw.arbel.aux_icm);
		mthca_free_icms(mdev);

		mthca_UNMAP_FA(mdev, &status);
		mthca_free_icm(mdev, mdev->fw.arbel.fw_icm);
+2 −2
Original line number Diff line number Diff line
@@ -474,7 +474,7 @@ static void neigh_add_path(struct sk_buff *skb, struct net_device *dev)
	spin_unlock(&priv->lock);
}

static void path_lookup(struct sk_buff *skb, struct net_device *dev)
static void ipoib_path_lookup(struct sk_buff *skb, struct net_device *dev)
{
	struct ipoib_dev_priv *priv = netdev_priv(skb->dev);

@@ -569,7 +569,7 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)

	if (skb->dst && skb->dst->neighbour) {
		if (unlikely(!*to_ipoib_neigh(skb->dst->neighbour))) {
			path_lookup(skb, dev);
			ipoib_path_lookup(skb, dev);
			goto out;
		}