goto err;
}
- pci_drv = rte_zmalloc_socket(name, sizeof(*pci_drv), 0, socket_id);
- if (pci_drv == NULL) {
- RTE_BOND_LOG(ERR, "Unable to malloc pci_drv on socket");
- goto err;
- }
+ pci_drv = ð_drv->pci_drv;
+
pci_id_table = rte_zmalloc_socket(name, sizeof(*pci_id_table), 0, socket_id);
if (pci_id_table == NULL) {
RTE_BOND_LOG(ERR, "Unable to malloc pci_id_table on socket");
goto err;
}
+ pci_id_table->device_id = PCI_ANY_ID;
+ pci_id_table->subsystem_device_id = PCI_ANY_ID;
+ pci_id_table->vendor_id = PCI_ANY_ID;
+ pci_id_table->subsystem_vendor_id = PCI_ANY_ID;
pci_drv->id_table = pci_id_table;
-
- pci_drv->id_table->device_id = PCI_ANY_ID;
- pci_drv->id_table->subsystem_device_id = PCI_ANY_ID;
- pci_drv->id_table->vendor_id = PCI_ANY_ID;
- pci_drv->id_table->subsystem_vendor_id = PCI_ANY_ID;
-
pci_drv->drv_flags = RTE_PCI_DRV_INTR_LSC;
internals = rte_zmalloc_socket(name, sizeof(*internals), 0, socket_id);
}
/* reserve an ethdev entry */
- eth_dev = rte_eth_dev_allocate(name);
+ eth_dev = rte_eth_dev_allocate(name, RTE_ETH_DEV_VIRTUAL);
if (eth_dev == NULL) {
RTE_BOND_LOG(ERR, "Unable to allocate rte_eth_dev");
goto err;
pci_dev->numa_node = socket_id;
pci_drv->name = driver_name;
- eth_drv->pci_drv = (struct rte_pci_driver)(*pci_drv);
eth_dev->driver = eth_drv;
-
eth_dev->data->dev_private = internals;
eth_dev->data->nb_rx_queues = (uint16_t)1;
eth_dev->data->nb_tx_queues = (uint16_t)1;
return eth_dev->data->port_id;
err:
- if (pci_dev)
- rte_free(pci_dev);
- if (pci_drv)
- rte_free(pci_drv);
- if (pci_id_table)
- rte_free(pci_id_table);
- if (eth_drv)
- rte_free(eth_drv);
- if (internals)
- rte_free(internals);
+ rte_free(pci_dev);
+ rte_free(pci_id_table);
+ rte_free(eth_drv);
+ rte_free(internals);
+
return -1;
}