[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20211019105838.227569-7-yishaih@nvidia.com>
Date: Tue, 19 Oct 2021 13:58:30 +0300
From: Yishai Hadas <yishaih@...dia.com>
To: <alex.williamson@...hat.com>, <bhelgaas@...gle.com>,
<jgg@...dia.com>, <saeedm@...dia.com>
CC: <linux-pci@...r.kernel.org>, <kvm@...r.kernel.org>,
<netdev@...r.kernel.org>, <kuba@...nel.org>, <leonro@...dia.com>,
<kwankhede@...dia.com>, <mgurtovoy@...dia.com>,
<yishaih@...dia.com>, <maorg@...dia.com>
Subject: [PATCH V2 mlx5-next 06/14] vdpa/mlx5: Use mlx5_vf_get_core_dev() to get PF device
Use mlx5_vf_get_core_dev() to get PF device instead of accessing
directly the PF data structure from the VF one.
The mlx5_vf_get_core_dev() API in its turn uses the generic PCI API
(i.e. pci_iov_get_pf_drvdata) to get it.
Signed-off-by: Yishai Hadas <yishaih@...dia.com>
Signed-off-by: Leon Romanovsky <leonro@...dia.com>
---
drivers/vdpa/mlx5/net/mlx5_vnet.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
index 5c7d2a953dbd..97b8917bc34d 100644
--- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
+++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
@@ -1445,7 +1445,10 @@ static virtio_net_ctrl_ack handle_ctrl_mac(struct mlx5_vdpa_dev *mvdev, u8 cmd)
size_t read;
u8 mac[ETH_ALEN];
- pfmdev = pci_get_drvdata(pci_physfn(mvdev->mdev->pdev));
+ pfmdev = mlx5_vf_get_core_dev(mvdev->mdev->pdev);
+ if (!pfmdev)
+ return status;
+
switch (cmd) {
case VIRTIO_NET_CTRL_MAC_ADDR_SET:
read = vringh_iov_pull_iotlb(&cvq->vring, &cvq->riov, (void *)mac, ETH_ALEN);
@@ -1479,6 +1482,7 @@ static virtio_net_ctrl_ack handle_ctrl_mac(struct mlx5_vdpa_dev *mvdev, u8 cmd)
break;
}
+ mlx5_vf_put_core_dev(pfmdev);
return status;
}
@@ -2261,8 +2265,11 @@ static void mlx5_vdpa_free(struct vdpa_device *vdev)
free_resources(ndev);
mlx5_vdpa_destroy_mr(mvdev);
if (!is_zero_ether_addr(ndev->config.mac)) {
- pfmdev = pci_get_drvdata(pci_physfn(mvdev->mdev->pdev));
- mlx5_mpfs_del_mac(pfmdev, ndev->config.mac);
+ pfmdev = mlx5_vf_get_core_dev(mvdev->mdev->pdev);
+ if (pfmdev) {
+ mlx5_mpfs_del_mac(pfmdev, ndev->config.mac);
+ mlx5_vf_put_core_dev(pfmdev);
+ }
}
mlx5_vdpa_free_resources(&ndev->mvdev);
mutex_destroy(&ndev->reslock);
@@ -2449,8 +2456,11 @@ static int mlx5_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name)
goto err_mtu;
if (!is_zero_ether_addr(config->mac)) {
- pfmdev = pci_get_drvdata(pci_physfn(mdev->pdev));
+ pfmdev = mlx5_vf_get_core_dev(mdev->pdev);
+ if (!pfmdev)
+ goto err_mtu;
err = mlx5_mpfs_add_mac(pfmdev, config->mac);
+ mlx5_vf_put_core_dev(pfmdev);
if (err)
goto err_mtu;
@@ -2497,8 +2507,13 @@ static int mlx5_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name)
err_res:
mlx5_vdpa_free_resources(&ndev->mvdev);
err_mpfs:
- if (!is_zero_ether_addr(config->mac))
- mlx5_mpfs_del_mac(pfmdev, config->mac);
+ if (!is_zero_ether_addr(config->mac)) {
+ pfmdev = mlx5_vf_get_core_dev(mdev->pdev);
+ if (pfmdev) {
+ mlx5_mpfs_del_mac(pfmdev, config->mac);
+ mlx5_vf_put_core_dev(pfmdev);
+ }
+ }
err_mtu:
mutex_destroy(&ndev->reslock);
put_device(&mvdev->vdev.dev);
--
2.18.1
Powered by blists - more mailing lists