* [PATCH rdma-next 0/3] bnxt_re driver update
@ 2025-07-04 4:38 Kalesh AP
2025-07-04 4:38 ` [PATCH rdma-next 1/3] RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM Kalesh AP
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Kalesh AP @ 2025-07-04 4:38 UTC (permalink / raw)
To: leon, jgg; +Cc: linux-rdma, andrew.gospodarek, selvin.xavier, Kalesh AP
This patchset adds support for 2G page size in the bnxt_re driver.
There are couple of cosmetic changes as well.
Kalesh AP (2):
RDMA/bnxt_re: Fix size of uverbs_copy_to() in
BNXT_RE_METHOD_GET_TOGGLE_MEM
RDMA/bnxt_re: Use macro instead of hard coded value
Selvin Xavier (1):
RDMA/bnxt_re: Support 2G message size
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
drivers/infiniband/hw/bnxt_re/qplib_fp.c | 28 ++++++++++++------------
drivers/infiniband/hw/bnxt_re/qplib_fp.h | 3 +++
drivers/infiniband/hw/bnxt_re/qplib_sp.c | 2 +-
drivers/infiniband/hw/bnxt_re/qplib_sp.h | 1 +
5 files changed, 20 insertions(+), 16 deletions(-)
--
2.43.5
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH rdma-next 1/3] RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM
2025-07-04 4:38 [PATCH rdma-next 0/3] bnxt_re driver update Kalesh AP
@ 2025-07-04 4:38 ` Kalesh AP
2025-07-04 4:38 ` [PATCH rdma-next 2/3] RDMA/bnxt_re: Support 2G message size Kalesh AP
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Kalesh AP @ 2025-07-04 4:38 UTC (permalink / raw)
To: leon, jgg
Cc: linux-rdma, andrew.gospodarek, selvin.xavier, Kalesh AP,
Saravanan Vajravel, Shravya KN
Since both "length" and "offset" are of type u32, there is
no functional issue here.
Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
---
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index 063801384b2b..3a627acb82ce 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -4738,7 +4738,7 @@ static int UVERBS_HANDLER(BNXT_RE_METHOD_GET_TOGGLE_MEM)(struct uverbs_attr_bund
return err;
err = uverbs_copy_to(attrs, BNXT_RE_TOGGLE_MEM_MMAP_OFFSET,
- &offset, sizeof(length));
+ &offset, sizeof(offset));
if (err)
return err;
--
2.43.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH rdma-next 2/3] RDMA/bnxt_re: Support 2G message size
2025-07-04 4:38 [PATCH rdma-next 0/3] bnxt_re driver update Kalesh AP
2025-07-04 4:38 ` [PATCH rdma-next 1/3] RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM Kalesh AP
@ 2025-07-04 4:38 ` Kalesh AP
2025-07-06 7:37 ` Leon Romanovsky
2025-07-04 4:38 ` [PATCH rdma-next 3/3] RDMA/bnxt_re: Use macro instead of hard coded value Kalesh AP
2025-07-06 7:38 ` [PATCH rdma-next 0/3] bnxt_re driver update Leon Romanovsky
3 siblings, 1 reply; 7+ messages in thread
From: Kalesh AP @ 2025-07-04 4:38 UTC (permalink / raw)
To: leon, jgg
Cc: linux-rdma, andrew.gospodarek, selvin.xavier, Shravya KN,
Saravanan Vajravel, Kalesh AP
From: Selvin Xavier <selvin.xavier@broadcom.com>
bnxt_qplib_put_sges is calculating the length in
a signed int. So handling the 2G message size
is not working since it is considered as negative.
Use a unsigned number to calculate the total message
length. As per the spec, IB message size shall be
between zero and 2^31 bytes (inclusive). So adding
a check for 2G message size.
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
Reviewed-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
---
drivers/infiniband/hw/bnxt_re/qplib_fp.c | 28 ++++++++++++------------
drivers/infiniband/hw/bnxt_re/qplib_fp.h | 3 +++
2 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_fp.c b/drivers/infiniband/hw/bnxt_re/qplib_fp.c
index be34c605d516..dfe3177123e5 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_fp.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_fp.c
@@ -1750,9 +1750,9 @@ static void bnxt_qplib_fill_psn_search(struct bnxt_qplib_qp *qp,
}
}
-static int bnxt_qplib_put_inline(struct bnxt_qplib_qp *qp,
- struct bnxt_qplib_swqe *wqe,
- u16 *idx)
+static unsigned int bnxt_qplib_put_inline(struct bnxt_qplib_qp *qp,
+ struct bnxt_qplib_swqe *wqe,
+ u32 *idx)
{
struct bnxt_qplib_hwq *hwq;
int len, t_len, offt;
@@ -1769,7 +1769,7 @@ static int bnxt_qplib_put_inline(struct bnxt_qplib_qp *qp,
il_src = (void *)wqe->sg_list[indx].addr;
t_len += len;
if (t_len > qp->max_inline_data)
- return -ENOMEM;
+ return BNXT_RE_INVAL_MSG_SIZE;
while (len) {
if (pull_dst) {
pull_dst = false;
@@ -1795,9 +1795,9 @@ static int bnxt_qplib_put_inline(struct bnxt_qplib_qp *qp,
return t_len;
}
-static u32 bnxt_qplib_put_sges(struct bnxt_qplib_hwq *hwq,
- struct bnxt_qplib_sge *ssge,
- u16 nsge, u16 *idx)
+static unsigned int bnxt_qplib_put_sges(struct bnxt_qplib_hwq *hwq,
+ struct bnxt_qplib_sge *ssge,
+ u32 nsge, u32 *idx)
{
struct sq_sge *dsge;
int indx, len = 0;
@@ -1878,14 +1878,12 @@ int bnxt_qplib_post_send(struct bnxt_qplib_qp *qp,
struct bnxt_qplib_hwq *hwq;
struct bnxt_qplib_swq *swq;
bool sch_handler = false;
+ u32 wqe_idx, slots, idx;
u16 wqe_sz, qdf = 0;
bool msn_update;
void *base_hdr;
void *ext_hdr;
__le32 temp32;
- u32 wqe_idx;
- u32 slots;
- u16 idx;
hwq = &sq->hwq;
if (qp->state != CMDQ_MODIFY_QP_NEW_STATE_RTS &&
@@ -1937,8 +1935,10 @@ int bnxt_qplib_post_send(struct bnxt_qplib_qp *qp,
else
data_len = bnxt_qplib_put_sges(hwq, wqe->sg_list, wqe->num_sge,
&idx);
- if (data_len < 0)
- goto queue_err;
+ if (data_len > BNXT_RE_MAX_MSG_SIZE) {
+ rc = -EINVAL;
+ goto done;
+ }
/* Make sure we update MSN table only for wired wqes */
msn_update = true;
/* Specifics */
@@ -2139,8 +2139,8 @@ int bnxt_qplib_post_recv(struct bnxt_qplib_qp *qp,
struct bnxt_qplib_hwq *hwq;
struct bnxt_qplib_swq *swq;
bool sch_handler = false;
- u16 wqe_sz, idx;
- u32 wqe_idx;
+ u32 wqe_idx, idx;
+ u16 wqe_sz;
int rc = 0;
hwq = &rq->hwq;
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_fp.h b/drivers/infiniband/hw/bnxt_re/qplib_fp.h
index 0d9487c889ff..ab125f1d949e 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_fp.h
+++ b/drivers/infiniband/hw/bnxt_re/qplib_fp.h
@@ -346,6 +346,9 @@ struct bnxt_qplib_qp {
u8 tos_dscp;
};
+#define BNXT_RE_MAX_MSG_SIZE 0x80000000
+#define BNXT_RE_INVAL_MSG_SIZE 0xFFFFFFFF
+
#define BNXT_QPLIB_MAX_CQE_ENTRY_SIZE sizeof(struct cq_base)
#define CQE_CNT_PER_PG (PAGE_SIZE / BNXT_QPLIB_MAX_CQE_ENTRY_SIZE)
--
2.43.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH rdma-next 3/3] RDMA/bnxt_re: Use macro instead of hard coded value
2025-07-04 4:38 [PATCH rdma-next 0/3] bnxt_re driver update Kalesh AP
2025-07-04 4:38 ` [PATCH rdma-next 1/3] RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM Kalesh AP
2025-07-04 4:38 ` [PATCH rdma-next 2/3] RDMA/bnxt_re: Support 2G message size Kalesh AP
@ 2025-07-04 4:38 ` Kalesh AP
2025-07-06 7:38 ` [PATCH rdma-next 0/3] bnxt_re driver update Leon Romanovsky
3 siblings, 0 replies; 7+ messages in thread
From: Kalesh AP @ 2025-07-04 4:38 UTC (permalink / raw)
To: leon, jgg
Cc: linux-rdma, andrew.gospodarek, selvin.xavier, Kalesh AP,
Shravya KN, Hongguang Gao
1. Defined a macro for the hard coded value.
2. "access" field in the request structure is of type "u8".
Updated the mask accordingly.
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Shravya KN <shravya.k-n@broadcom.com>
Reviewed-by: Hongguang Gao <hongguang.gao@broadcom.com>
---
drivers/infiniband/hw/bnxt_re/qplib_sp.c | 2 +-
drivers/infiniband/hw/bnxt_re/qplib_sp.h | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.c b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
index 9efd32a3dc55..68981399598d 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_sp.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
@@ -674,7 +674,7 @@ int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
req.log2_pbl_pg_size = cpu_to_le16(((ilog2(PAGE_SIZE) <<
CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_SFT) &
CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_MASK));
- req.access = (mr->access_flags & 0xFFFF);
+ req.access = (mr->access_flags & BNXT_QPLIB_MR_ACCESS_MASK);
req.va = cpu_to_le64(mr->va);
req.key = cpu_to_le32(mr->lkey);
if (_is_alloc_mr_unified(res->dattr->dev_cap_flags))
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.h b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
index e626b05038a1..09faf4a1e849 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_sp.h
+++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
@@ -111,6 +111,7 @@ struct bnxt_qplib_mrw {
struct bnxt_qplib_pd *pd;
int type;
u32 access_flags;
+#define BNXT_QPLIB_MR_ACCESS_MASK 0xFF
#define BNXT_QPLIB_FR_PMR 0x80000000
u32 lkey;
u32 rkey;
--
2.43.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH rdma-next 2/3] RDMA/bnxt_re: Support 2G message size
2025-07-04 4:38 ` [PATCH rdma-next 2/3] RDMA/bnxt_re: Support 2G message size Kalesh AP
@ 2025-07-06 7:37 ` Leon Romanovsky
2025-07-07 2:34 ` Kalesh Anakkur Purayil
0 siblings, 1 reply; 7+ messages in thread
From: Leon Romanovsky @ 2025-07-06 7:37 UTC (permalink / raw)
To: Kalesh AP
Cc: jgg, linux-rdma, andrew.gospodarek, selvin.xavier, Shravya KN,
Saravanan Vajravel
On Fri, Jul 04, 2025 at 10:08:56AM +0530, Kalesh AP wrote:
> From: Selvin Xavier <selvin.xavier@broadcom.com>
>
> bnxt_qplib_put_sges is calculating the length in
> a signed int. So handling the 2G message size
> is not working since it is considered as negative.
>
> Use a unsigned number to calculate the total message
> length. As per the spec, IB message size shall be
> between zero and 2^31 bytes (inclusive). So adding
> a check for 2G message size.
You can easily use opto 80 chars per-line in commit messages, there is
no need to limit yourself to 50 chars.
Thanks
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH rdma-next 0/3] bnxt_re driver update
2025-07-04 4:38 [PATCH rdma-next 0/3] bnxt_re driver update Kalesh AP
` (2 preceding siblings ...)
2025-07-04 4:38 ` [PATCH rdma-next 3/3] RDMA/bnxt_re: Use macro instead of hard coded value Kalesh AP
@ 2025-07-06 7:38 ` Leon Romanovsky
3 siblings, 0 replies; 7+ messages in thread
From: Leon Romanovsky @ 2025-07-06 7:38 UTC (permalink / raw)
To: jgg, Kalesh AP; +Cc: linux-rdma, andrew.gospodarek, selvin.xavier
On Fri, 04 Jul 2025 10:08:54 +0530, Kalesh AP wrote:
> This patchset adds support for 2G page size in the bnxt_re driver.
> There are couple of cosmetic changes as well.
>
> Kalesh AP (2):
> RDMA/bnxt_re: Fix size of uverbs_copy_to() in
> BNXT_RE_METHOD_GET_TOGGLE_MEM
> RDMA/bnxt_re: Use macro instead of hard coded value
>
> [...]
Applied, thanks!
[1/3] RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM
https://git.kernel.org/rdma/rdma/c/8ba2e1eb6b3ec2
[2/3] RDMA/bnxt_re: Support 2G message size
https://git.kernel.org/rdma/rdma/c/c6acd006f110a0
[3/3] RDMA/bnxt_re: Use macro instead of hard coded value
https://git.kernel.org/rdma/rdma/c/bdc5726cdd454f
Best regards,
--
Leon Romanovsky <leon@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH rdma-next 2/3] RDMA/bnxt_re: Support 2G message size
2025-07-06 7:37 ` Leon Romanovsky
@ 2025-07-07 2:34 ` Kalesh Anakkur Purayil
0 siblings, 0 replies; 7+ messages in thread
From: Kalesh Anakkur Purayil @ 2025-07-07 2:34 UTC (permalink / raw)
To: Leon Romanovsky
Cc: jgg, linux-rdma, andrew.gospodarek, selvin.xavier, Shravya KN,
Saravanan Vajravel
[-- Attachment #1.1: Type: text/plain, Size: 829 bytes --]
On Sun, Jul 6, 2025 at 1:07 PM Leon Romanovsky <leon@kernel.org> wrote:
> On Fri, Jul 04, 2025 at 10:08:56AM +0530, Kalesh AP wrote:
> > From: Selvin Xavier <selvin.xavier@broadcom.com>
> >
> > bnxt_qplib_put_sges is calculating the length in
> > a signed int. So handling the 2G message size
> > is not working since it is considered as negative.
> >
> > Use a unsigned number to calculate the total message
> > length. As per the spec, IB message size shall be
> > between zero and 2^31 bytes (inclusive). So adding
> > a check for 2G message size.
>
> You can easily use opto 80 chars per-line in commit messages, there is
> no need to limit yourself to 50 chars.
> Sure, thank you Leon. I usually format upto 80 characters per line, not
> sure how I missed it.
> Thanks
>
--
Regards,
Kalesh AP
[-- Attachment #1.2: Type: text/html, Size: 1437 bytes --]
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4226 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-07-07 2:35 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-04 4:38 [PATCH rdma-next 0/3] bnxt_re driver update Kalesh AP
2025-07-04 4:38 ` [PATCH rdma-next 1/3] RDMA/bnxt_re: Fix size of uverbs_copy_to() in BNXT_RE_METHOD_GET_TOGGLE_MEM Kalesh AP
2025-07-04 4:38 ` [PATCH rdma-next 2/3] RDMA/bnxt_re: Support 2G message size Kalesh AP
2025-07-06 7:37 ` Leon Romanovsky
2025-07-07 2:34 ` Kalesh Anakkur Purayil
2025-07-04 4:38 ` [PATCH rdma-next 3/3] RDMA/bnxt_re: Use macro instead of hard coded value Kalesh AP
2025-07-06 7:38 ` [PATCH rdma-next 0/3] bnxt_re driver update Leon Romanovsky
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox