The NTNIC driver uses VFIO group bind/unbind functionality for container
device assignment purposes. Use the new container device assignment API
instead to provide clearer semantics.

Signed-off-by: Anatoly Burakov <[email protected]>
---
 drivers/net/ntnic/ntnic_vfio.c | 30 +++++++++---------------------
 1 file changed, 9 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ntnic/ntnic_vfio.c b/drivers/net/ntnic/ntnic_vfio.c
index 439468b3a2..c746b300b2 100644
--- a/drivers/net/ntnic/ntnic_vfio.c
+++ b/drivers/net/ntnic/ntnic_vfio.c
@@ -28,7 +28,6 @@ nt_vfio_vf_num(const struct rte_pci_device *pdev)
 /* Internal API */
 struct vfio_dev {
        int container_fd;
-       int group_fd;
        int dev_fd;
        uint64_t iova_addr;
 };
@@ -50,7 +49,6 @@ nthw_vfio_setup(struct rte_pci_device *dev)
 {
        int ret;
        char devname[RTE_DEV_NAME_MAX_LEN] = { 0 };
-       int iommu_group_num;
        int vf_num;
        struct vfio_dev *vfio;
 
@@ -66,14 +64,9 @@ nthw_vfio_setup(struct rte_pci_device *dev)
        }
 
        vfio->dev_fd = -1;
-       vfio->group_fd = -1;
        vfio->iova_addr = START_VF_IOVA;
 
        rte_pci_device_name(&dev->addr, devname, RTE_DEV_NAME_MAX_LEN);
-       ret = rte_vfio_get_group_num(rte_pci_get_sysfs_path(), devname, 
&iommu_group_num);
-       if (ret <= 0)
-               return -1;
-
        if (vf_num == 0) {
                /* use default container for pf0 */
                vfio->container_fd = RTE_VFIO_DEFAULT_CONTAINER_FD;
@@ -86,17 +79,14 @@ nthw_vfio_setup(struct rte_pci_device *dev)
                                "VFIO device setup failed. VFIO container 
creation failed.");
                        return -1;
                }
-       }
+               ret = rte_vfio_container_assign_device(vfio->container_fd,
+                               rte_pci_get_sysfs_path(), devname);
+               if (ret < 0) {
+                       NT_LOG(ERR, NTNIC,
+                               "VFIO device setup failed. Assign device to 
container failed.");
+                       goto err;
+               }
 
-       vfio->group_fd = rte_vfio_container_group_bind(vfio->container_fd, 
iommu_group_num);
-
-       if (vfio->group_fd < 0) {
-               NT_LOG(ERR, NTNIC,
-                       "VFIO device setup failed. VFIO container group bind 
failed.");
-               goto err;
-       }
-
-       if (vf_num > 0) {
                if (rte_pci_map_device(dev)) {
                        NT_LOG(ERR, NTNIC,
                                "Map VFIO device failed. is the vfio-pci driver 
loaded?");
@@ -106,10 +96,8 @@ nthw_vfio_setup(struct rte_pci_device *dev)
 
        vfio->dev_fd = rte_intr_dev_fd_get(dev->intr_handle);
 
-       NT_LOG(DBG, NTNIC,
-               "%s: VFIO id=%d, dev_fd=%d, container_fd=%d, group_fd=%d, 
iommu_group_num=%d",
-               dev->name, vf_num, vfio->dev_fd, vfio->container_fd, 
vfio->group_fd,
-               iommu_group_num);
+       NT_LOG(DBG, NTNIC, "%s: VFIO id=%d, dev_fd=%d, container_fd=%d",
+               dev->name, vf_num, vfio->dev_fd, vfio->container_fd);
 
        return vf_num;
 
-- 
2.47.3

Reply via email to