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 14/18] hw/rdma: Initialize node_guid from vmxnet3 mac address
Date: Mon, 5 Nov 2018 14:45:55 +0200 [thread overview]
Message-ID: <20181105124559.21561-15-yuval.shaia@oracle.com> (raw)
In-Reply-To: <20181105124559.21561-1-yuval.shaia@oracle.com>
node_guid should be set once device is load.
Make node_guid be GID format (32 bit) of PCI function 0 vmxnet3 device's
MAC.
A new function was added to do the conversion.
So for example the MAC 56:b6:44:e9:62:dc will be converted to GID
54b6:44ff:fee9:62dc.
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
---
hw/rdma/rdma_utils.h | 9 +++++++++
hw/rdma/vmw/pvrdma_cmd.c | 10 ----------
hw/rdma/vmw/pvrdma_main.c | 5 ++++-
3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/hw/rdma/rdma_utils.h b/hw/rdma/rdma_utils.h
index 989db249ef..202abb3366 100644
--- a/hw/rdma/rdma_utils.h
+++ b/hw/rdma/rdma_utils.h
@@ -63,4 +63,13 @@ extern unsigned long pr_dbg_cnt;
void *rdma_pci_dma_map(PCIDevice *dev, dma_addr_t addr, dma_addr_t plen);
void rdma_pci_dma_unmap(PCIDevice *dev, void *buffer, dma_addr_t len);
+static inline void addrconf_addr_eui48(uint8_t *eui, const char *addr)
+{
+ memcpy(eui, addr, 3);
+ eui[3] = 0xFF;
+ eui[4] = 0xFE;
+ memcpy(eui + 5, addr + 3, 3);
+ eui[0] ^= 2;
+}
+
#endif
diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c
index 5aa745edb3..7efe224944 100644
--- a/hw/rdma/vmw/pvrdma_cmd.c
+++ b/hw/rdma/vmw/pvrdma_cmd.c
@@ -592,16 +592,6 @@ static int create_bind(PVRDMADev *dev, union pvrdma_cmd_req *req,
return -EINVAL;
}
- /* TODO: Since drivers stores node_guid at load_dsr phase then this
- * assignment is not relevant, i need to figure out a way how to
- * retrieve MAC of our netdev */
- if (!cmd->index) {
- dev->node_guid =
- dev->rdma_dev_res.ports[0].gid_tbl[0].gid.global.interface_id;
- pr_dbg("dev->node_guid=0x%llx\n",
- (long long unsigned int)be64_to_cpu(dev->node_guid));
- }
-
return 0;
}
diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c
index 68efcdb812..0c2eefd744 100644
--- a/hw/rdma/vmw/pvrdma_main.c
+++ b/hw/rdma/vmw/pvrdma_main.c
@@ -264,7 +264,7 @@ static void init_dsr_dev_caps(PVRDMADev *dev)
dsr->caps.sys_image_guid = 0;
pr_dbg("sys_image_guid=%" PRIx64 "\n", dsr->caps.sys_image_guid);
- dsr->caps.node_guid = cpu_to_be64(dev->node_guid);
+ dsr->caps.node_guid = dev->node_guid;
pr_dbg("node_guid=%" PRIx64 "\n", be64_to_cpu(dsr->caps.node_guid));
dsr->caps.phys_port_cnt = MAX_PORTS;
@@ -579,6 +579,9 @@ static void pvrdma_realize(PCIDevice *pdev, Error **errp)
/* Break if not vmxnet3 device in slot 0 */
dev->func0 = VMXNET3(pci_get_function_0(pdev));
+ addrconf_addr_eui48((unsigned char *)&dev->node_guid,
+ (const char *)&dev->func0->conf.macaddr.a);
+
memdev_root = object_resolve_path("/objects", NULL);
if (memdev_root) {
object_child_foreach(memdev_root, pvrdma_check_ram_shared, &ram_shared);
--
2.17.2
next prev parent reply other threads:[~2018-11-05 12:46 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 ` Yuval Shaia [this message]
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 ` [Qemu-devel] [PATCH 17/18] hw/pvrdma: Fill error code in command's response Yuval Shaia
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-15-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).