]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/bnxt_re: Fix IB_SEND_IP_CSUM handling in post_send
authorAlok Tiwari <alok.a.tiwari@oracle.com>
Fri, 19 Dec 2025 09:32:57 +0000 (01:32 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:09:58 +0000 (13:09 +0100)
[ Upstream commit f01765a2361323e78e3d91b1cb1d5527a83c5cf7 ]

The bnxt_re SEND path checks wr->send_flags to enable features such as
IP checksum offload. However, send_flags is a bitmask and may contain
multiple flags (e.g. IB_SEND_SIGNALED | IB_SEND_IP_CSUM), while the
existing code uses a switch() statement that only matches when
send_flags is exactly IB_SEND_IP_CSUM.

As a result, checksum offload is not enabled when additional SEND
flags are present.

Replace the switch() with a bitmask test:

    if (wr->send_flags & IB_SEND_IP_CSUM)

This ensures IP checksum offload is enabled correctly when multiple
SEND flags are used.

Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
Link: https://patch.msgid.link/20251219093308.2415620-1-alok.a.tiwari@oracle.com
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/bnxt_re/ib_verbs.c

index cb733fc497c8d85d4f72fcc7e2c9f54aaa227e18..83bc013c8f79bfdf102745b911b32dc02068f316 100644 (file)
@@ -2644,14 +2644,9 @@ int bnxt_re_post_send(struct ib_qp *ib_qp, const struct ib_send_wr *wr,
                                wqe.rawqp1.lflags |=
                                        SQ_SEND_RAWETH_QP1_LFLAGS_ROCE_CRC;
                        }
-                       switch (wr->send_flags) {
-                       case IB_SEND_IP_CSUM:
+                       if (wr->send_flags & IB_SEND_IP_CSUM)
                                wqe.rawqp1.lflags |=
                                        SQ_SEND_RAWETH_QP1_LFLAGS_IP_CHKSUM;
-                               break;
-                       default:
-                               break;
-                       }
                        fallthrough;
                case IB_WR_SEND_WITH_INV:
                        rc = bnxt_re_build_send_wqe(qp, wr, &wqe);