IB/ipath: Fix PSN of send WQEs after an RDMA read resend
authorRalph Campbell <ralph.campbell@qlogic.com>
Fri, 5 Dec 2008 19:13:18 +0000 (11:13 -0800)
committerRoland Dreier <rolandd@cisco.com>
Fri, 5 Dec 2008 19:13:18 +0000 (11:13 -0800)
The PSN of the first packet after an RDMA read is based on the size of
the RDMA read request. This is calculated correctly for the WQE sent
after the first request message but not on subsequent requests if the
RDMA read is resent.

Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_rc.c

index 7b93cda1a4bdcf9681c652fa525058078b48f570..9170710b950ddfafe16fffe2a7b7a157d8d0d97b 100644 (file)
@@ -573,9 +573,8 @@ int ipath_make_rc_req(struct ipath_qp *qp)
                ohdr->u.rc.reth.length = cpu_to_be32(qp->s_len);
                qp->s_state = OP(RDMA_READ_REQUEST);
                hwords += sizeof(ohdr->u.rc.reth) / sizeof(u32);
-               bth2 = qp->s_psn++ & IPATH_PSN_MASK;
-               if (ipath_cmp24(qp->s_psn, qp->s_next_psn) > 0)
-                       qp->s_next_psn = qp->s_psn;
+               bth2 = qp->s_psn & IPATH_PSN_MASK;
+               qp->s_psn = wqe->lpsn + 1;
                ss = NULL;
                len = 0;
                qp->s_cur++;