]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/bnxt_re: Fix the max CQ WQEs for older adapters
authorAbhishek Mohapatra <abhishek.mohapatra@broadcom.com>
Tue, 8 Oct 2024 07:41:33 +0000 (00:41 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Nov 2024 01:02:26 +0000 (02:02 +0100)
[ Upstream commit ac6df53738b465053d38d491fff87bd7d37fdc07 ]

Older adapters doesn't support the MAX CQ WQEs reported by older FW. So
restrict the value reported to 1M always for older adapters.

Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
Link: https://patch.msgid.link/r/1728373302-19530-2-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Abhishek Mohapatra<abhishek.mohapatra@broadcom.com>
Reviewed-by: Chandramohan Akula <chandramohan.akula@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/bnxt_re/qplib_sp.c
drivers/infiniband/hw/bnxt_re/qplib_sp.h

index 9328db92fa6db3ab02ce6bcddecd11c7fc4cefbe..8e59422dd137e8f4604b07b0ff82ad148d548139 100644 (file)
@@ -137,6 +137,8 @@ int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
                            6 : sb->max_sge;
        attr->max_cq = le32_to_cpu(sb->max_cq);
        attr->max_cq_wqes = le32_to_cpu(sb->max_cqe);
+       if (!bnxt_qplib_is_chip_gen_p7(rcfw->res->cctx))
+               attr->max_cq_wqes = min_t(u32, BNXT_QPLIB_MAX_CQ_WQES, attr->max_cq_wqes);
        attr->max_cq_sges = attr->max_qp_sges;
        attr->max_mr = le32_to_cpu(sb->max_mr);
        attr->max_mw = le32_to_cpu(sb->max_mw);
index 16a67d70a6fc4bcdf5a4df70b0ae1fc5f9fac13a..2f16f3db093ea016a08c8c05d52a17ff1b45cd99 100644 (file)
@@ -55,6 +55,7 @@ struct bnxt_qplib_dev_attr {
        u32                             max_qp_wqes;
        u32                             max_qp_sges;
        u32                             max_cq;
+#define BNXT_QPLIB_MAX_CQ_WQES          0xfffff
        u32                             max_cq_wqes;
        u32                             max_cq_sges;
        u32                             max_mr;