From: Yuval Shaia <yuval.shaia@oracle.com>
To: yuval.shaia@oracle.com, marcel.apfelbaum@gmail.com,
dmitry.fleytman@gmail.com, jasowang@redhat.com,
eblake@redhat.com, armbru@redhat.com,
shamir.rabinovitch@oracle.com, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 17/18] hw/pvrdma: Fill error code in command's response
Date: Mon, 5 Nov 2018 14:45:58 +0200 [thread overview]
Message-ID: <20181105124559.21561-18-yuval.shaia@oracle.com> (raw)
In-Reply-To: <20181105124559.21561-1-yuval.shaia@oracle.com>
Driver checks error code let's set it.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
---
hw/rdma/vmw/pvrdma_cmd.c | 67 ++++++++++++++++++++++++++++------------
1 file changed, 48 insertions(+), 19 deletions(-)
diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c
index a88d922932..a694faac8d 100644
--- a/hw/rdma/vmw/pvrdma_cmd.c
+++ b/hw/rdma/vmw/pvrdma_cmd.c
@@ -131,7 +131,8 @@ static int query_port(PVRDMADev *dev, union pvrdma_cmd_req *req,
if (rdma_backend_query_port(&dev->backend_dev,
(struct ibv_port_attr *)&attrs)) {
- return -ENOMEM;
+ resp->hdr.err = -ENOMEM;
+ goto out;
}
memset(resp, 0, sizeof(*resp));
@@ -150,7 +151,9 @@ static int query_port(PVRDMADev *dev, union pvrdma_cmd_req *req,
resp->attrs.active_width = 1;
resp->attrs.active_speed = 1;
- return 0;
+out:
+ pr_dbg("ret=%d\n", resp->hdr.err);
+ return resp->hdr.err;
}
static int query_pkey(PVRDMADev *dev, union pvrdma_cmd_req *req,
@@ -170,7 +173,7 @@ static int query_pkey(PVRDMADev *dev, union pvrdma_cmd_req *req,
resp->pkey = PVRDMA_PKEY;
pr_dbg("pkey=0x%x\n", resp->pkey);
- return 0;
+ return resp->hdr.err;
}
static int create_pd(PVRDMADev *dev, union pvrdma_cmd_req *req,
@@ -200,7 +203,9 @@ static int destroy_pd(PVRDMADev *dev, union pvrdma_cmd_req *req,
rdma_rm_dealloc_pd(&dev->rdma_dev_res, cmd->pd_handle);
- return 0;
+ rsp->hdr.err = 0;
+
+ return rsp->hdr.err;
}
static int create_mr(PVRDMADev *dev, union pvrdma_cmd_req *req,
@@ -251,7 +256,9 @@ static int destroy_mr(PVRDMADev *dev, union pvrdma_cmd_req *req,
rdma_rm_dealloc_mr(&dev->rdma_dev_res, cmd->mr_handle);
- return 0;
+ rsp->hdr.err = 0;
+
+ return rsp->hdr.err;
}
static int create_cq_ring(PCIDevice *pci_dev , PvrdmaRing **ring,
@@ -353,7 +360,8 @@ static int destroy_cq(PVRDMADev *dev, union pvrdma_cmd_req *req,
cq = rdma_rm_get_cq(&dev->rdma_dev_res, cmd->cq_handle);
if (!cq) {
pr_dbg("Invalid CQ handle\n");
- return -EINVAL;
+ rsp->hdr.err = -EINVAL;
+ goto out;
}
ring = (PvrdmaRing *)cq->opaque;
@@ -364,7 +372,11 @@ static int destroy_cq(PVRDMADev *dev, union pvrdma_cmd_req *req,
rdma_rm_dealloc_cq(&dev->rdma_dev_res, cmd->cq_handle);
- return 0;
+ rsp->hdr.err = 0;
+
+out:
+ pr_dbg("ret=%d\n", rsp->hdr.err);
+ return rsp->hdr.err;
}
static int create_qp_rings(PCIDevice *pci_dev, uint64_t pdir_dma,
@@ -553,7 +565,8 @@ static int destroy_qp(PVRDMADev *dev, union pvrdma_cmd_req *req,
qp = rdma_rm_get_qp(&dev->rdma_dev_res, cmd->qp_handle);
if (!qp) {
pr_dbg("Invalid QP handle\n");
- return -EINVAL;
+ rsp->hdr.err = -EINVAL;
+ goto out;
}
rdma_rm_dealloc_qp(&dev->rdma_dev_res, cmd->qp_handle);
@@ -567,7 +580,11 @@ static int destroy_qp(PVRDMADev *dev, union pvrdma_cmd_req *req,
rdma_pci_dma_unmap(PCI_DEVICE(dev), ring->ring_state, TARGET_PAGE_SIZE);
g_free(ring);
- return 0;
+ rsp->hdr.err = 0;
+
+out:
+ pr_dbg("ret=%d\n", rsp->hdr.err);
+ return rsp->hdr.err;
}
static int create_bind(PVRDMADev *dev, union pvrdma_cmd_req *req,
@@ -580,7 +597,8 @@ static int create_bind(PVRDMADev *dev, union pvrdma_cmd_req *req,
pr_dbg("index=%d\n", cmd->index);
if (cmd->index >= MAX_PORT_GIDS) {
- return -EINVAL;
+ rsp->hdr.err = -EINVAL;
+ goto out;
}
pr_dbg("gid[%d]=0x%llx,0x%llx\n", cmd->index,
@@ -590,10 +608,15 @@ static int create_bind(PVRDMADev *dev, union pvrdma_cmd_req *req,
rc = rdma_rm_add_gid(&dev->rdma_dev_res, &dev->backend_dev,
dev->backend_eth_device_name, gid, cmd->index);
if (rc < 0) {
- return -EINVAL;
+ rsp->hdr.err = rc;
+ goto out;
}
- return 0;
+ rsp->hdr.err = 0;
+
+out:
+ pr_dbg("ret=%d\n", rsp->hdr.err);
+ return rsp->hdr.err;
}
static int destroy_bind(PVRDMADev *dev, union pvrdma_cmd_req *req,
@@ -604,13 +627,18 @@ static int destroy_bind(PVRDMADev *dev, union pvrdma_cmd_req *req,
pr_dbg("index=%d\n", cmd->index);
if (cmd->index >= MAX_PORT_GIDS) {
- return -EINVAL;
+ rsp->hdr.err = -EINVAL;
+ goto out;
}
rdma_rm_del_gid(&dev->rdma_dev_res, &dev->backend_dev,
dev->backend_eth_device_name, cmd->index);
- return 0;
+ rsp->hdr.err = 0;
+
+out:
+ pr_dbg("ret=%d\n", rsp->hdr.err);
+ return rsp->hdr.err;
}
static int create_uc(PVRDMADev *dev, union pvrdma_cmd_req *req,
@@ -627,9 +655,8 @@ static int create_uc(PVRDMADev *dev, union pvrdma_cmd_req *req,
resp->hdr.err = rdma_rm_alloc_uc(&dev->rdma_dev_res, cmd->pfn,
&resp->ctx_handle);
- pr_dbg("ret=%d\n", resp->hdr.err);
-
- return 0;
+ pr_dbg("ret=%d\n", rsp->hdr.err);
+ return rsp->hdr.err;
}
static int destroy_uc(PVRDMADev *dev, union pvrdma_cmd_req *req,
@@ -641,7 +668,9 @@ static int destroy_uc(PVRDMADev *dev, union pvrdma_cmd_req *req,
rdma_rm_dealloc_uc(&dev->rdma_dev_res, cmd->ctx_handle);
- return 0;
+ rsp->hdr.err = 0;
+
+ return rsp->hdr.err;
}
struct cmd_handler {
uint32_t cmd;
@@ -689,7 +718,7 @@ int execute_command(PVRDMADev *dev)
}
err = cmd_handlers[dsr_info->req->hdr.cmd].exec(dev, dsr_info->req,
- dsr_info->rsp);
+ dsr_info->rsp);
out:
set_reg_val(dev, PVRDMA_REG_ERR, err);
post_interrupt(dev, INTR_VEC_CMD_RING);
--
2.17.2
next prev parent reply other threads:[~2018-11-05 12:47 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-05 12:45 [Qemu-devel] [PATCH 00/18] Add support for RDMA MAD Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 01/18] contrib/rdmacm-mux: Add implementation of RDMA User MAD multiplexer Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 02/18] hw/rdma: Add ability to force notification without re-arm Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 03/18] hw/rdma: Return qpn 1 if ibqp is NULL Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 04/18] hw/rdma: Abort send-op if fail to create addr handler Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 05/18] hw/rdma: Add support for MAD packets Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 06/18] hw/pvrdma: Make function reset_device return void Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 07/18] hw/pvrdma: Make default pkey 0xFFFF Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 08/18] hw/pvrdma: Set the correct opcode for recv completion Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 09/18] hw/pvrdma: Set the correct opcode for send completion Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 10/18] json: Define new QMP message for pvrdma Yuval Shaia
2018-11-05 15:58 ` Eric Blake
2018-11-06 9:49 ` Yuval Shaia
2018-11-07 8:11 ` Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 11/18] hw/pvrdma: Add support to allow guest to configure GID table Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 12/18] vmxnet3: Move some definitions to header file Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 13/18] hw/pvrdma: Make sure PCI function 0 is vmxnet3 Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 14/18] hw/rdma: Initialize node_guid from vmxnet3 mac address Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 15/18] hw/pvrdma: Make device state depend on Ethernet function state Yuval Shaia
2018-11-05 12:45 ` [Qemu-devel] [PATCH 16/18] hw/pvrdma: Fill all CQE fields Yuval Shaia
2018-11-05 12:45 ` Yuval Shaia [this message]
2018-11-05 12:45 ` [Qemu-devel] [PATCH 18/18] hw/rdma: Remove unneeded code that handles more that one port Yuval Shaia
2018-11-05 17:20 ` [Qemu-devel] [PATCH 00/18] Add support for RDMA MAD no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181105124559.21561-18-yuval.shaia@oracle.com \
--to=yuval.shaia@oracle.com \
--cc=armbru@redhat.com \
--cc=dmitry.fleytman@gmail.com \
--cc=eblake@redhat.com \
--cc=jasowang@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=shamir.rabinovitch@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).