RDMA/rtrs: move wr_cnt from rtrs_srv_con to rtrs_con
authorJack Wang <jinpu.wang@ionos.com>
Mon, 12 Jul 2021 06:07:46 +0000 (08:07 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 15 Jul 2021 17:24:14 +0000 (14:24 -0300)
We need to track also the wr used for heatbeat. This is a preparation for
that, will be used in later patch.

The io_cnt in rtrs_clt is removed, use wr_cnt instead.

Link: https://lore.kernel.org/r/20210712060750.16494-3-jinpu.wang@ionos.com
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Reviewed-by: Aleksei Marov <aleksei.marov@ionos.com>
Reviewed-by: Gioh Kim <gi-oh.kim@ionos.com>
Reviewed-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/ulp/rtrs/rtrs-clt.c
drivers/infiniband/ulp/rtrs/rtrs-clt.h
drivers/infiniband/ulp/rtrs/rtrs-pri.h
drivers/infiniband/ulp/rtrs/rtrs-srv.c
drivers/infiniband/ulp/rtrs/rtrs-srv.h

index f2c40e50f25ea4956a0914b7c0232c2d5e45c3ce..5cb00ea089194e5cc37cc5ad134402bf1dc3151c 100644 (file)
@@ -478,7 +478,7 @@ static int rtrs_post_send_rdma(struct rtrs_clt_con *con,
         * From time to time we have to post signalled sends,
         * or send queue will fill up and only QP reset can help.
         */
-       flags = atomic_inc_return(&con->io_cnt) % sess->queue_depth ?
+       flags = atomic_inc_return(&con->c.wr_cnt) % sess->queue_depth ?
                        0 : IB_SEND_SIGNALED;
 
        ib_dma_sync_single_for_device(sess->s.dev->ib_dev, req->iu->dma_addr,
@@ -1043,7 +1043,7 @@ static int rtrs_post_rdma_write_sg(struct rtrs_clt_con *con,
         * From time to time we have to post signalled sends,
         * or send queue will fill up and only QP reset can help.
         */
-       flags = atomic_inc_return(&con->io_cnt) % sess->queue_depth ?
+       flags = atomic_inc_return(&con->c.wr_cnt) % sess->queue_depth ?
                        0 : IB_SEND_SIGNALED;
 
        ib_dma_sync_single_for_device(sess->s.dev->ib_dev, req->iu->dma_addr,
@@ -1601,7 +1601,8 @@ static int create_con(struct rtrs_clt_sess *sess, unsigned int cid)
        con->cpu  = (cid ? cid - 1 : 0) % nr_cpu_ids;
        con->c.cid = cid;
        con->c.sess = &sess->s;
-       atomic_set(&con->io_cnt, 0);
+       /* Align with srv, init as 1 */
+       atomic_set(&con->c.wr_cnt, 1);
        mutex_init(&con->con_mutex);
 
        sess->s.con[cid] = &con->c;
index e276a2dfcf7c7a12686babe95f90e5b34abacf78..3c3ff094588cb87171e2a26877312ec42fe56b6f 100644 (file)
@@ -74,7 +74,6 @@ struct rtrs_clt_con {
        u32                     queue_num;
        unsigned int            cpu;
        struct mutex            con_mutex;
-       atomic_t                io_cnt;
        int                     cm_err;
 };
 
index 36f184a3b67612d2e8fa829e2de22ad0826a139d..a44a4fb1b515beca3f604de8f05a926ee35e1923 100644 (file)
@@ -96,6 +96,7 @@ struct rtrs_con {
        struct rdma_cm_id       *cm_id;
        unsigned int            cid;
        int                     nr_cqe;
+       atomic_t                wr_cnt;
 };
 
 struct rtrs_sess {
index 3df2900861697af1c2bccc24142a5d9b92a83e5a..31b846ca0c5e8967bcb1410cd457d4a0cb8b70f7 100644 (file)
@@ -269,7 +269,7 @@ static int rdma_write_sg(struct rtrs_srv_op *id)
         * From time to time we have to post signaled sends,
         * or send queue will fill up and only QP reset can help.
         */
-       flags = (atomic_inc_return(&id->con->wr_cnt) % srv->queue_depth) ?
+       flags = (atomic_inc_return(&id->con->c.wr_cnt) % srv->queue_depth) ?
                0 : IB_SEND_SIGNALED;
 
        if (need_inval) {
@@ -396,7 +396,7 @@ static int send_io_resp_imm(struct rtrs_srv_con *con, struct rtrs_srv_op *id,
         * From time to time we have to post signalled sends,
         * or send queue will fill up and only QP reset can help.
         */
-       flags = (atomic_inc_return(&con->wr_cnt) % srv->queue_depth) ?
+       flags = (atomic_inc_return(&con->c.wr_cnt) % srv->queue_depth) ?
                0 : IB_SEND_SIGNALED;
        imm = rtrs_to_io_rsp_imm(id->msg_id, errno, need_inval);
        imm_wr.wr.next = NULL;
@@ -1648,7 +1648,7 @@ static int create_con(struct rtrs_srv_sess *sess,
        con->c.cm_id = cm_id;
        con->c.sess = &sess->s;
        con->c.cid = cid;
-       atomic_set(&con->wr_cnt, 1);
+       atomic_set(&con->c.wr_cnt, 1);
        wr_limit = sess->s.dev->ib_dev->attrs.max_qp_wr;
 
        if (con->c.cid == 0) {
index f8da2e3f0bdac4937e622891c32ed1f0610762e5..6785c3b6363e6afeff8d05d662e4029b267bed3b 100644 (file)
@@ -42,7 +42,6 @@ struct rtrs_srv_stats {
 
 struct rtrs_srv_con {
        struct rtrs_con         c;
-       atomic_t                wr_cnt;
        atomic_t                sq_wr_avail;
        struct list_head        rsp_wr_wait_list;
        spinlock_t              rsp_wr_wait_lock;