Commit a03a5a67 authored by Roland Dreier's avatar Roland Dreier Committed by Linus Torvalds
Browse files

[PATCH] IB/mthca: Move mthca_is_memfree checks



Make mthca_table_put() and mthca_table_put_range() NOPs if the device is not
mem-free, so that we don't have to have "if (mthca_is_memfree())" tests in the
callers of these functions.  This makes our code more readable and
maintainable, and saves a couple dozen bytes of text in ib_mthca.ko as well.

Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent a852092e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -918,9 +918,9 @@ void mthca_free_cq(struct mthca_dev *dev,
	if (mthca_is_memfree(dev)) {
		mthca_free_db(dev, MTHCA_DB_TYPE_CQ_ARM,    cq->arm_db_index);
		mthca_free_db(dev, MTHCA_DB_TYPE_CQ_SET_CI, cq->set_ci_db_index);
		mthca_table_put(dev, dev->cq_table.table, cq->cqn);
	}

	mthca_table_put(dev, dev->cq_table.table, cq->cqn);
	mthca_free(&dev->cq_table.alloc, cq->cqn);
	kfree(mailbox);
}
+9 −1
Original line number Diff line number Diff line
@@ -179,9 +179,14 @@ out:

void mthca_table_put(struct mthca_dev *dev, struct mthca_icm_table *table, int obj)
{
	int i = (obj & (table->num_obj - 1)) * table->obj_size / MTHCA_TABLE_CHUNK_SIZE;
	int i;
	u8 status;

	if (!mthca_is_memfree(dev))
		return;

	i = (obj & (table->num_obj - 1)) * table->obj_size / MTHCA_TABLE_CHUNK_SIZE;

	down(&table->mutex);

	if (--table->icm[i]->refcount == 0) {
@@ -256,6 +261,9 @@ void mthca_table_put_range(struct mthca_dev *dev, struct mthca_icm_table *table,
{
	int i;

	if (!mthca_is_memfree(dev))
		return;

	for (i = start; i <= end; i += MTHCA_TABLE_CHUNK_SIZE / table->obj_size)
		mthca_table_put(dev, table, i);
}
+7 −13
Original line number Diff line number Diff line
@@ -195,8 +195,6 @@ static void mthca_free_mtt(struct mthca_dev *dev, u32 seg, int order,
			   struct mthca_buddy* buddy)
{
	mthca_buddy_free(buddy, seg, order);

	if (mthca_is_memfree(dev))
	mthca_table_put_range(dev, dev->mr_table.mtt_table, seg,
			      seg + (1 << order) - 1);
}
@@ -299,7 +297,6 @@ int mthca_mr_alloc_notrans(struct mthca_dev *dev, u32 pd,
	return err;

err_out_table:
	if (mthca_is_memfree(dev))
	mthca_table_put(dev, dev->mr_table.mpt_table, key);

err_out_mpt_free:
@@ -437,7 +434,6 @@ err_out_free_mtt:
	mthca_free_mtt(dev, mr->first_seg, mr->order, &dev->mr_table.mtt_buddy);

err_out_table:
	if (mthca_is_memfree(dev))
	mthca_table_put(dev, dev->mr_table.mpt_table, key);

err_out_mpt_free:
@@ -452,7 +448,6 @@ static void mthca_free_region(struct mthca_dev *dev, u32 lkey, int order,
	if (order >= 0)
		mthca_free_mtt(dev, first_seg, order, buddy);

	if (mthca_is_memfree(dev))
	mthca_table_put(dev, dev->mr_table.mpt_table,
			arbel_key_to_hw_index(lkey));

@@ -596,7 +591,6 @@ err_out_free_mtt:
		       dev->mr_table.fmr_mtt_buddy);

err_out_table:
	if (mthca_is_memfree(dev))
	mthca_table_put(dev, dev->mr_table.mpt_table, key);

err_out_mpt_free:
+5 −4
Original line number Diff line number Diff line
@@ -1111,12 +1111,13 @@ static void mthca_free_memfree(struct mthca_dev *dev,
	if (mthca_is_memfree(dev)) {
		mthca_free_db(dev, MTHCA_DB_TYPE_SQ, qp->sq.db_index);
		mthca_free_db(dev, MTHCA_DB_TYPE_RQ, qp->rq.db_index);
	}

	mthca_table_put(dev, dev->qp_table.rdb_table,
			qp->qpn << dev->qp_table.rdb_shift);
	mthca_table_put(dev, dev->qp_table.eqp_table, qp->qpn);
	mthca_table_put(dev, dev->qp_table.qp_table, qp->qpn);
}
}

static void mthca_wq_init(struct mthca_wq* wq)
{