diff options
author | Michael J. Ruhl <michael.j.ruhl@intel.com> | 2018-11-28 06:44:36 -0800 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2018-12-03 16:05:19 -0500 |
commit | 90b2620e6a8aa08c40cc78d61603e0acd853c33a (patch) | |
tree | 8fffa51cdddb9be77c88a48cac50e7151b6382d4 /drivers/infiniband/hw/hfi1/qp.c | |
parent | 7bca603a69c0c239654a8f0bcb99e1a60b30040c (diff) | |
download | linux-stable-90b2620e6a8aa08c40cc78d61603e0acd853c33a.tar.gz linux-stable-90b2620e6a8aa08c40cc78d61603e0acd853c33a.tar.bz2 linux-stable-90b2620e6a8aa08c40cc78d61603e0acd853c33a.zip |
IB/hfi1: Fix a latency issue for small messages
A recent performance enhancement introduced a latency issue in the
HFI message path. The new algorithm removed a forced call send for
PIO messages and added a forced schedule event for messages larger
than the MTU.
For PIO, the schedule path can introduce thrashing that can
significantly impact the throughput for small messages.
If a message size is within the PIO threshold, always take the send
path.
Fixes: 0b79b27748cb ("IB/{hfi1, qib, rdmavt}: Schedule multi RC/UC packets instead of posting")
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/hfi1/qp.c')
-rw-r--r-- | drivers/infiniband/hw/hfi1/qp.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/hfi1/qp.c b/drivers/infiniband/hw/hfi1/qp.c index 6f3bc4dab858..1a016248039f 100644 --- a/drivers/infiniband/hw/hfi1/qp.c +++ b/drivers/infiniband/hw/hfi1/qp.c @@ -340,6 +340,13 @@ int hfi1_setup_wqe(struct rvt_qp *qp, struct rvt_swqe *wqe, bool *call_send) default: break; } + + /* + * System latency between send and schedule is large enough that + * forcing call_send to true for piothreshold packets is necessary. + */ + if (wqe->length <= piothreshold) + *call_send = true; return 0; } |