qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 4/4] vmxnet3: Report the Device Serial Number capabi


From: Shmulik Ladkani
Subject: [Qemu-devel] [PATCH 4/4] vmxnet3: Report the Device Serial Number capability
Date: Thu, 19 Nov 2015 12:52:24 +0200

Report the DSN extended PCI capability at 0x100.
DSN value is a transformation of device MAC address, as calculated
by VMware virtual hardware.

Signed-off-by: Shmulik Ladkani <address@hidden>
---
 hw/net/vmxnet3.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
index 1525b7c..f31d62e 100644
--- a/hw/net/vmxnet3.c
+++ b/hw/net/vmxnet3.c
@@ -39,6 +39,7 @@
 #define VMXNET3_EXP_EP_OFFSET  (0x48)
 #define VMXNET3_MSI_OFFSET     (0x84)
 #define VMXNET3_MSIX_OFFSET    (0x9c)
+#define VMXNET3_DSN_OFFSET     (0x100)
 
 #define VMXNET3_BAR0_IDX      (0)
 #define VMXNET3_BAR1_IDX      (1)
@@ -2201,6 +2202,22 @@ static const MemoryRegionOps b1_ops = {
     },
 };
 
+static uint8_t *vmxnet3_device_serial_num(VMXNET3State *s)
+{
+    static uint64_t dsn_payload;
+    uint8_t *dsnp = (uint8_t *)&dsn_payload;
+
+    dsnp[0] = 0xfe;
+    dsnp[1] = s->conf.macaddr.a[3];
+    dsnp[2] = s->conf.macaddr.a[4];
+    dsnp[3] = s->conf.macaddr.a[5];
+    dsnp[4] = s->conf.macaddr.a[0];
+    dsnp[5] = s->conf.macaddr.a[1];
+    dsnp[6] = s->conf.macaddr.a[2];
+    dsnp[7] = 0xff;
+    return dsnp;
+}
+
 static void vmxnet3_pci_realize(PCIDevice *pci_dev, Error **errp)
 {
     DeviceState *dev = DEVICE(pci_dev);
@@ -2242,6 +2259,11 @@ static void vmxnet3_pci_realize(PCIDevice *pci_dev, 
Error **errp)
 
     vmxnet3_net_init(s);
 
+    pcie_add_capability(pci_dev, PCI_EXT_CAP_ID_DSN, 0x1,
+                        VMXNET3_DSN_OFFSET, PCI_EXT_CAP_DSN_SIZEOF);
+    memcpy(pci_dev->config + VMXNET3_DSN_OFFSET + 4,
+            vmxnet3_device_serial_num(s), sizeof(uint64_t));
+
     register_savevm(dev, "vmxnet3-msix", -1, 1,
                     vmxnet3_msix_save, vmxnet3_msix_load, s);
 }
-- 
1.9.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]