Add new internal API "find_internal_resource_by_rte_dev" to get device.
Signed-off-by: Andy Pei <andy....@intel.com> --- drivers/vdpa/ifc/ifcvf_vdpa.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/vdpa/ifc/ifcvf_vdpa.c b/drivers/vdpa/ifc/ifcvf_vdpa.c index 73d04ed..c16e263 100644 --- a/drivers/vdpa/ifc/ifcvf_vdpa.c +++ b/drivers/vdpa/ifc/ifcvf_vdpa.c @@ -144,6 +144,29 @@ struct rte_vdpa_dev_info { return list; } +static struct internal_list * +find_internal_resource_by_rte_dev(struct rte_device *rte_dev) +{ + int found = 0; + struct internal_list *list; + + pthread_mutex_lock(&internal_list_lock); + + TAILQ_FOREACH(list, &internal_list, next) { + if (rte_dev == &list->internal->pdev->device) { + found = 1; + break; + } + } + + pthread_mutex_unlock(&internal_list_lock); + + if (!found) + return NULL; + + return list; +} + static int ifcvf_vfio_setup(struct ifcvf_internal *internal) { @@ -1398,10 +1421,11 @@ struct rte_vdpa_dev_info { { struct ifcvf_internal *internal; struct internal_list *list; + struct rte_device *rte_dev = vdev->device; - list = find_internal_resource_by_vdev(vdev); + list = find_internal_resource_by_rte_dev(rte_dev); if (list == NULL) { - DRV_LOG(ERR, "Invalid vDPA device: %p", vdev); + DRV_LOG(ERR, "Invalid rte device: %p", rte_dev); return -1; } -- 1.8.3.1