aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw
diff options
context:
space:
mode:
authorHoang-Nam Nguyen <hnguyen@de.ibm.com>2007-07-09 09:33:52 -0400
committerRoland Dreier <rolandd@cisco.com>2007-07-09 23:12:27 -0400
commitf72d2f081453d8b1ea36e47478c3463042746ddc (patch)
treeadd8200b720656a1dc36f165f5e8872e5db30633 /drivers/infiniband/hw
parent8705ce5b90118be93eb8b0ed6f49ca5ff377df24 (diff)
IB/ehca: Improve latency by unlocking after triggering the hardware
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>
Diffstat (limited to 'drivers/infiniband/hw')
-rw-r--r--drivers/infiniband/hw/ehca/ehca_reqs.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_reqs.c b/drivers/infiniband/hw/ehca/ehca_reqs.c
index fd3ba22467e8..61da65e6e5e0 100644
--- a/drivers/infiniband/hw/ehca/ehca_reqs.c
+++ b/drivers/infiniband/hw/ehca/ehca_reqs.c
@@ -407,10 +407,9 @@ int ehca_post_send(struct ib_qp *qp,
407 } /* eof for cur_send_wr */ 407 } /* eof for cur_send_wr */
408 408
409post_send_exit0: 409post_send_exit0:
410 /* UNLOCK the QUEUE */
411 spin_unlock_irqrestore(&my_qp->spinlock_s, flags);
412 iosync(); /* serialize GAL register access */ 410 iosync(); /* serialize GAL register access */
413 hipz_update_sqa(my_qp, wqe_cnt); 411 hipz_update_sqa(my_qp, wqe_cnt);
412 spin_unlock_irqrestore(&my_qp->spinlock_s, flags);
414 return ret; 413 return ret;
415} 414}
416 415
@@ -473,9 +472,9 @@ static int internal_post_recv(struct ehca_qp *my_qp,
473 } /* eof for cur_recv_wr */ 472 } /* eof for cur_recv_wr */
474 473
475post_recv_exit0: 474post_recv_exit0:
476 spin_unlock_irqrestore(&my_qp->spinlock_r, flags);
477 iosync(); /* serialize GAL register access */ 475 iosync(); /* serialize GAL register access */
478 hipz_update_rqa(my_qp, wqe_cnt); 476 hipz_update_rqa(my_qp, wqe_cnt);
477 spin_unlock_irqrestore(&my_qp->spinlock_r, flags);
479 return ret; 478 return ret;
480} 479}
481 480