]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2024 14:33:08 +0000 (16:33 +0200)
[ Upstream commit 3258cbbd86deaa2675e1799bc3d18bd1ef472641 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/ulp/rtrs/rtrs-clt.c
drivers/infiniband/ulp/rtrs/rtrs-srv.c

index 88106cf5ce550c23e1aa20d8c443296f5d5caa0e..9936a3354b47879143d6efa2b4b8cba2998d189c 100644 (file)
@@ -626,6 +626,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 ||
@@ -643,7 +644,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)
@@ -670,6 +670,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 1d33efb8fb03be74be953c280a9df61fdbba6ac4..94ac99a4f696e72f8be2fb2457f2e3871e229289 100644 (file)
@@ -1229,6 +1229,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);