summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/hfi1/ud.c
diff options
context:
space:
mode:
authorSean Paul <seanpaul@chromium.org>2019-04-10 15:50:49 -0400
committerSean Paul <seanpaul@chromium.org>2019-04-10 15:50:49 -0400
commit3bfaf1f7044c6a3b1e00fcad2d0529f0da449d67 (patch)
tree490bc7e8aa29c2ee41eb4813683f1aa23971abd3 /drivers/infiniband/hw/hfi1/ud.c
parent669105a74a287b14cdec04c64eb51db1bb890f64 (diff)
parent14d2bd53a47a7e1cb3e03d00a6b952734cf90f3f (diff)
downloadtalos-op-linux-3bfaf1f7044c6a3b1e00fcad2d0529f0da449d67.tar.gz
talos-op-linux-3bfaf1f7044c6a3b1e00fcad2d0529f0da449d67.zip
Merge drm/drm-next into drm-misc-next
Finally have a reason for a backmerge other than "it's been a while"! Backmerging drm-next to -misc-next to facilitate Rob Herring's work on Panfrost. Signed-off-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drivers/infiniband/hw/hfi1/ud.c')
-rw-r--r--drivers/infiniband/hw/hfi1/ud.c24
1 files changed, 2 insertions, 22 deletions
diff --git a/drivers/infiniband/hw/hfi1/ud.c b/drivers/infiniband/hw/hfi1/ud.c
index bf96067876c9..f88ad425664a 100644
--- a/drivers/infiniband/hw/hfi1/ud.c
+++ b/drivers/infiniband/hw/hfi1/ud.c
@@ -222,31 +222,11 @@ static void ud_loopback(struct rvt_qp *sqp, struct rvt_swqe *swqe)
ssge.num_sge = swqe->wr.num_sge;
sge = &ssge.sge;
while (length) {
- u32 len = sge->length;
+ u32 len = rvt_get_sge_length(sge, length);
- if (len > length)
- len = length;
- if (len > sge->sge_length)
- len = sge->sge_length;
WARN_ON_ONCE(len == 0);
rvt_copy_sge(qp, &qp->r_sge, sge->vaddr, len, true, false);
- sge->vaddr += len;
- sge->length -= len;
- sge->sge_length -= len;
- if (sge->sge_length == 0) {
- if (--ssge.num_sge)
- *sge = *ssge.sg_list++;
- } else if (sge->length == 0 && sge->mr->lkey) {
- if (++sge->n >= RVT_SEGSZ) {
- if (++sge->m >= sge->mr->mapsz)
- break;
- sge->n = 0;
- }
- sge->vaddr =
- sge->mr->map[sge->m]->segs[sge->n].vaddr;
- sge->length =
- sge->mr->map[sge->m]->segs[sge->n].length;
- }
+ rvt_update_sge(&ssge, len, false);
length -= len;
}
rvt_put_ss(&qp->r_sge);
OpenPOWER on IntegriCloud