RDMA/rtrs-srv: Init wr_cnt as 1
authorJack Wang <jinpu.wang@cloud.ionos.com>
Thu, 17 Dec 2020 14:19:14 +0000 (15:19 +0100)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 15 Jan 2021 19:25:10 +0000 (15:25 -0400)
Fix up wr_avail accounting. if wr_cnt is 0, then we do SIGNAL for first
wr, in completion we add queue_depth back, which is not right in the
sense of tracking for available wr.

So fix it by init wr_cnt to 1.

Fixes: 9cb837480424 ("RDMA/rtrs: server: main functionality")
Link: https://lore.kernel.org/r/20201217141915.56989-19-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-srv.c

index 7a018e5de708019394136fc25352406ea086b75b..918f1cf140cdea4cb60bbd2a5c07334e3f4e4796 100644 (file)
@@ -1603,7 +1603,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, 0);
+       atomic_set(&con->wr_cnt, 1);
 
        if (con->c.cid == 0) {
                /*