]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/irdma: Remove redundant legacy_mode checks
authorJacob Moroni <jmoroni@google.com>
Tue, 2 Jun 2026 21:44:22 +0000 (21:44 +0000)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 5 Jun 2026 17:09:29 +0000 (14:09 -0300)
The driver has the following invariants:

1. legacy_mode is only allowed on GEN_1 hardware (enforced
   in irdma_alloc_ucontext).

2. GEN_1 hardware does not set IRDMA_FEATURE_CQ_RESIZE or
   IRDMA_FEATURE_RTS_AE. These feature flags are only set
   for GEN_2 and GEN_3 hardware.

Therefore, legacy_mode is always false if IRDMA_FEATURE_CQ_RESIZE
or IRDMA_FEATURE_RTS_AE is set, so remove the redundant checks.

Link: https://patch.msgid.link/r/20260602214423.1315105-1-jmoroni@google.com
Signed-off-by: Jacob Moroni <jmoroni@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/irdma/uk.c
drivers/infiniband/hw/irdma/user.h
drivers/infiniband/hw/irdma/verbs.c

index 4718acf6c6fd00275bc39103916c0be7f13068ec..a34883fe9983688db2e5fb042930c54bfd8134f2 100644 (file)
@@ -1568,15 +1568,12 @@ static const struct irdma_wqe_uk_ops iw_wqe_uk_ops_gen_1 = {
  * irdma_setup_connection_wqes - setup WQEs necessary to complete
  * connection.
  * @qp: hw qp (user and kernel)
- * @info: qp initialization info
  */
-static void irdma_setup_connection_wqes(struct irdma_qp_uk *qp,
-                                       struct irdma_qp_uk_init_info *info)
+static void irdma_setup_connection_wqes(struct irdma_qp_uk *qp)
 {
        u16 move_cnt = 1;
 
-       if (!info->legacy_mode &&
-           (qp->uk_attrs->feature_flags & IRDMA_FEATURE_RTS_AE))
+       if (qp->uk_attrs->feature_flags & IRDMA_FEATURE_RTS_AE)
                move_cnt = 3;
 
        qp->conn_wqes = move_cnt;
@@ -1727,7 +1724,7 @@ int irdma_uk_qp_init(struct irdma_qp_uk *qp, struct irdma_qp_uk_init_info *info)
        sq_ring_size = qp->sq_size << info->sq_shift;
        IRDMA_RING_INIT(qp->sq_ring, sq_ring_size);
        if (info->first_sq_wq) {
-               irdma_setup_connection_wqes(qp, info);
+               irdma_setup_connection_wqes(qp);
                qp->swqe_polarity = 1;
                qp->first_sq_wq = true;
        } else {
index 008af1acc9288457a026e88d053d9d771ac7a027..4dd3776a4cddb6a731b524a264dd2fc48ccd699a 100644 (file)
@@ -563,7 +563,6 @@ struct irdma_qp_uk_init_info {
        u8 sq_shift;
        u8 rq_shift;
        int abi_ver;
-       bool legacy_mode;
        struct irdma_srq_uk *srq_uk;
 };
 
index b19edf31c8000a5c67859bce5d3bf245adca3a1e..284dfba4e9842ebdb5e4144bd69f7db13e0e0b0f 100644 (file)
@@ -634,7 +634,6 @@ static int irdma_setup_umode_qp(struct ib_udata *udata,
        iwqp->ctx_info.qp_compl_ctx = req.user_compl_ctx;
        iwqp->user_mode = 1;
        if (req.user_wqe_bufs) {
-               info->qp_uk_init_info.legacy_mode = ucontext->legacy_mode;
                spin_lock_irqsave(&ucontext->qp_reg_mem_list_lock, flags);
                iwqp->iwpbl = irdma_get_pbl((unsigned long)req.user_wqe_bufs,
                                            &ucontext->qp_reg_mem_list);
@@ -2066,10 +2065,6 @@ static int irdma_resize_cq(struct ib_cq *ibcq, unsigned int entries,
                        rdma_udata_to_drv_context(udata, struct irdma_ucontext,
                                                  ibucontext);
 
-               /* CQ resize not supported with legacy GEN_1 libi40iw */
-               if (ucontext->legacy_mode)
-                       return -EOPNOTSUPP;
-
                if (ib_copy_from_udata(&req, udata,
                                       min(sizeof(req), udata->inlen)))
                        return -EINVAL;
@@ -2549,7 +2544,7 @@ static int irdma_create_cq(struct ib_cq *ibcq,
                cqmr = &iwpbl->cq_mr;
 
                if (rf->sc_dev.hw_attrs.uk_attrs.feature_flags &
-                   IRDMA_FEATURE_CQ_RESIZE && !ucontext->legacy_mode) {
+                   IRDMA_FEATURE_CQ_RESIZE) {
                        spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags);
                        iwpbl_shadow = irdma_get_pbl(
                                        (unsigned long)req.user_shadow_area,