diff options
author | Roland Dreier <rolandd@cisco.com> | 2008-01-25 17:15:34 -0500 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2008-01-25 17:15:34 -0500 |
commit | b3226184af6c13c9d5d38f13f0ef8e03f718bbf7 (patch) | |
tree | e79a895f7c320ada2cf8a1faffb735f9fc098c8a /drivers/infiniband/hw/mlx4 | |
parent | e57895d38991036f9ccf193b70fc5ebd5f6e6dc9 (diff) |
IB/mlx4: Micro-optimize mlx4_ib_poll_one()
Rather than byte-swapping cqe->g_mlpath_rqpn each time we extract a
field from it, byte-swap it once into a temporary variable. This
results in smaller, better code -- eg, on 32-bit x86:
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-5 (-5)
function old new delta
mlx4_ib_poll_cq 1188 1183 -5
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/mlx4')
-rw-r--r-- | drivers/infiniband/hw/mlx4/cq.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c index 9d32c49cc651..7950aa6e8184 100644 --- a/drivers/infiniband/hw/mlx4/cq.c +++ b/drivers/infiniband/hw/mlx4/cq.c | |||
@@ -313,6 +313,7 @@ static int mlx4_ib_poll_one(struct mlx4_ib_cq *cq, | |||
313 | struct mlx4_ib_srq *srq; | 313 | struct mlx4_ib_srq *srq; |
314 | int is_send; | 314 | int is_send; |
315 | int is_error; | 315 | int is_error; |
316 | u32 g_mlpath_rqpn; | ||
316 | u16 wqe_ctr; | 317 | u16 wqe_ctr; |
317 | 318 | ||
318 | cqe = next_cqe_sw(cq); | 319 | cqe = next_cqe_sw(cq); |
@@ -426,10 +427,10 @@ static int mlx4_ib_poll_one(struct mlx4_ib_cq *cq, | |||
426 | 427 | ||
427 | wc->slid = be16_to_cpu(cqe->rlid); | 428 | wc->slid = be16_to_cpu(cqe->rlid); |
428 | wc->sl = cqe->sl >> 4; | 429 | wc->sl = cqe->sl >> 4; |
429 | wc->src_qp = be32_to_cpu(cqe->g_mlpath_rqpn) & 0xffffff; | 430 | g_mlpath_rqpn = be32_to_cpu(cqe->g_mlpath_rqpn); |
430 | wc->dlid_path_bits = (be32_to_cpu(cqe->g_mlpath_rqpn) >> 24) & 0x7f; | 431 | wc->src_qp = g_mlpath_rqpn & 0xffffff; |
431 | wc->wc_flags |= be32_to_cpu(cqe->g_mlpath_rqpn) & 0x80000000 ? | 432 | wc->dlid_path_bits = (g_mlpath_rqpn >> 24) & 0x7f; |
432 | IB_WC_GRH : 0; | 433 | wc->wc_flags |= g_mlpath_rqpn & 0x80000000 ? IB_WC_GRH : 0; |
433 | wc->pkey_index = be32_to_cpu(cqe->immed_rss_invalid) & 0x7f; | 434 | wc->pkey_index = be32_to_cpu(cqe->immed_rss_invalid) & 0x7f; |
434 | } | 435 | } |
435 | 436 | ||