+ if (!p)
+ {
+ pool_get (conf->dev_confs, devconf);
+ mhash_set (&conf->device_config_index_by_vmbus_addr, addr,
+ devconf - conf->dev_confs, 0);
+ }
+ else
+ return clib_error_return (
+ 0, "duplicate configuration for VMBUS address %U",
+ format_vlib_vmbus_addr, addr);
+ }
+
+ if (addr_type == VNET_DEV_ADDR_PCI)
+ {
+ devconf->pci_addr.as_u32 = ((vlib_pci_addr_t *) (addr))->as_u32;
+ devconf->tso = DPDK_DEVICE_TSO_DEFAULT;
+ devconf->dev_addr_type = VNET_DEV_ADDR_PCI;
+ }
+ else if (addr_type == VNET_DEV_ADDR_VMBUS)
+ {
+ devconf->vmbus_addr = *((vlib_vmbus_addr_t *) (addr));
+ devconf->tso = DPDK_DEVICE_TSO_DEFAULT;
+ devconf->dev_addr_type = VNET_DEV_ADDR_VMBUS;
+ }