[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v9 02/23] hw/rdma: Add ability to force notification
From: |
Yuval Shaia |
Subject: |
[Qemu-devel] [PATCH v9 02/23] hw/rdma: Add ability to force notification without re-arm |
Date: |
Fri, 21 Dec 2018 16:40:16 +0200 |
Upon completion of incoming packet the device pushes CQE to driver's RX
ring and notify the driver (msix).
While for data-path incoming packets the driver needs the ability to
control whether it wished to receive interrupts or not, for control-path
packets such as incoming MAD the driver needs to be notified anyway, it
even do not need to re-arm the notification bit.
Enhance the notification field to support this.
Signed-off-by: Yuval Shaia <address@hidden>
Reviewed-by: Marcel Apfelbaum <address@hidden>
---
hw/rdma/rdma_rm.c | 12 ++++++++++--
hw/rdma/rdma_rm_defs.h | 8 +++++++-
hw/rdma/vmw/pvrdma_qp_ops.c | 6 ++++--
3 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c
index 8d59a42cd1..4f10fcabcc 100644
--- a/hw/rdma/rdma_rm.c
+++ b/hw/rdma/rdma_rm.c
@@ -263,7 +263,7 @@ int rdma_rm_alloc_cq(RdmaDeviceResources *dev_res,
RdmaBackendDev *backend_dev,
}
cq->opaque = opaque;
- cq->notify = false;
+ cq->notify = CNT_CLEAR;
rc = rdma_backend_create_cq(backend_dev, &cq->backend_cq, cqe);
if (rc) {
@@ -291,7 +291,10 @@ void rdma_rm_req_notify_cq(RdmaDeviceResources *dev_res,
uint32_t cq_handle,
return;
}
- cq->notify = notify;
+ if (cq->notify != CNT_SET) {
+ cq->notify = notify ? CNT_ARM : CNT_CLEAR;
+ }
+
pr_dbg("notify=%d\n", cq->notify);
}
@@ -349,6 +352,11 @@ int rdma_rm_alloc_qp(RdmaDeviceResources *dev_res,
uint32_t pd_handle,
return -EINVAL;
}
+ if (qp_type == IBV_QPT_GSI) {
+ scq->notify = CNT_SET;
+ rcq->notify = CNT_SET;
+ }
+
qp = res_tbl_alloc(&dev_res->qp_tbl, &rm_qpn);
if (!qp) {
return -ENOMEM;
diff --git a/hw/rdma/rdma_rm_defs.h b/hw/rdma/rdma_rm_defs.h
index 7228151239..9b399063d3 100644
--- a/hw/rdma/rdma_rm_defs.h
+++ b/hw/rdma/rdma_rm_defs.h
@@ -49,10 +49,16 @@ typedef struct RdmaRmPD {
uint32_t ctx_handle;
} RdmaRmPD;
+typedef enum CQNotificationType {
+ CNT_CLEAR,
+ CNT_ARM,
+ CNT_SET,
+} CQNotificationType;
+
typedef struct RdmaRmCQ {
RdmaBackendCQ backend_cq;
void *opaque;
- bool notify;
+ CQNotificationType notify;
} RdmaRmCQ;
/* MR (DMA region) */
diff --git a/hw/rdma/vmw/pvrdma_qp_ops.c b/hw/rdma/vmw/pvrdma_qp_ops.c
index c668afd0ed..762700a205 100644
--- a/hw/rdma/vmw/pvrdma_qp_ops.c
+++ b/hw/rdma/vmw/pvrdma_qp_ops.c
@@ -89,8 +89,10 @@ static int pvrdma_post_cqe(PVRDMADev *dev, uint32_t
cq_handle,
pvrdma_ring_write_inc(&dev->dsr_info.cq);
pr_dbg("cq->notify=%d\n", cq->notify);
- if (cq->notify) {
- cq->notify = false;
+ if (cq->notify != CNT_CLEAR) {
+ if (cq->notify == CNT_ARM) {
+ cq->notify = CNT_CLEAR;
+ }
post_interrupt(dev, INTR_VEC_CMD_COMPLETION_Q);
}
--
2.17.2
- [Qemu-devel] [PATCH v9 00/23] Add support for RDMA MAD, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 01/23] contrib/rdmacm-mux: Add implementation of RDMA User MAD multiplexer, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 03/23] hw/rdma: Return qpn 1 if ibqp is NULL, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 02/23] hw/rdma: Add ability to force notification without re-arm,
Yuval Shaia <=
- [Qemu-devel] [PATCH v9 06/23] hw/pvrdma: Make function reset_device return void, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 04/23] hw/rdma: Abort send-op if fail to create addr handler, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 08/23] hw/pvrdma: Set the correct opcode for recv completion, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 07/23] hw/pvrdma: Make default pkey 0xFFFF, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 09/23] hw/pvrdma: Set the correct opcode for send completion, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 05/23] hw/rdma: Add support for MAD packets, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 10/23] qapi: Define new QMP message for pvrdma, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 12/23] vmxnet3: Move some definitions to header file, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 13/23] hw/pvrdma: Make sure PCI function 0 is vmxnet3, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 11/23] hw/pvrdma: Add support to allow guest to configure GID table, Yuval Shaia, 2018/12/21