]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/rtrs: Reset hb_missed_cnt after receiving other traffic from peer
authorJack Wang <jinpu.wang@ionos.com>
Wed, 21 Aug 2024 11:22:10 +0000 (13:22 +0200)
committerLeon Romanovsky <leon@kernel.org>
Wed, 28 Aug 2024 12:24:35 +0000 (15:24 +0300)
Reset hb_missed_cnt after receiving traffic from other peer, so
hb is more robust again high load on host or network.

Fixes: 6a98d71daea1 ("RDMA/rtrs: client: main functionality")
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Signed-off-by: Grzegorz Prajsner <grzegorz.prajsner@ionos.com>
Link: https://patch.msgid.link/20240821112217.41827-5-haris.iqbal@ionos.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/ulp/rtrs/rtrs-clt.c
drivers/infiniband/ulp/rtrs/rtrs-srv.c

index b34eb49081858d9cea5de4ac68f64763e0549f9a..c1bca89720156497875df8f41bfc468004fca892 100644 (file)
@@ -619,6 +619,7 @@ static void rtrs_clt_rdma_done(struct ib_cq *cq, struct ib_wc *wc)
                 */
                if (WARN_ON(wc->wr_cqe->done != rtrs_clt_rdma_done))
                        return;
+               clt_path->s.hb_missed_cnt = 0;
                rtrs_from_imm(be32_to_cpu(wc->ex.imm_data),
                               &imm_type, &imm_payload);
                if (imm_type == RTRS_IO_RSP_IMM ||
@@ -636,7 +637,6 @@ static void rtrs_clt_rdma_done(struct ib_cq *cq, struct ib_wc *wc)
                                return  rtrs_clt_recv_done(con, wc);
                } else if (imm_type == RTRS_HB_ACK_IMM) {
                        WARN_ON(con->c.cid);
-                       clt_path->s.hb_missed_cnt = 0;
                        clt_path->s.hb_cur_latency =
                                ktime_sub(ktime_get(), clt_path->s.hb_last_sent);
                        if (clt_path->flags & RTRS_MSG_NEW_RKEY_F)
@@ -663,6 +663,7 @@ static void rtrs_clt_rdma_done(struct ib_cq *cq, struct ib_wc *wc)
                /*
                 * Key invalidations from server side
                 */
+               clt_path->s.hb_missed_cnt = 0;
                WARN_ON(!(wc->wc_flags & IB_WC_WITH_INVALIDATE ||
                          wc->wc_flags & IB_WC_WITH_IMM));
                WARN_ON(wc->wr_cqe->done != rtrs_clt_rdma_done);
index f76d483c37842d27c7e5ab6f2ce340497d0adaa3..ffd3e80596d0ed5ad1d0cc9b1fc9ae03c026b1b9 100644 (file)
@@ -1233,6 +1233,7 @@ static void rtrs_srv_rdma_done(struct ib_cq *cq, struct ib_wc *wc)
                 */
                if (WARN_ON(wc->wr_cqe != &io_comp_cqe))
                        return;
+               srv_path->s.hb_missed_cnt = 0;
                err = rtrs_post_recv_empty(&con->c, &io_comp_cqe);
                if (err) {
                        rtrs_err(s, "rtrs_post_recv(), err: %d\n", err);