Now that the generic device object always references a generic driver, we can rely on this reference and stop going through the bus-specific driver reference.
Signed-off-by: David Marchand <[email protected]> --- drivers/bus/auxiliary/auxiliary_common.c | 12 +++++++----- drivers/bus/cdx/cdx.c | 2 +- drivers/bus/dpaa/dpaa_bus.c | 3 ++- drivers/bus/fslmc/fslmc_bus.c | 2 +- drivers/bus/fslmc/fslmc_vfio.c | 10 ++++++---- drivers/bus/ifpga/ifpga_bus.c | 6 ++++-- drivers/bus/pci/linux/pci_uio.c | 6 ++++-- drivers/bus/pci/pci_common.c | 20 +++++++++----------- drivers/bus/platform/platform.c | 20 ++++++++++++-------- drivers/bus/uacce/uacce.c | 5 +++-- drivers/bus/vmbus/vmbus_common.c | 3 ++- drivers/common/qat/qat_qp.c | 4 ++-- drivers/common/zsda/zsda_qp.c | 4 ++-- drivers/net/ntnic/ntnic_ethdev.c | 8 +++----- drivers/raw/cnxk_bphy/cnxk_bphy.c | 2 +- drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c | 2 +- drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c | 2 +- drivers/raw/ifpga/afu_pmd_core.c | 2 +- drivers/raw/ifpga/ifpga_rawdev.c | 2 +- drivers/raw/ntb/ntb.c | 2 +- lib/ethdev/ethdev_pci.h | 7 +++++-- 21 files changed, 69 insertions(+), 55 deletions(-) diff --git a/drivers/bus/auxiliary/auxiliary_common.c b/drivers/bus/auxiliary/auxiliary_common.c index ba8c35ebbe..2000ffa369 100644 --- a/drivers/bus/auxiliary/auxiliary_common.c +++ b/drivers/bus/auxiliary/auxiliary_common.c @@ -131,7 +131,7 @@ auxiliary_probe_device(struct rte_driver *drv, struct rte_device *dev) static int rte_auxiliary_driver_remove_dev(struct rte_auxiliary_device *dev) { - struct rte_auxiliary_driver *drv = dev->driver; + const struct rte_auxiliary_driver *drv = RTE_BUS_DRIVER(dev->device.driver, *drv); int ret = 0; AUXILIARY_LOG(DEBUG, "Driver %s remove auxiliary device %s on NUMA node %i", @@ -226,12 +226,13 @@ static int auxiliary_dma_map(struct rte_device *dev, void *addr, uint64_t iova, size_t len) { struct rte_auxiliary_device *aux_dev = RTE_BUS_DEVICE(dev, *aux_dev); + const struct rte_auxiliary_driver *aux_drv = RTE_BUS_DRIVER(dev->driver, *aux_drv); - if (aux_dev->driver->dma_map == NULL) { + if (aux_drv->dma_map == NULL) { rte_errno = ENOTSUP; return -1; } - return aux_dev->driver->dma_map(aux_dev, addr, iova, len); + return aux_drv->dma_map(aux_dev, addr, iova, len); } static int @@ -239,12 +240,13 @@ auxiliary_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova, size_t len) { struct rte_auxiliary_device *aux_dev = RTE_BUS_DEVICE(dev, *aux_dev); + const struct rte_auxiliary_driver *aux_drv = RTE_BUS_DRIVER(dev->driver, *aux_drv); - if (aux_dev->driver->dma_unmap == NULL) { + if (aux_drv->dma_unmap == NULL) { rte_errno = ENOTSUP; return -1; } - return aux_dev->driver->dma_unmap(aux_dev, addr, iova, len); + return aux_drv->dma_unmap(aux_dev, addr, iova, len); } static enum rte_iova_mode diff --git a/drivers/bus/cdx/cdx.c b/drivers/bus/cdx/cdx.c index c6a4da7692..5a823a0dcd 100644 --- a/drivers/bus/cdx/cdx.c +++ b/drivers/bus/cdx/cdx.c @@ -382,7 +382,7 @@ rte_cdx_unregister(struct rte_cdx_driver *driver) static int cdx_detach_dev(struct rte_cdx_device *dev) { - struct rte_cdx_driver *dr = dev->driver; + const struct rte_cdx_driver *dr = RTE_BUS_DRIVER(dev->device.driver, *dr); int ret = 0; CDX_BUS_DEBUG("detach device %s using driver: %s", diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index b7d0caaf61..0fd6a8d7a6 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -815,11 +815,12 @@ dpaa_bus_cleanup(void) BUS_INIT_FUNC_TRACE(); RTE_BUS_FOREACH_DEV(dev, &rte_dpaa_bus.bus) { - struct rte_dpaa_driver *drv = dev->driver; + const struct rte_dpaa_driver *drv; int ret = 0; if (!rte_dev_is_probed(&dev->device)) continue; + drv = RTE_BUS_DRIVER(dev->device.driver, *drv); if (drv->remove == NULL) continue; ret = drv->remove(dev); diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c index ae69bd0da2..e33b63259d 100644 --- a/drivers/bus/fslmc/fslmc_bus.c +++ b/drivers/bus/fslmc/fslmc_bus.c @@ -534,7 +534,7 @@ static int fslmc_bus_unplug(struct rte_device *rte_dev) { struct rte_dpaa2_device *dev = RTE_BUS_DEVICE(rte_dev, *dev); - struct rte_dpaa2_driver *drv = dev->driver; + const struct rte_dpaa2_driver *drv = RTE_BUS_DRIVER(rte_dev->driver, *drv); if (drv->remove != NULL) { drv->remove(dev); diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index e38f3e9fe7..5784adaf90 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -1392,7 +1392,7 @@ fslmc_close_iodevices(struct rte_dpaa2_device *dev, int vfio_fd) { struct rte_dpaa2_object *object = NULL; - struct rte_dpaa2_driver *drv; + const struct rte_dpaa2_driver *drv; int ret; switch (dev->dev_type) { @@ -1411,9 +1411,11 @@ fslmc_close_iodevices(struct rte_dpaa2_device *dev, case DPAA2_ETH: case DPAA2_CRYPTO: case DPAA2_QDMA: - drv = dev->driver; - if (drv && drv->remove && drv->remove(dev)) - DPAA2_BUS_ERR("Unable to remove"); + if (dev->device.driver != NULL) { + drv = RTE_BUS_DRIVER(dev->device.driver, *drv); + if (drv->remove && drv->remove(dev)) + DPAA2_BUS_ERR("Unable to remove"); + } break; default: break; diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c index a79a287fbe..b13285230b 100644 --- a/drivers/bus/ifpga/ifpga_bus.c +++ b/drivers/bus/ifpga/ifpga_bus.c @@ -296,11 +296,12 @@ ifpga_cleanup(void) int error = 0; RTE_BUS_FOREACH_DEV(afu_dev, &rte_ifpga_bus) { - struct rte_afu_driver *drv = afu_dev->driver; + const struct rte_afu_driver *drv; int ret = 0; if (!rte_dev_is_probed(&afu_dev->device)) goto free; + drv = RTE_BUS_DRIVER(afu_dev->device.driver, *drv); if (drv->remove == NULL) goto free; @@ -326,9 +327,10 @@ static int ifpga_unplug(struct rte_device *dev) { struct rte_afu_device *afu_dev = RTE_BUS_DEVICE(dev, *afu_dev); + const struct rte_afu_driver *afu_drv = RTE_BUS_DRIVER(dev->driver, *afu_drv); int ret; - ret = afu_dev->driver->remove(afu_dev); + ret = afu_drv->remove(afu_dev); if (ret) return ret; diff --git a/drivers/bus/pci/linux/pci_uio.c b/drivers/bus/pci/linux/pci_uio.c index 4c1d3327a9..40e96b1c67 100644 --- a/drivers/bus/pci/linux/pci_uio.c +++ b/drivers/bus/pci/linux/pci_uio.c @@ -301,8 +301,10 @@ pci_uio_map_resource_by_index(struct rte_pci_device *dev, int res_idx, struct pci_map *maps; int wc_activate = 0; - if (dev->driver != NULL) - wc_activate = dev->driver->drv_flags & RTE_PCI_DRV_WC_ACTIVATE; + if (dev->device.driver != NULL) { + const struct rte_pci_driver *pdrv = RTE_BUS_DRIVER(dev->device.driver, *pdrv); + wc_activate = pdrv->drv_flags & RTE_PCI_DRV_WC_ACTIVATE; + } loc = &dev->addr; maps = uio_res->maps; diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c index 5c37c5e543..e927f4af7b 100644 --- a/drivers/bus/pci/pci_common.c +++ b/drivers/bus/pci/pci_common.c @@ -245,11 +245,6 @@ pci_probe_device(struct rte_driver *drv, struct rte_device *dev) return -ENOMEM; } - /* - * Reference driver structure. - * This needs to be before rte_pci_map_device(), as it enables - * to use driver flags for adjusting configuration. - */ pci_dev->driver = pci_drv; if (pci_drv->drv_flags & RTE_PCI_DRV_NEED_MAPPING) { ret = rte_pci_map_device(pci_dev); @@ -298,7 +293,7 @@ static int rte_pci_detach_dev(struct rte_pci_device *dev) { struct rte_pci_addr *loc; - struct rte_pci_driver *dr = dev->driver; + const struct rte_pci_driver *dr = RTE_BUS_DRIVER(dev->device.driver, *dr); int ret = 0; loc = &dev->addr; @@ -339,11 +334,12 @@ pci_cleanup(void) int error = 0; RTE_BUS_FOREACH_DEV(dev, &rte_pci_bus.bus) { - struct rte_pci_driver *drv = dev->driver; + const struct rte_pci_driver *drv; int ret = 0; if (!rte_dev_is_probed(&dev->device)) goto free; + drv = RTE_BUS_DRIVER(dev->device.driver, *drv); if (drv->remove == NULL) goto free; @@ -545,9 +541,10 @@ static int pci_dma_map(struct rte_device *dev, void *addr, uint64_t iova, size_t len) { struct rte_pci_device *pdev = RTE_BUS_DEVICE(dev, *pdev); + const struct rte_pci_driver *pdrv = RTE_BUS_DRIVER(dev->driver, *pdrv); - if (pdev->driver->dma_map != NULL) - return pdev->driver->dma_map(pdev, addr, iova, len); + if (pdrv->dma_map != NULL) + return pdrv->dma_map(pdev, addr, iova, len); /** * In case driver don't provides any specific mapping * try fallback to VFIO. @@ -564,9 +561,10 @@ static int pci_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova, size_t len) { struct rte_pci_device *pdev = RTE_BUS_DEVICE(dev, *pdev); + const struct rte_pci_driver *pdrv = RTE_BUS_DRIVER(dev->driver, *pdrv); - if (pdev->driver->dma_unmap != NULL) - return pdev->driver->dma_unmap(pdev, addr, iova, len); + if (pdrv->dma_unmap != NULL) + return pdrv->dma_unmap(pdev, addr, iova, len); /** * In case driver don't provides any specific mapping * try fallback to VFIO. diff --git a/drivers/bus/platform/platform.c b/drivers/bus/platform/platform.c index 671f36fac9..433bab9b60 100644 --- a/drivers/bus/platform/platform.c +++ b/drivers/bus/platform/platform.c @@ -408,7 +408,7 @@ platform_bus_probe_device(struct rte_driver *drv, struct rte_device *dev) static void device_release_driver(struct rte_platform_device *pdev) { - struct rte_platform_driver *pdrv = pdev->driver; + const struct rte_platform_driver *pdrv = RTE_BUS_DRIVER(pdev->device.driver, *pdrv); int ret; if (pdrv->remove != NULL) { @@ -458,9 +458,10 @@ static int platform_bus_dma_map(struct rte_device *dev, void *addr, uint64_t iova, size_t len) { struct rte_platform_device *pdev = RTE_BUS_DEVICE(dev, *pdev); + const struct rte_platform_driver *pdrv = RTE_BUS_DRIVER(dev->driver, *pdrv); - if (pdev->driver->dma_map != NULL) - return pdev->driver->dma_map(pdev, addr, iova, len); + if (pdrv->dma_map != NULL) + return pdrv->dma_map(pdev, addr, iova, len); return rte_vfio_container_dma_map(RTE_VFIO_DEFAULT_CONTAINER_FD, (uint64_t)addr, iova, len); } @@ -469,9 +470,10 @@ static int platform_bus_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova, size_t len) { struct rte_platform_device *pdev = RTE_BUS_DEVICE(dev, *pdev); + const struct rte_platform_driver *pdrv = RTE_BUS_DRIVER(dev->driver, *pdrv); - if (pdev->driver->dma_unmap != NULL) - return pdev->driver->dma_unmap(pdev, addr, iova, len); + if (pdrv->dma_unmap != NULL) + return pdrv->dma_unmap(pdev, addr, iova, len); return rte_vfio_container_dma_unmap(RTE_VFIO_DEFAULT_CONTAINER_FD, (uint64_t)addr, iova, len); @@ -480,12 +482,14 @@ platform_bus_dma_unmap(struct rte_device *dev, void *addr, uint64_t iova, size_t static enum rte_iova_mode platform_bus_get_iommu_class(void) { - struct rte_platform_driver *pdrv; + const struct rte_platform_driver *pdrv; struct rte_platform_device *pdev; RTE_BUS_FOREACH_DEV(pdev, &platform_bus.bus) { - pdrv = pdev->driver; - if (pdrv != NULL && pdrv->drv_flags & RTE_PLATFORM_DRV_NEED_IOVA_AS_VA) + if (!rte_dev_is_probed(&pdev->device)) + continue; + pdrv = RTE_BUS_DRIVER(pdev->device.driver, *pdrv); + if (pdrv->drv_flags & RTE_PLATFORM_DRV_NEED_IOVA_AS_VA) return RTE_IOVA_VA; } diff --git a/drivers/bus/uacce/uacce.c b/drivers/bus/uacce/uacce.c index d4a18b2835..efc0da606b 100644 --- a/drivers/bus/uacce/uacce.c +++ b/drivers/bus/uacce/uacce.c @@ -380,11 +380,12 @@ uacce_cleanup(void) int error = 0; RTE_BUS_FOREACH_DEV(dev, &uacce_bus.bus) { - struct rte_uacce_driver *dr = dev->driver; + const struct rte_uacce_driver *dr; int ret = 0; if (!rte_dev_is_probed(&dev->device)) goto free; + dr = RTE_BUS_DRIVER(dev->device.driver, *dr); if (dr->remove == NULL) goto free; @@ -407,7 +408,7 @@ uacce_cleanup(void) static int uacce_detach_dev(struct rte_uacce_device *dev) { - struct rte_uacce_driver *dr = dev->driver; + const struct rte_uacce_driver *dr = RTE_BUS_DRIVER(dev->device.driver, *dr); int ret = 0; UACCE_BUS_DEBUG("detach device %s using driver: %s", dev->device.name, dr->driver.name); diff --git a/drivers/bus/vmbus/vmbus_common.c b/drivers/bus/vmbus/vmbus_common.c index 43652c0487..b96f4133dd 100644 --- a/drivers/bus/vmbus/vmbus_common.c +++ b/drivers/bus/vmbus/vmbus_common.c @@ -143,11 +143,12 @@ rte_vmbus_cleanup(void) int error = 0; RTE_BUS_FOREACH_DEV(dev, &rte_vmbus_bus.bus) { - const struct rte_vmbus_driver *drv = dev->driver; + const struct rte_vmbus_driver *drv; int ret; if (!rte_dev_is_probed(&dev->device)) continue; + drv = RTE_BUS_DRIVER(dev->device.driver, *drv); if (drv->remove == NULL) continue; diff --git a/drivers/common/qat/qat_qp.c b/drivers/common/qat/qat_qp.c index 0d2bbdb8a5..fe28cb160d 100644 --- a/drivers/common/qat/qat_qp.c +++ b/drivers/common/qat/qat_qp.c @@ -174,7 +174,7 @@ qat_qp_setup(struct qat_pci_device *qat_dev, snprintf(op_cookie_pool_name, RTE_RING_NAMESIZE, "%s%d_cookies_%s_qp%hu", - pci_dev->driver->driver.name, qat_dev->qat_dev_id, + pci_dev->device.driver->name, qat_dev->qat_dev_id, qat_qp_conf->service_str, queue_pair_id); QAT_LOG(DEBUG, "cookiepool: %s", op_cookie_pool_name); @@ -252,7 +252,7 @@ qat_queue_create(struct qat_pci_device *qat_dev, struct qat_queue *queue, */ snprintf(queue->memz_name, sizeof(queue->memz_name), "%s_%d_%s_%s_%d_%d", - pci_dev->driver->driver.name, qat_dev->qat_dev_id, + pci_dev->device.driver->name, qat_dev->qat_dev_id, qp_conf->service_str, "qp_mem", queue->hw_bundle_number, queue->hw_queue_number); qp_mz = queue_dma_zone_reserve(queue->memz_name, queue_size_bytes, diff --git a/drivers/common/zsda/zsda_qp.c b/drivers/common/zsda/zsda_qp.c index dab524e2d3..79172234af 100644 --- a/drivers/common/zsda/zsda_qp.c +++ b/drivers/common/zsda/zsda_qp.c @@ -592,12 +592,12 @@ zsda_queue_create(const uint8_t dev_id, struct zsda_queue *queue, if (dir == RING_DIR_TX) snprintf(queue->memz_name, sizeof(queue->memz_name), - "%s_%d_%s_%s_%d", pci_dev->driver->driver.name, dev_id, + "%s_%d_%s_%s_%d", pci_dev->device.driver->name, dev_id, qp_conf->service_str, "qptxmem", queue->hw_queue_number); else snprintf(queue->memz_name, sizeof(queue->memz_name), - "%s_%d_%s_%s_%d", pci_dev->driver->driver.name, dev_id, + "%s_%d_%s_%s_%d", pci_dev->device.driver->name, dev_id, qp_conf->service_str, "qprxmem", queue->hw_queue_number); diff --git a/drivers/net/ntnic/ntnic_ethdev.c b/drivers/net/ntnic/ntnic_ethdev.c index 89e751e7e0..7cc90a7a5b 100644 --- a/drivers/net/ntnic/ntnic_ethdev.c +++ b/drivers/net/ntnic/ntnic_ethdev.c @@ -2676,8 +2676,7 @@ nthw_pci_dev_deinit(struct rte_eth_dev *eth_dev __rte_unused) } static int -nthw_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, - struct rte_pci_device *pci_dev) +nthw_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) { int ret; @@ -2711,9 +2710,8 @@ nthw_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, pci_dev->id.subsystem_vendor_id, pci_dev->id.subsystem_device_id, pci_dev->name[0] ? pci_dev->name : "NA", pci_dev->device.numa_node, - pci_dev->driver->driver.name ? pci_dev->driver->driver.name : "NA", - pci_dev->driver->driver.alias ? pci_dev->driver->driver.alias : "NA"); - + (pci_drv->driver.name != NULL) ? pci_drv->driver.name : "NA", + (pci_drv->driver.alias != NULL) ? pci_drv->driver.alias : "NA"); ret = nthw_pci_dev_init(pci_dev); diff --git a/drivers/raw/cnxk_bphy/cnxk_bphy.c b/drivers/raw/cnxk_bphy/cnxk_bphy.c index 0c26cfbbe6..ea30a7100c 100644 --- a/drivers/raw/cnxk_bphy/cnxk_bphy.c +++ b/drivers/raw/cnxk_bphy/cnxk_bphy.c @@ -351,7 +351,7 @@ bphy_rawdev_probe(struct rte_pci_driver *pci_drv, bphy_rawdev->dev_ops = &bphy_rawdev_ops; bphy_rawdev->device = &pci_dev->device; - bphy_rawdev->driver_name = pci_dev->driver->driver.name; + bphy_rawdev->driver_name = pci_dev->device.driver->name; bphy_dev = (struct bphy_device *)bphy_rawdev->dev_private; bphy_dev->mem.res0 = pci_dev->mem_resource[0]; diff --git a/drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c b/drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c index c82589baa2..e0c7257027 100644 --- a/drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c +++ b/drivers/raw/cnxk_bphy/cnxk_bphy_cgx.c @@ -319,7 +319,7 @@ cnxk_bphy_cgx_rawdev_probe(struct rte_pci_driver *pci_drv, rawdev->dev_ops = &cnxk_bphy_cgx_rawdev_ops; rawdev->device = &pci_dev->device; - rawdev->driver_name = pci_dev->driver->driver.name; + rawdev->driver_name = pci_dev->device.driver->name; cgx = rawdev->dev_private; cgx->rcgx = rte_zmalloc(NULL, sizeof(*rcgx), 0); diff --git a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c index 60c2080740..57c7cc85f3 100644 --- a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c +++ b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c @@ -210,7 +210,7 @@ rvu_lf_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) rvu_lf_rawdev->dev_ops = &rvu_lf_rawdev_ops; rvu_lf_rawdev->device = &pci_dev->device; - rvu_lf_rawdev->driver_name = pci_dev->driver->driver.name; + rvu_lf_rawdev->driver_name = pci_dev->device.driver->name; roc_rvu_lf = (struct roc_rvu_lf *)rvu_lf_rawdev->dev_private; roc_rvu_lf->pci_dev = pci_dev; diff --git a/drivers/raw/ifpga/afu_pmd_core.c b/drivers/raw/ifpga/afu_pmd_core.c index f650b76cfe..ca14ebf52f 100644 --- a/drivers/raw/ifpga/afu_pmd_core.c +++ b/drivers/raw/ifpga/afu_pmd_core.c @@ -310,7 +310,7 @@ static int afu_rawdev_create(struct rte_afu_device *afu_dev, int socket_id) rawdev->dev_ops = &afu_rawdev_ops; rawdev->device = &afu_dev->device; - rawdev->driver_name = afu_dev->driver->driver.name; + rawdev->driver_name = afu_dev->device.driver->name; dev = afu_rawdev_get_priv(rawdev); if (!dev) diff --git a/drivers/raw/ifpga/ifpga_rawdev.c b/drivers/raw/ifpga/ifpga_rawdev.c index d1d54e9065..9f961c943f 100644 --- a/drivers/raw/ifpga/ifpga_rawdev.c +++ b/drivers/raw/ifpga/ifpga_rawdev.c @@ -1602,7 +1602,7 @@ ifpga_rawdev_create(struct rte_pci_device *pci_dev, rawdev->dev_ops = &ifpga_rawdev_ops; rawdev->device = &pci_dev->device; - rawdev->driver_name = pci_dev->driver->driver.name; + rawdev->driver_name = pci_dev->device.driver->name; /* must enumerate the adapter before use it */ ret = opae_adapter_enumerate(adapter); diff --git a/drivers/raw/ntb/ntb.c b/drivers/raw/ntb/ntb.c index 0ed4c14592..d54f2fb783 100644 --- a/drivers/raw/ntb/ntb.c +++ b/drivers/raw/ntb/ntb.c @@ -1478,7 +1478,7 @@ ntb_create(struct rte_pci_device *pci_dev, int socket_id) rawdev->dev_ops = &ntb_ops; rawdev->device = &pci_dev->device; - rawdev->driver_name = pci_dev->driver->driver.name; + rawdev->driver_name = pci_dev->device.driver->name; ret = ntb_init_hw(rawdev, pci_dev); if (ret < 0) { diff --git a/lib/ethdev/ethdev_pci.h b/lib/ethdev/ethdev_pci.h index 2229ffa252..ce3e293818 100644 --- a/lib/ethdev/ethdev_pci.h +++ b/lib/ethdev/ethdev_pci.h @@ -39,10 +39,13 @@ rte_eth_copy_pci_info(struct rte_eth_dev *eth_dev, eth_dev->intr_handle = pci_dev->intr_handle; if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + const struct rte_pci_driver *pci_drv; + + pci_drv = RTE_BUS_DRIVER(pci_dev->device.driver, *pci_drv); eth_dev->data->dev_flags = 0; - if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_LSC) + if (pci_drv->drv_flags & RTE_PCI_DRV_INTR_LSC) eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC; - if (pci_dev->driver->drv_flags & RTE_PCI_DRV_INTR_RMV) + if (pci_drv->drv_flags & RTE_PCI_DRV_INTR_RMV) eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_RMV; eth_dev->data->numa_node = pci_dev->device.numa_node; -- 2.53.0

