[dpdk-dev] [PATCH v6 5/8] eal: introduce bus scan and probe in EAL
Ferruh Yigit
ferruh.yigit at intel.com
Mon Jan 16 20:58:02 CET 2017
On 1/16/2017 3:38 PM, Shreyansh Jain wrote:
> Each bus implementation defines their own callbacks for scanning bus
> and probing devices available on the bus. Enable EAL to call bus specific
> scan and probe functions during DPDK initialization.
>
> Existing PCI scan/probe continues to exist. It will removed in subsequent
> patches.
>
> Signed-off-by: Shreyansh Jain <shreyansh.jain at nxp.com>
<...>
> +/* Scan all the buses for registering devices */
> +int
> +rte_bus_scan(void)
I hesitate to make this kind of (not really functional) comments in this
stage of the release, but please feel free to ignore them as your wish.
Previous patch is (4/8) for adding bus scan support, so why not this
function (also .map and .h file part of it) added in prev patch?
And if there is a specific patch for scan, probe can be another one?
> +{
> + int ret;
> + struct rte_bus *bus = NULL;
> +
> + TAILQ_FOREACH(bus, &rte_bus_list, next) {
> + ret = bus->scan();
> + if (ret) {
> + RTE_LOG(ERR, EAL, "Scan for (%s) bus failed.\n",
> + bus->name);
> + /* Error in scanning any bus stops the EAL init. */
> + return ret;
> + }
> + }
> +
> + return 0;
> +}
<...>
> diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c
> index 0d799be..35da451 100644
<...>
> +
> +/* Add a PCI device to PCI Bus */
> +void
> +rte_eal_pci_add_device(struct rte_pci_bus *pci_bus,
> + struct rte_pci_device *pci_dev)
I think more generic approach from previous version was better
(rte_eal_bus_add_device()), but I guess they sacrificed for less
modification.
> +{
> + TAILQ_INSERT_TAIL(&pci_bus->device_list, pci_dev, next);
> + /* Update Bus references */
> + pci_dev->device.bus = &pci_bus->bus;
> +}
> +
<...>
>
> +/**
> + * Structure describing the PCI bus
> + */
> +struct rte_pci_bus {
> + struct rte_bus bus; /**< Inherit the generic class */
> + struct rte_pci_device_list device_list; /**< List of PCI devices */
> + struct rte_pci_driver_list driver_list; /**< List of PCI drivers */
Why bus device/driver lists moved from rte_bus? Each bus will need this?
Is it to change as less code as possible?
<...>
> +
> +/**
> + * Insert a PCI device in the PCI Bus at a particular location in the device
> + * list. It also updates the PCI Bus reference of the new devices to be
> + * inserted.
Minor issue in document compilation:
- warning: argument 'pci_dev' of command @param is not found
- parameter 'new_pci_dev' not documented
Similar warnings exists for rte_eal_pci_remove_device() too.
Also following in rte_bus_scan(void) and rte_bus_probe(void)
- warning: argument 'void' of command @param is not found
> + *
> + * @param exist_pci_dev
> + * Existing PCI device in PCI Bus
> + * @param pci_dev
> + * PCI device to be added before exist_pci_dev
> + * @return void
> + */
> +void rte_eal_pci_insert_device(struct rte_pci_device *exist_pci_dev,
> + struct rte_pci_device *new_pci_dev);
> +
<...>
More information about the dev
mailing list