diff options
author | Hoang-Nam Nguyen <hnguyen@de.ibm.com> | 2007-07-09 09:33:52 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-07-09 23:12:27 -0400 |
commit | f72d2f081453d8b1ea36e47478c3463042746ddc (patch) | |
tree | add8200b720656a1dc36f165f5e8872e5db30633 /drivers/infiniband | |
parent | 8705ce5b90118be93eb8b0ed6f49ca5ff377df24 (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')
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_reqs.c | 5 |
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 | ||
409 | post_send_exit0: | 409 | post_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 | ||
475 | post_recv_exit0: | 474 | post_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 | ||