diff --git a/hw/pci.c b/hw/pci.c index b3856e72ab4dddc51a8ca4504ef4ab4a7d731c6a..0d51714257b2d7e1dc5db382c9e3c52519470309 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -822,6 +822,8 @@ PCIDevice *pci_nic_init(NICInfo *nd, const char *default_model, if (strcmp(nd->model, pci_nic_models[i]) == 0) { pci_dev = pci_create(pci_nic_names[i], devaddr); dev = &pci_dev->qdev; + if (nd->id) + dev->id = qemu_strdup(nd->id); dev->nd = nd; qdev_init(dev); nd->private = dev; diff --git a/net.c b/net.c index a0c41536807076942b1f15f95c8516d93c7f5641..90cf912378962346ef26c4323c623b3346f093e1 100644 --- a/net.c +++ b/net.c @@ -2428,7 +2428,7 @@ int net_client_init(Monitor *mon, const char *device, const char *p) } if (!strcmp(device, "nic")) { static const char * const nic_params[] = { - "vlan", "name", "macaddr", "model", "addr", "vectors", NULL + "vlan", "name", "macaddr", "model", "addr", "id", "vectors", NULL }; NICInfo *nd; uint8_t *macaddr; @@ -2466,6 +2466,9 @@ int net_client_init(Monitor *mon, const char *device, const char *p) if (get_param_value(buf, sizeof(buf), "addr", p)) { nd->devaddr = strdup(buf); } + if (get_param_value(buf, sizeof(buf), "id", p)) { + nd->id = strdup(buf); + } nd->nvectors = NIC_NVECTORS_UNSPECIFIED; if (get_param_value(buf, sizeof(buf), "vectors", p)) { char *endptr; diff --git a/net.h b/net.h index 6026e10361beb31a1493565fd40a7da460dacd45..188fa395e4ace089dca13489a2bd6c32d1ea3b4d 100644 --- a/net.h +++ b/net.h @@ -95,6 +95,7 @@ struct NICInfo { const char *model; const char *name; const char *devaddr; + const char *id; VLANState *vlan; VLANClientState *vc; void *private;