[PATCH 17/23] drivers: rely on generic driver
David Marchand
david.marchand at redhat.com
Wed Apr 29 13:44:50 CEST 2026
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 <david.marchand at redhat.com>
---
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
More information about the dev
mailing list