RDMA/bnxt_re: Fix unconditional fence for newer adapters
commit 8eaca6b5997bd8fd7039f2693e4ecf112823c816 upstream. Older adapters required an unconditional fence for non-wire memory operations. Newer adapters doesn't require this and therefore, disabling the unconditional fence. Fixes: 1801d87b3598 ("RDMA/bnxt_re: Support new 5760X P7 devices") Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com> Link: https://lore.kernel.org/r/1705985677-15551-4-git-send-email-selvin.xavier@broadcom.com Signed-off-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
67819f1070
commit
042804a9ff
|
@ -2563,11 +2563,6 @@ static int bnxt_re_build_inv_wqe(const struct ib_send_wr *wr,
|
|||
wqe->type = BNXT_QPLIB_SWQE_TYPE_LOCAL_INV;
|
||||
wqe->local_inv.inv_l_key = wr->ex.invalidate_rkey;
|
||||
|
||||
/* Need unconditional fence for local invalidate
|
||||
* opcode to work as expected.
|
||||
*/
|
||||
wqe->flags |= BNXT_QPLIB_SWQE_FLAGS_UC_FENCE;
|
||||
|
||||
if (wr->send_flags & IB_SEND_SIGNALED)
|
||||
wqe->flags |= BNXT_QPLIB_SWQE_FLAGS_SIGNAL_COMP;
|
||||
if (wr->send_flags & IB_SEND_SOLICITED)
|
||||
|
@ -2590,12 +2585,6 @@ static int bnxt_re_build_reg_wqe(const struct ib_reg_wr *wr,
|
|||
wqe->frmr.levels = qplib_frpl->hwq.level;
|
||||
wqe->type = BNXT_QPLIB_SWQE_TYPE_REG_MR;
|
||||
|
||||
/* Need unconditional fence for reg_mr
|
||||
* opcode to function as expected.
|
||||
*/
|
||||
|
||||
wqe->flags |= BNXT_QPLIB_SWQE_FLAGS_UC_FENCE;
|
||||
|
||||
if (wr->wr.send_flags & IB_SEND_SIGNALED)
|
||||
wqe->flags |= BNXT_QPLIB_SWQE_FLAGS_SIGNAL_COMP;
|
||||
|
||||
|
@ -2726,6 +2715,18 @@ bad:
|
|||
return rc;
|
||||
}
|
||||
|
||||
static void bnxt_re_legacy_set_uc_fence(struct bnxt_qplib_swqe *wqe)
|
||||
{
|
||||
/* Need unconditional fence for non-wire memory opcode
|
||||
* to work as expected.
|
||||
*/
|
||||
if (wqe->type == BNXT_QPLIB_SWQE_TYPE_LOCAL_INV ||
|
||||
wqe->type == BNXT_QPLIB_SWQE_TYPE_FAST_REG_MR ||
|
||||
wqe->type == BNXT_QPLIB_SWQE_TYPE_REG_MR ||
|
||||
wqe->type == BNXT_QPLIB_SWQE_TYPE_BIND_MW)
|
||||
wqe->flags |= BNXT_QPLIB_SWQE_FLAGS_UC_FENCE;
|
||||
}
|
||||
|
||||
int bnxt_re_post_send(struct ib_qp *ib_qp, const struct ib_send_wr *wr,
|
||||
const struct ib_send_wr **bad_wr)
|
||||
{
|
||||
|
@ -2805,8 +2806,11 @@ int bnxt_re_post_send(struct ib_qp *ib_qp, const struct ib_send_wr *wr,
|
|||
rc = -EINVAL;
|
||||
goto bad;
|
||||
}
|
||||
if (!rc)
|
||||
if (!rc) {
|
||||
if (!bnxt_qplib_is_chip_gen_p5_p7(qp->rdev->chip_ctx))
|
||||
bnxt_re_legacy_set_uc_fence(&wqe);
|
||||
rc = bnxt_qplib_post_send(&qp->qplib_qp, &wqe);
|
||||
}
|
||||
bad:
|
||||
if (rc) {
|
||||
ibdev_err(&qp->rdev->ibdev,
|
||||
|
|
Loading…
Reference in New Issue