Optimize stamping in mlx4
We can check how much of the WQE was used in the previous time
and stamp only what was used.
Signed-off-by: Eli Cohen <[EMAIL PROTECTED]>
The same fix can be done also in userspace.
---
drivers/infiniband/hw/mlx4/qp.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index fc4811c..3138c5e 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -123,8 +123,11 @@ static void stamp_send_wqe(struct mlx4_ib_qp *qp, int n)
{
u32 *wqe = get_send_wqe(qp, n);
int i;
+ struct mlx4_wqe_ctrl_seg *ctrl = wqe;
+ int stamp_limit;
- for (i = 16; i < 1 << (qp->sq.wqe_shift - 2); i += 16)
+ stamp_limit = (ctrl->fence_size & 0x3f) << 2;
+ for (i = 16; i < stamp_limit; i += 16)
wqe[i] = 0xffffffff;
}
@@ -928,6 +931,7 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
for (i = 0; i < qp->sq.wqe_cnt; ++i) {
ctrl = get_send_wqe(qp, i);
ctrl->owner_opcode = cpu_to_be32(1 << 31);
+ ctrl->fence_size = 1 << (qp->sq.wqe_shift - 4);
stamp_send_wqe(qp, i);
}
--
1.5.3.8
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general