diff mbox series

[for-next] RDMA/qedr: Fix reporting QP timeout attribute

Message ID 20220525132029.84813-1-kamalheib1@gmail.com (mailing list archive)
State Accepted
Headers show
Series [for-next] RDMA/qedr: Fix reporting QP timeout attribute | expand

Commit Message

Kamal Heib May 25, 2022, 1:20 p.m. UTC
Make sure to save the passed QP timeout attribute when the QP gets modified,
so when calling query QP the right value is reported and not the
converted value that is required by the firmware. This issue was found
while running the pyverbs tests.

Fixes: cecbcddf6461 ("qedr: Add support for QP verbs")
Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
 drivers/infiniband/hw/qedr/qedr.h  | 1 +
 drivers/infiniband/hw/qedr/verbs.c | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

Comments

Michal Kalderon May 29, 2022, 8:25 a.m. UTC | #1
> From: Kamal Heib <kamalheib1@gmail.com>
> Sent: Wednesday, May 25, 2022 4:20 PM
> ----------------------------------------------------------------------
> Make sure to save the passed QP timeout attribute when the QP gets
> modified,
> so when calling query QP the right value is reported and not the
> converted value that is required by the firmware. This issue was found
> while running the pyverbs tests.
> 
> Fixes: cecbcddf6461 ("qedr: Add support for QP verbs")
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> ---
>  drivers/infiniband/hw/qedr/qedr.h  | 1 +
>  drivers/infiniband/hw/qedr/verbs.c | 4 +++-
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/infiniband/hw/qedr/qedr.h
> b/drivers/infiniband/hw/qedr/qedr.h
> index 8def88cfa300..db9ef3e1eb97 100644
> --- a/drivers/infiniband/hw/qedr/qedr.h
> +++ b/drivers/infiniband/hw/qedr/qedr.h
> @@ -418,6 +418,7 @@ struct qedr_qp {
>  	u32 sq_psn;
>  	u32 qkey;
>  	u32 dest_qp_num;
> +	u8 timeout;
> 
>  	/* Relevant to qps created from kernel space only (ULPs) */
>  	u8 prev_wqe_size;
> diff --git a/drivers/infiniband/hw/qedr/verbs.c
> b/drivers/infiniband/hw/qedr/verbs.c
> index f0f43b6db89e..03ed7c0fae50 100644
> --- a/drivers/infiniband/hw/qedr/verbs.c
> +++ b/drivers/infiniband/hw/qedr/verbs.c
> @@ -2613,6 +2613,8 @@ int qedr_modify_qp(struct ib_qp *ibqp, struct
> ib_qp_attr *attr,
>  					1 << max_t(int, attr->timeout - 8, 0);
>  		else
>  			qp_params.ack_timeout = 0;
> +
> +		qp->timeout = attr->timeout;
>  	}
> 
>  	if (attr_mask & IB_QP_RETRY_CNT) {
> @@ -2772,7 +2774,7 @@ int qedr_query_qp(struct ib_qp *ibqp,
>  	rdma_ah_set_dgid_raw(&qp_attr->ah_attr, &params.dgid.bytes[0]);
>  	rdma_ah_set_port_num(&qp_attr->ah_attr, 1);
>  	rdma_ah_set_sl(&qp_attr->ah_attr, 0);
> -	qp_attr->timeout = params.timeout;
> +	qp_attr->timeout = qp->timeout;
>  	qp_attr->rnr_retry = params.rnr_retry;
>  	qp_attr->retry_cnt = params.retry_cnt;
>  	qp_attr->min_rnr_timer = params.min_rnr_nak_timer;
> --
> 2.34.3

Thanks, 

Acked-by: Michal Kalderon <michal.kalderon@marvell.com>
Leon Romanovsky June 7, 2022, 8:48 a.m. UTC | #2
On Wed, May 25, 2022 at 04:20:29PM +0300, Kamal Heib wrote:
> Make sure to save the passed QP timeout attribute when the QP gets modified,
> so when calling query QP the right value is reported and not the
> converted value that is required by the firmware. This issue was found
> while running the pyverbs tests.
> 
> Fixes: cecbcddf6461 ("qedr: Add support for QP verbs")
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> ---
>  drivers/infiniband/hw/qedr/qedr.h  | 1 +
>  drivers/infiniband/hw/qedr/verbs.c | 4 +++-
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 

Thanks, applied to -rc.
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/qedr/qedr.h b/drivers/infiniband/hw/qedr/qedr.h
index 8def88cfa300..db9ef3e1eb97 100644
--- a/drivers/infiniband/hw/qedr/qedr.h
+++ b/drivers/infiniband/hw/qedr/qedr.h
@@ -418,6 +418,7 @@  struct qedr_qp {
 	u32 sq_psn;
 	u32 qkey;
 	u32 dest_qp_num;
+	u8 timeout;
 
 	/* Relevant to qps created from kernel space only (ULPs) */
 	u8 prev_wqe_size;
diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
index f0f43b6db89e..03ed7c0fae50 100644
--- a/drivers/infiniband/hw/qedr/verbs.c
+++ b/drivers/infiniband/hw/qedr/verbs.c
@@ -2613,6 +2613,8 @@  int qedr_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 					1 << max_t(int, attr->timeout - 8, 0);
 		else
 			qp_params.ack_timeout = 0;
+
+		qp->timeout = attr->timeout;
 	}
 
 	if (attr_mask & IB_QP_RETRY_CNT) {
@@ -2772,7 +2774,7 @@  int qedr_query_qp(struct ib_qp *ibqp,
 	rdma_ah_set_dgid_raw(&qp_attr->ah_attr, &params.dgid.bytes[0]);
 	rdma_ah_set_port_num(&qp_attr->ah_attr, 1);
 	rdma_ah_set_sl(&qp_attr->ah_attr, 0);
-	qp_attr->timeout = params.timeout;
+	qp_attr->timeout = qp->timeout;
 	qp_attr->rnr_retry = params.rnr_retry;
 	qp_attr->retry_cnt = params.retry_cnt;
 	qp_attr->min_rnr_timer = params.min_rnr_nak_timer;