From 76243de0793c5ac9fbd208c48a495d97264150e9 Mon Sep 17 00:00:00 2001 From: Wei Lin Guay Date: Fri, 7 Oct 2016 10:07:11 +0200 Subject: [PATCH] sif: qp: Fix modify_qp_hw from SQE to RTS Orabug: 24810237 Fix an issue in modify_qp_hw from SQE to RTS returns EPSC_MODIFY_CANNOT_CHANGE_QP_ATTR. In sif, qp transition from SQE to RTS must explicitly set the req_access_error to 0. Signed-off-by: Wei Lin Guay Reviewed-by: Knut Omang --- drivers/infiniband/hw/sif/sif_qp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/infiniband/hw/sif/sif_qp.c b/drivers/infiniband/hw/sif/sif_qp.c index aa4d70361ca7..aed171cc9f2f 100644 --- a/drivers/infiniband/hw/sif/sif_qp.c +++ b/drivers/infiniband/hw/sif/sif_qp.c @@ -1429,6 +1429,14 @@ static int modify_qp_hw(struct sif_dev *sdev, struct sif_qp *qp, } ok_modify_qp_sw: + /* The QP mask for QP transition is checked in sif_modify_qp_is_ok. + * No check for qp_type because only UC/UD and MANSP1 can be transitioned + * to SQE. + */ + if ((qp_attr->qp_state == IB_QPS_RTS) && (qp_attr->cur_qp_state == IB_QPS_SQE)) { + ctrl_attr->req_access_error = 1; + mct->data.req_access_error = 0; + } /* * On modify to RTR, we set the TSU SL (tsl), because we have -- 2.50.1