.. code-block:: c
- if (rte_pci_probe() < 0)
- rte_panic("Cannot probe PCI\n");
-
/* reset l2fwd_dst_ports */
for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++)
rte_eth_dev_info_get((uint8_t) portid, &dev_info);
}
-Observe that:
-
-* rte_pci_probe() parses the devices on the PCI bus and initializes recognized
- devices.
-
The next step is to configure the RX and TX queues. For each port, there is only
one RX queue (only one lcore is able to poll a given port). The number of TX
queues depends on the number of available lcores. The rte_eth_dev_configure()
.. code-block:: c
- if (rte_pci_probe() < 0)
- rte_exit(EXIT_FAILURE, "Cannot probe PCI\n");
-
/* reset l2fwd_dst_ports */
for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++)
rte_eth_dev_info_get((uint8_t) portid, &dev_info);
}
-Observe that:
-
-* rte_igb_pmd_init_all() simultaneously registers the driver as a PCI driver and as an Ethernet* Poll Mode Driver.
-
-* rte_pci_probe() parses the devices on the PCI bus and initializes recognized devices.
-
The next step is to configure the RX and TX queues.
For each port, there is only one RX queue (only one lcore is able to poll a given port).
The number of TX queues depends on the number of available lcores.
.. code-block:: c
- if (rte_pci_probe() < 0)
- rte_exit(EXIT_FAILURE, "Cannot probe PCI\n");
-
/*
* Each logical core is assigned a dedicated TX queue on each port.
*/
rte_eth_dev_info_get((uint8_t) portid, &dev_info);
}
-Observe that:
-
-* rte_pci_probe() parses the devices on the PCI bus and initializes recognized devices.
-
The next step is to configure the RX and TX queues.
For each port, there is only one RX queue (only one lcore is able to poll a given port).
The number of TX queues depends on the number of available lcores.
^^^^^^^^^^^^^^^^^^^^^^^^^
The initialization calls in both the primary and secondary instances are the same for the most part,
-calling the rte_eal_init(), 1 G and 10 G driver initialization and then rte_pci_probe() functions.
+calling the rte_eal_init(), 1 G and 10 G driver initialization and then probing devices.
Thereafter, the initialization done depends on whether the process is configured as a primary or secondary instance.
In the primary instance, a memory pool is created for the packet mbufs and the network ports to be used are initialized -
* all registered drivers that have a matching entry in its id_table
* for discovered devices.
*/
-int
-rte_pci_probe(void)
+static int
+pci_probe(void)
{
struct rte_pci_device *dev = NULL;
size_t probed = 0, failed = 0;
struct rte_pci_bus rte_pci_bus = {
.bus = {
.scan = rte_pci_scan,
- .probe = rte_pci_probe,
+ .probe = pci_probe,
.find_device = pci_find_device,
.plug = pci_plug,
.unplug = pci_unplug,
extern struct rte_pci_bus rte_pci_bus;
-/**
- * Probe the PCI bus
- *
- * @return
- * - 0 on success.
- * - !0 on error.
- */
-int
-rte_pci_probe(void);
-
/**
* Scan the content of the PCI bus, and the devices in the devices
* list
goto end;
}
- /* previously called by rte_pci_probe() for physical dev */
+ /* previously called by pci probing for physical dev */
if (eth_virtio_dev_init(eth_dev) < 0) {
PMD_INIT_LOG(ERR, "eth_virtio_dev_init fails");
virtio_user_eth_dev_free(eth_dev);