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

Reply via email to