IB/hfi1: Correct defered count after processing qp_wait_list
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Wed, 8 Feb 2017 13:25:56 +0000 (05:25 -0800)
committerDoug Ledford <dledford@redhat.com>
Sun, 19 Feb 2017 14:18:32 +0000 (09:18 -0500)
The qp_wait_list processing leaves the defered ack count
at its prior value.

This can result in a premature send of an ack.

Fixed by unconditionally reseting the defered ack count
in hfi1_send_rc_ack().

Fixes: Commit 7c091e5c0685 ("staging/rdma/hfi1: add ACK coalescing logic")
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/rc.c

index 809b26eb6d3cbba22fe902051a42986a012cf35d..1dd999e9349cee00aaa91930d5fb5fbcd57ec664 100644 (file)
@@ -853,6 +853,10 @@ void hfi1_send_rc_ack(struct hfi1_ctxtdata *rcd, struct rvt_qp *qp,
        struct ib_header hdr;
        struct ib_other_headers *ohdr;
        unsigned long flags;
+       struct hfi1_qp_priv *priv = qp->priv;
+
+       /* clear the defer count */
+       priv->r_adefered = 0;
 
        /* Don't send ACK or NAK if a RDMA read or atomic is pending. */
        if (qp->s_flags & RVT_S_RESP_PENDING)