[openib-general] [PATCH] (fixed) cqe lookup speedup
Grant Grundler
iod00d at hp.com
Wed Jan 26 11:44:58 PST 2005
Michael,
just is questions about the code...maybe roland can answer.
On Wed, Jan 26, 2005 at 04:52:18PM +0200, Michael S. Tsirkin wrote:
> Index: hw/mthca/mthca_cq.c
> ===================================================================
> --- hw/mthca/mthca_cq.c (revision 1653)
> +++ hw/mthca/mthca_cq.c (working copy)
> @@ -147,20 +147,21 @@ static inline struct mthca_cqe *get_cqe(
> + (entry * MTHCA_CQ_ENTRY_SIZE) % PAGE_SIZE;
> }
>
> -static inline int cqe_sw(struct mthca_cq *cq, int i)
> +static inline struct mthca_cqe *cqe_sw(struct mthca_cq *cq, int i)
> {
> - return !(MTHCA_CQ_ENTRY_OWNER_HW &
> - get_cqe(cq, i)->owner);
> + struct mthca_cqe *cqe;
> + cqe = get_cqe(cq, i);
this could be one line:
struct mthca_cqe *cqe = get_cqe(cq, i);
> @@ -775,7 +784,7 @@ void mthca_free_cq(struct mthca_dev *dev
> int j;
>
> printk(KERN_ERR "context for CQN %x (cons index %x, next sw %d)\n",
> - cq->cqn, cq->cons_index, next_cqe_sw(cq));
> + cq->cqn, cq->cons_index, next_cqe_sw(cq)?1:0);
> for (j = 0; j < 16; ++j)
> printk(KERN_ERR "[%2x] %08x\n", j * 4, be32_to_cpu(ctx[j]));
> }
This code chunk is "dead" code. It starts with "if (0)".
Can it just be deleted?
In mthca_poll_one():
if ((cqe->opcode & MTHCA_ERROR_CQE_OPCODE_MASK) ==
MTHCA_ERROR_CQE_OPCODE_MASK) {
is_error = 1;
is_send = cqe->opcode & 1;
} else
is_send = cqe->is_send & 0x80;
Could be better written as:
is_error = (cqe->opcode & MTHCA_ERROR_CQE_OPCODE_MASK) == MTHCA_ERROR_CQE_OPCODE_MASK);
is_send = is_error ? (cqe->opcode & 1) : (cqe->is_send & 0x80);
BTW, I dislike use of "is_send" to branch the code path several times
later instead of just having two different code paths that call the same
in-line functions. Interested in a patch to change this?
thanks,
grant
More information about the general
mailing list