[v7,08/12] vdpa/ifc: add internal API to get device

Message ID 1666073977-175484-9-git-send-email-andy.pei@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Maxime Coquelin
Headers
Series vdpa/ifc: add multi queue support |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Pei, Andy Oct. 18, 2022, 6:19 a.m. UTC
  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(-)
  

Patch

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;
 	}