]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IB/qib: Fix comparison error with qperf compare/swap test
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Tue, 14 Nov 2017 12:34:52 +0000 (04:34 -0800)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 11 Dec 2017 23:19:40 +0000 (16:19 -0700)
This failure exists with qib:

ver_rc_compare_swap:
mismatch, sequence 2, expected 123456789abcdef, got 0

The request builder was using the incorrect inlines to
build the request header resulting in incorrect data
in the atomic header.

Fix by using the appropriate inlines to create the request.

Cc: <stable@vger.kernel.org> # 4.9.x+
Fixes: 261a4351844b ("IB/qib,IB/hfi: Use core common header file")
Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/qib/qib_rc.c

index 8f5754fb857982095e6cac1c1dd63f0e6bf22c59..e4a9ba1dd9ba58530c37cb08ab29548c771a51d6 100644 (file)
@@ -434,13 +434,13 @@ int qib_make_rc_req(struct rvt_qp *qp, unsigned long *flags)
                                qp->s_state = OP(COMPARE_SWAP);
                                put_ib_ateth_swap(wqe->atomic_wr.swap,
                                                  &ohdr->u.atomic_eth);
-                               put_ib_ateth_swap(wqe->atomic_wr.compare_add,
-                                                 &ohdr->u.atomic_eth);
+                               put_ib_ateth_compare(wqe->atomic_wr.compare_add,
+                                                    &ohdr->u.atomic_eth);
                        } else {
                                qp->s_state = OP(FETCH_ADD);
                                put_ib_ateth_swap(wqe->atomic_wr.compare_add,
                                                  &ohdr->u.atomic_eth);
-                               put_ib_ateth_swap(0, &ohdr->u.atomic_eth);
+                               put_ib_ateth_compare(0, &ohdr->u.atomic_eth);
                        }
                        put_ib_ateth_vaddr(wqe->atomic_wr.remote_addr,
                                           &ohdr->u.atomic_eth);