[v7,08/12] vdpa/ifc: add internal API to get device
Checks
Commit Message
Add new internal API "find_internal_resource_by_rte_dev"
to get device.
Signed-off-by: Andy Pei <andy.pei@intel.com>
---
drivers/vdpa/ifc/ifcvf_vdpa.c | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
@@ -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;
}