pci: make device id tables const
[dpdk.git] / lib / librte_pmd_bond / rte_eth_bond_api.c
index 230d36c..e91a623 100644 (file)
@@ -230,24 +230,19 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
                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 = &eth_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);
@@ -257,7 +252,7 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t 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;
@@ -266,9 +261,7 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
        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;
@@ -323,16 +316,11 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
        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;
 }