RDMA/hns: Avoid unnecessary memset on WQEs in post_send
authorLang Cheng <chenglang@huawei.com>
Fri, 5 Feb 2021 09:39:32 +0000 (17:39 +0800)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 9 Feb 2021 00:25:25 +0000 (20:25 -0400)
All fields of WQE will be rewrote, so the memset is unnecessary. And when
SQ is working in OWNER mode, the pipeline may prefetch the WQEs beyond PI,
the memset operation may flip the owner bit too early, then the pipeline
may get a wrong WQ.

Link: https://lore.kernel.org/r/1612517974-31867-11-git-send-email-liweihang@huawei.com
Signed-off-by: Lang Cheng <chenglang@huawei.com>
Signed-off-by: Weihang Li <liweihang@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index 7d1bfcfd2db6826e15d0508561c84cf5eb4ac553..45a11fdaaa5013c7523b24bd1a205f10d9e0d6ae 100644 (file)
@@ -469,7 +469,6 @@ static inline int set_ud_wqe(struct hns_roce_qp *qp,
        int ret;
 
        valid_num_sge = calc_wr_sge_num(wr, &msg_len);
-       memset(ud_sq_wqe, 0, sizeof(*ud_sq_wqe));
 
        ret = set_ud_opcode(ud_sq_wqe, wr);
        if (WARN_ON(ret))
@@ -575,7 +574,6 @@ static inline int set_rc_wqe(struct hns_roce_qp *qp,
        int ret;
 
        valid_num_sge = calc_wr_sge_num(wr, &msg_len);
-       memset(rc_sq_wqe, 0, sizeof(*rc_sq_wqe));
 
        rc_sq_wqe->msg_len = cpu_to_le32(msg_len);