RDMA/rtrs-clt: Use bitmask to check sess->flags
authorJack Wang <jinpu.wang@cloud.ionos.com>
Thu, 17 Dec 2020 14:19:12 +0000 (15:19 +0100)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 15 Jan 2021 19:25:09 +0000 (15:25 -0400)
We may want to add new flags, so it's better to use bitmask to check flags.

Fixes: 6a98d71daea1 ("RDMA/rtrs: client: main functionality")
Link: https://lore.kernel.org/r/20201217141915.56989-17-jinpu.wang@cloud.ionos.com
Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Signed-off-by: Gioh Kim <gi-oh.kim@cloud.ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/ulp/rtrs/rtrs-clt.c

index 2053bf9..7644c3f 100644 (file)
@@ -494,7 +494,7 @@ static void rtrs_clt_recv_done(struct rtrs_clt_con *con, struct ib_wc *wc)
        int err;
        struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess);
 
-       WARN_ON(sess->flags != RTRS_MSG_NEW_RKEY_F);
+       WARN_ON((sess->flags & RTRS_MSG_NEW_RKEY_F) == 0);
        iu = container_of(wc->wr_cqe, struct rtrs_iu,
                          cqe);
        err = rtrs_iu_post_recv(&con->c, iu);
@@ -514,7 +514,7 @@ static void rtrs_clt_rkey_rsp_done(struct rtrs_clt_con *con, struct ib_wc *wc)
        u32 buf_id;
        int err;
 
-       WARN_ON(sess->flags != RTRS_MSG_NEW_RKEY_F);
+       WARN_ON((sess->flags & RTRS_MSG_NEW_RKEY_F) == 0);
 
        iu = container_of(wc->wr_cqe, struct rtrs_iu, cqe);
 
@@ -621,12 +621,12 @@ static void rtrs_clt_rdma_done(struct ib_cq *cq, struct ib_wc *wc)
                } else if (imm_type == RTRS_HB_MSG_IMM) {
                        WARN_ON(con->c.cid);
                        rtrs_send_hb_ack(&sess->s);
-                       if (sess->flags == RTRS_MSG_NEW_RKEY_F)
+                       if (sess->flags & RTRS_MSG_NEW_RKEY_F)
                                return  rtrs_clt_recv_done(con, wc);
                } else if (imm_type == RTRS_HB_ACK_IMM) {
                        WARN_ON(con->c.cid);
                        sess->s.hb_missed_cnt = 0;
-                       if (sess->flags == RTRS_MSG_NEW_RKEY_F)
+                       if (sess->flags & RTRS_MSG_NEW_RKEY_F)
                                return  rtrs_clt_recv_done(con, wc);
                } else {
                        rtrs_wrn(con->c.sess, "Unknown IMM type %u\n",
@@ -654,7 +654,7 @@ static void rtrs_clt_rdma_done(struct ib_cq *cq, struct ib_wc *wc)
                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);
-               if (sess->flags == RTRS_MSG_NEW_RKEY_F) {
+               if (sess->flags & RTRS_MSG_NEW_RKEY_F) {
                        if (wc->wc_flags & IB_WC_WITH_INVALIDATE)
                                return  rtrs_clt_recv_done(con, wc);
 
@@ -679,7 +679,7 @@ static int post_recv_io(struct rtrs_clt_con *con, size_t q_size)
        struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess);
 
        for (i = 0; i < q_size; i++) {
-               if (sess->flags == RTRS_MSG_NEW_RKEY_F) {
+               if (sess->flags & RTRS_MSG_NEW_RKEY_F) {
                        struct rtrs_iu *iu = &con->rsp_ius[i];
 
                        err = rtrs_iu_post_recv(&con->c, iu);
@@ -1563,7 +1563,7 @@ static int create_con_cq_qp(struct rtrs_clt_con *con)
                              sess->queue_depth * 3 + 1);
        }
        /* alloc iu to recv new rkey reply when server reports flags set */
-       if (sess->flags == RTRS_MSG_NEW_RKEY_F || con->c.cid == 0) {
+       if (sess->flags & RTRS_MSG_NEW_RKEY_F || con->c.cid == 0) {
                con->rsp_ius = rtrs_iu_alloc(max_recv_wr, sizeof(*rsp),
                                              GFP_KERNEL, sess->s.dev->ib_dev,
                                              DMA_FROM_DEVICE,