[PATCH rdma-next 30/50] RDMA/core: Remove legacy CQ creation fallback path
From: Leon Romanovsky
Date: Fri Feb 13 2026 - 06:07:29 EST
From: Leon Romanovsky <leonro@xxxxxxxxxx>
All drivers now support the modern CQ creation interface via the
create_user_cq callback. Remove the legacy fallback to create_cq
for userspace CQ creation.
This simplifies the core code by eliminating conditional logic and
ensures all userspace CQ creation goes through the modern interface
that properly supports user-supplied umem.
Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx>
---
drivers/infiniband/core/uverbs_cmd.c | 9 +++------
drivers/infiniband/core/uverbs_std_types_cq.c | 8 ++------
2 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 041bed7a43b4..cdfee86fb800 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -1071,10 +1071,7 @@ static int create_cq(struct uverbs_attr_bundle *attrs,
rdma_restrack_new(&cq->res, RDMA_RESTRACK_CQ);
rdma_restrack_set_name(&cq->res, NULL);
- if (ib_dev->ops.create_user_cq)
- ret = ib_dev->ops.create_user_cq(cq, &attr, attrs);
- else
- ret = ib_dev->ops.create_cq(cq, &attr, attrs);
+ ret = ib_dev->ops.create_user_cq(cq, &attr, attrs);
if (ret)
goto err_free;
rdma_restrack_add(&cq->res);
@@ -3791,7 +3788,7 @@ const struct uapi_definition uverbs_def_write_intf[] = {
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
- UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
+ UAPI_DEF_METHOD_NEEDS_FN(create_user_cq)),
DECLARE_UVERBS_WRITE(
IB_USER_VERBS_CMD_DESTROY_CQ,
ib_uverbs_destroy_cq,
@@ -3822,7 +3819,7 @@ const struct uapi_definition uverbs_def_write_intf[] = {
reserved,
struct ib_uverbs_ex_create_cq_resp,
response_length),
- UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
+ UAPI_DEF_METHOD_NEEDS_FN(create_user_cq)),
DECLARE_UVERBS_WRITE_EX(
IB_USER_VERBS_EX_CMD_MODIFY_CQ,
ib_uverbs_ex_modify_cq,
diff --git a/drivers/infiniband/core/uverbs_std_types_cq.c b/drivers/infiniband/core/uverbs_std_types_cq.c
index d2c8f71f934c..a12e3184dd5c 100644
--- a/drivers/infiniband/core/uverbs_std_types_cq.c
+++ b/drivers/infiniband/core/uverbs_std_types_cq.c
@@ -78,8 +78,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(
int buffer_fd;
int ret;
- if ((!ib_dev->ops.create_cq && !ib_dev->ops.create_user_cq) ||
- !ib_dev->ops.destroy_cq)
+ if (!ib_dev->ops.create_user_cq || !ib_dev->ops.destroy_cq)
return -EOPNOTSUPP;
ret = uverbs_copy_from(&attr.comp_vector, attrs,
@@ -200,10 +199,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(
rdma_restrack_new(&cq->res, RDMA_RESTRACK_CQ);
rdma_restrack_set_name(&cq->res, NULL);
- if (ib_dev->ops.create_user_cq)
- ret = ib_dev->ops.create_user_cq(cq, &attr, attrs);
- else
- ret = ib_dev->ops.create_cq(cq, &attr, attrs);
+ ret = ib_dev->ops.create_user_cq(cq, &attr, attrs);
if (ret)
goto err_free;
--
2.52.0