Commit 9272cba0 authored by Selvin Xavier's avatar Selvin Xavier Committed by Leon Romanovsky
Browse files

RDMA/bnxt_re: Fix the locking while accessing the QP table



QP table handling is synchronized with destroy QP and Async
event from the HW. The same needs to be synchronized
during create_qp also. Use the same lock in create_qp also.

Fixes: 76d3ddff ("RDMA/bnxt_re: synchronize the qp-handle table array")
Fixes: f218d67e ("RDMA/bnxt_re: Allow posting when QPs are in error")
Fixes: 84cf229f ("RDMA/bnxt_re: Fix the qp table indexing")
Signed-off-by: default avatarSelvin Xavier <selvin.xavier@broadcom.com>
Link: https://patch.msgid.link/20241217102649.1377704-6-kalesh-anakkur.purayil@broadcom.com


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
parent bb839f3a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1181,9 +1181,11 @@ int bnxt_qplib_create_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
		rq->dbinfo.db = qp->dpi->dbr;
		rq->dbinfo.max_slot = bnxt_qplib_set_rq_max_slot(rq->wqe_size);
	}
	spin_lock_bh(&rcfw->tbl_lock);
	tbl_indx = map_qp_id_to_tbl_indx(qp->id, rcfw);
	rcfw->qp_tbl[tbl_indx].qp_id = qp->id;
	rcfw->qp_tbl[tbl_indx].qp_handle = (void *)qp;
	spin_unlock_bh(&rcfw->tbl_lock);

	return 0;
fail: