mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 20:46:48 +02:00
RDMA/bnxt_re: Fix to remove workload check in SRQ limit path
There should not be any checks of current workload to set
srq_limit value to SRQ hw context.
Remove all such workload checks and make a direct call to
set srq_limit via doorbell SRQ_ARM.
Fixes: 37cb11acf1 ("RDMA/bnxt_re: Add SRQ support for Broadcom adapters")
Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Link: https://patch.msgid.link/20250805101000.233310-3-kalesh-anakkur.purayil@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
6296f9a529
commit
666bce0bd7
|
|
@ -1921,7 +1921,6 @@ int bnxt_re_modify_srq(struct ib_srq *ib_srq, struct ib_srq_attr *srq_attr,
|
|||
struct bnxt_re_srq *srq = container_of(ib_srq, struct bnxt_re_srq,
|
||||
ib_srq);
|
||||
struct bnxt_re_dev *rdev = srq->rdev;
|
||||
int rc;
|
||||
|
||||
switch (srq_attr_mask) {
|
||||
case IB_SRQ_MAX_WR:
|
||||
|
|
@ -1933,11 +1932,8 @@ int bnxt_re_modify_srq(struct ib_srq *ib_srq, struct ib_srq_attr *srq_attr,
|
|||
return -EINVAL;
|
||||
|
||||
srq->qplib_srq.threshold = srq_attr->srq_limit;
|
||||
rc = bnxt_qplib_modify_srq(&rdev->qplib_res, &srq->qplib_srq);
|
||||
if (rc) {
|
||||
ibdev_err(&rdev->ibdev, "Modify HW SRQ failed!");
|
||||
return rc;
|
||||
}
|
||||
bnxt_qplib_srq_arm_db(&srq->qplib_srq.dbinfo, srq->qplib_srq.threshold);
|
||||
|
||||
/* On success, update the shadow */
|
||||
srq->srq_limit = srq_attr->srq_limit;
|
||||
/* No need to Build and send response back to udata */
|
||||
|
|
|
|||
|
|
@ -706,7 +706,6 @@ int bnxt_qplib_create_srq(struct bnxt_qplib_res *res,
|
|||
srq->dbinfo.max_slot = 1;
|
||||
srq->dbinfo.priv_db = res->dpi_tbl.priv_db;
|
||||
bnxt_qplib_armen_db(&srq->dbinfo, DBC_DBC_TYPE_SRQ_ARMENA);
|
||||
srq->arm_req = false;
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
|
|
@ -716,24 +715,6 @@ int bnxt_qplib_create_srq(struct bnxt_qplib_res *res,
|
|||
return rc;
|
||||
}
|
||||
|
||||
int bnxt_qplib_modify_srq(struct bnxt_qplib_res *res,
|
||||
struct bnxt_qplib_srq *srq)
|
||||
{
|
||||
struct bnxt_qplib_hwq *srq_hwq = &srq->hwq;
|
||||
u32 count;
|
||||
|
||||
count = __bnxt_qplib_get_avail(srq_hwq);
|
||||
if (count > srq->threshold) {
|
||||
srq->arm_req = false;
|
||||
bnxt_qplib_srq_arm_db(&srq->dbinfo, srq->threshold);
|
||||
} else {
|
||||
/* Deferred arming */
|
||||
srq->arm_req = true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bnxt_qplib_query_srq(struct bnxt_qplib_res *res,
|
||||
struct bnxt_qplib_srq *srq)
|
||||
{
|
||||
|
|
@ -775,7 +756,6 @@ int bnxt_qplib_post_srq_recv(struct bnxt_qplib_srq *srq,
|
|||
struct bnxt_qplib_hwq *srq_hwq = &srq->hwq;
|
||||
struct rq_wqe *srqe;
|
||||
struct sq_sge *hw_sge;
|
||||
u32 count = 0;
|
||||
int i, next;
|
||||
|
||||
spin_lock(&srq_hwq->lock);
|
||||
|
|
@ -807,15 +787,8 @@ int bnxt_qplib_post_srq_recv(struct bnxt_qplib_srq *srq,
|
|||
|
||||
bnxt_qplib_hwq_incr_prod(&srq->dbinfo, srq_hwq, srq->dbinfo.max_slot);
|
||||
|
||||
spin_lock(&srq_hwq->lock);
|
||||
count = __bnxt_qplib_get_avail(srq_hwq);
|
||||
spin_unlock(&srq_hwq->lock);
|
||||
/* Ring DB */
|
||||
bnxt_qplib_ring_prod_db(&srq->dbinfo, DBC_DBC_TYPE_SRQ);
|
||||
if (srq->arm_req == true && count > srq->threshold) {
|
||||
srq->arm_req = false;
|
||||
bnxt_qplib_srq_arm_db(&srq->dbinfo, srq->threshold);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -546,8 +546,6 @@ int bnxt_qplib_enable_nq(struct pci_dev *pdev, struct bnxt_qplib_nq *nq,
|
|||
srqn_handler_t srq_handler);
|
||||
int bnxt_qplib_create_srq(struct bnxt_qplib_res *res,
|
||||
struct bnxt_qplib_srq *srq);
|
||||
int bnxt_qplib_modify_srq(struct bnxt_qplib_res *res,
|
||||
struct bnxt_qplib_srq *srq);
|
||||
int bnxt_qplib_query_srq(struct bnxt_qplib_res *res,
|
||||
struct bnxt_qplib_srq *srq);
|
||||
void bnxt_qplib_destroy_srq(struct bnxt_qplib_res *res,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user