From: Wei Lin Guay Date: Fri, 7 Oct 2016 08:07:11 +0000 (+0200) Subject: sif: qp: Fix modify_qp_hw from SQE to RTS X-Git-Tag: v4.1.12-92~57^2~6 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=76243de0793c5ac9fbd208c48a495d97264150e9;p=users%2Fjedix%2Flinux-maple.git 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 --- diff --git a/drivers/infiniband/hw/sif/sif_qp.c b/drivers/infiniband/hw/sif/sif_qp.c index aa4d70361ca75..aed171cc9f2f9 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