aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorYonatan Nachum <ynachum@amazon.com>2026-07-22 11:33:31 +0000
committerLeon Romanovsky <leon@kernel.org>2026-07-23 04:01:42 -0400
commit524381ef281bb886f215ac9341b3c2e5b59ec178 (patch)
tree65187fbe605669589a31bdee129f0e76e3fdee59
parentRDMA/efa: Add CQ/QP creation with 64-bit SQ req ID support (diff)
RDMA/efa: Expose 64-bit send WR ID support to userspace
Currently EFA WRs support 16-bit request ID, this requires EFA to manage a translation table to translate the IB WR ID from 64-bits to 16-bits and translating it back on CQ completion. Expose a new device capability to handle 64-bit request ID for SQ WRs allowing userspace to directly post the 64-bit ID to the device. Reviewed-by: Michael Margolin <mrgolin@amazon.com> Reviewed-by: Tom Sela <tomsela@amazon.com> Signed-off-by: Yonatan Nachum <ynachum@amazon.com> Link: https://patch.msgid.link/20260722113331.2515247-3-ynachum@amazon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
-rw-r--r--drivers/infiniband/hw/efa/efa_verbs.c3
-rw-r--r--include/uapi/rdma/efa-abi.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/efa/efa_verbs.c b/drivers/infiniband/hw/efa/efa_verbs.c
index 73a80caca7e2..6abb93b50731 100644
--- a/drivers/infiniband/hw/efa/efa_verbs.c
+++ b/drivers/infiniband/hw/efa/efa_verbs.c
@@ -272,6 +272,9 @@ int efa_query_device(struct ib_device *ibdev,
if (EFA_DEV_CAP(dev, EVENT_COUNTERS))
resp.device_caps |= EFA_QUERY_DEVICE_CAPS_COMP_CNTR;
+ if (EFA_DEV_CAP(dev, SQ_64_BIT_REQ_ID))
+ resp.device_caps |= EFA_QUERY_DEVICE_CAPS_SQ_64_BIT_REQ_ID;
+
if (dev->neqs)
resp.device_caps |= EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS;
diff --git a/include/uapi/rdma/efa-abi.h b/include/uapi/rdma/efa-abi.h
index 5d3d01b6333e..2094b4bcc5cf 100644
--- a/include/uapi/rdma/efa-abi.h
+++ b/include/uapi/rdma/efa-abi.h
@@ -136,6 +136,7 @@ enum {
EFA_QUERY_DEVICE_CAPS_UNSOLICITED_WRITE_RECV = 1 << 6,
EFA_QUERY_DEVICE_CAPS_CQ_WITH_EXT_MEM = 1 << 7,
EFA_QUERY_DEVICE_CAPS_COMP_CNTR = 1 << 8,
+ EFA_QUERY_DEVICE_CAPS_SQ_64_BIT_REQ_ID = 1 << 9,
};
struct efa_ibv_ex_query_device_resp {