Skip to content

Commit 99fc12f

Browse files
paravmellanoxdledford
authored andcommitted
IB/rxe: Avoid accessing timers for non RC QPs
This patch avoids RNR NAK timer and retransmit timer initialization and cleanup for non RC QPs (such as UD QP, GSI QP). Reviewed-by: Moni Shoua <monis@mellanox.com> Signed-off-by: Parav Pandit <parav@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
1 parent 0b1e5b9 commit 99fc12f

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

drivers/infiniband/sw/rxe/rxe_qp.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,10 +273,11 @@ static int rxe_qp_init_req(struct rxe_dev *rxe, struct rxe_qp *qp,
273273
rxe_init_task(rxe, &qp->comp.task, qp,
274274
rxe_completer, "comp");
275275

276-
setup_timer(&qp->rnr_nak_timer, rnr_nak_timer, (unsigned long)qp);
277-
setup_timer(&qp->retrans_timer, retransmit_timer, (unsigned long)qp);
278276
qp->qp_timeout_jiffies = 0; /* Can't be set for UD/UC in modify_qp */
279-
277+
if (init->qp_type == IB_QPT_RC) {
278+
setup_timer(&qp->rnr_nak_timer, rnr_nak_timer, (unsigned long)qp);
279+
setup_timer(&qp->retrans_timer, retransmit_timer, (unsigned long)qp);
280+
}
280281
return 0;
281282
}
282283

@@ -804,8 +805,10 @@ void rxe_qp_destroy(struct rxe_qp *qp)
804805
qp->qp_timeout_jiffies = 0;
805806
rxe_cleanup_task(&qp->resp.task);
806807

807-
del_timer_sync(&qp->retrans_timer);
808-
del_timer_sync(&qp->rnr_nak_timer);
808+
if (qp_type(qp) == IB_QPT_RC) {
809+
del_timer_sync(&qp->retrans_timer);
810+
del_timer_sync(&qp->rnr_nak_timer);
811+
}
809812

810813
rxe_cleanup_task(&qp->req.task);
811814
rxe_cleanup_task(&qp->comp.task);

0 commit comments

Comments
 (0)