From: Lijun Ou <ouli...@huawei.com>

When only set IB_QP_DEST_QPN flag for attr_mask, the operation of
assigning the dest_qp_num for dest_qp field of qp context is valid.

Signed-off-by: Lijun Ou <ouli...@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.hu...@huawei.com>
Signed-off-by: Shaobo Xu <xushao...@huawei.com>
---
 drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c 
b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
index 1071fa2..4fb7844 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
@@ -2880,10 +2880,11 @@ static int hns_roce_v1_m_qp(struct ib_qp *ibqp, const 
struct ib_qp_attr *attr,
                               QP_CONTEXT_QPC_BYTES_32_RESPONDER_RESOURCES_S,
                               ilog2((unsigned int)attr->max_dest_rd_atomic));
 
-               roce_set_field(context->qpc_bytes_36,
-                              QP_CONTEXT_QPC_BYTES_36_DEST_QP_M,
-                              QP_CONTEXT_QPC_BYTES_36_DEST_QP_S,
-                              attr->dest_qp_num);
+               if (attr_mask & IB_QP_DEST_QPN)
+                       roce_set_field(context->qpc_bytes_36,
+                                      QP_CONTEXT_QPC_BYTES_36_DEST_QP_M,
+                                      QP_CONTEXT_QPC_BYTES_36_DEST_QP_S,
+                                      attr->dest_qp_num);
 
                /* Configure GID index */
                port_num = rdma_ah_get_port_num(&attr->ah_attr);
-- 
1.9.1

Reply via email to