IB/ehca: Improve latency by unlocking after triggering the hardware
authorHoang-Nam Nguyen <hnguyen@de.ibm.com>
Mon, 9 Jul 2007 13:33:52 +0000 (15:33 +0200)
committerRoland Dreier <rolandd@cisco.com>
Tue, 10 Jul 2007 03:12:27 +0000 (20:12 -0700)
Kick the hardware before unlocking the send/receive queue to overlap
processing a little more.

Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ehca/ehca_reqs.c

index fd3ba22467e85bf9144cbf3bd8b980210d1a4344..61da65e6e5e09957868d2097808d77ad809b5baf 100644 (file)
@@ -407,10 +407,9 @@ int ehca_post_send(struct ib_qp *qp,
        } /* eof for cur_send_wr */
 
 post_send_exit0:
-       /* UNLOCK the QUEUE */
-       spin_unlock_irqrestore(&my_qp->spinlock_s, flags);
        iosync(); /* serialize GAL register access */
        hipz_update_sqa(my_qp, wqe_cnt);
+       spin_unlock_irqrestore(&my_qp->spinlock_s, flags);
        return ret;
 }
 
@@ -473,9 +472,9 @@ static int internal_post_recv(struct ehca_qp *my_qp,
        } /* eof for cur_recv_wr */
 
 post_recv_exit0:
-       spin_unlock_irqrestore(&my_qp->spinlock_r, flags);
        iosync(); /* serialize GAL register access */
        hipz_update_rqa(my_qp, wqe_cnt);
+       spin_unlock_irqrestore(&my_qp->spinlock_r, flags);
        return ret;
 }