Re: [PATCH v7 11/14] vdpa/mlx5: Report max device capabilities

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




在 2022/1/7 上午10:12, Si-Wei Liu 写道:


On 1/5/2022 3:46 AM, Eli Cohen wrote:
Configure max supported virtqueues and features on the management
device.
This info can be retrieved using:

$ vdpa mgmtdev show
auxiliary/mlx5_core.sf.1:
   supported_classes net
   max_supported_vqs 257
   dev_features CSUM GUEST_CSUM MTU HOST_TSO4 HOST_TSO6 STATUS CTRL_VQ MQ \
                CTRL_MAC_ADDR VERSION_1 ACCESS_PLATFORM

Signed-off-by: Eli Cohen <elic@xxxxxxxxxx>
Reviewed-by: Si-Wei Liu<si-wei.liu@xxxxxxxxxx>


Acked-by: Jason Wang <jasowang@xxxxxxxxxx>


---
v6 -> v7:
1. Add supported features
  drivers/vdpa/mlx5/net/mlx5_vnet.c | 35 ++++++++++++++++++++-----------
  1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c
index ac4f6794c03c..a0f808ee24d6 100644
--- a/drivers/vdpa/mlx5/net/mlx5_vnet.c
+++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c
@@ -1867,22 +1867,29 @@ static u64 mlx_to_vritio_features(u16 dev_features)
      return result;
  }
  +static u64 get_supported_features(struct mlx5_core_dev *mdev)
+{
+    u64 mlx_vdpa_features = 0;
+    u16 dev_features;
+
+    dev_features = MLX5_CAP_DEV_VDPA_EMULATION(mdev, device_features_bits_mask);
+    mlx_vdpa_features |= mlx_to_vritio_features(dev_features);
+    if (MLX5_CAP_DEV_VDPA_EMULATION(mdev, virtio_version_1_0))
+        mlx_vdpa_features |= BIT_ULL(VIRTIO_F_VERSION_1);
+    mlx_vdpa_features |= BIT_ULL(VIRTIO_F_ACCESS_PLATFORM);
+    mlx_vdpa_features |= BIT_ULL(VIRTIO_NET_F_CTRL_VQ);
+    mlx_vdpa_features |= BIT_ULL(VIRTIO_NET_F_CTRL_MAC_ADDR);
+    mlx_vdpa_features |= BIT_ULL(VIRTIO_NET_F_MQ);
+    mlx_vdpa_features |= BIT_ULL(VIRTIO_NET_F_STATUS);
+    mlx_vdpa_features |= BIT_ULL(VIRTIO_NET_F_MTU);
+
+    return mlx_vdpa_features;
+}
+
  static u64 mlx5_vdpa_get_device_features(struct vdpa_device *vdev)
  {
      struct mlx5_vdpa_dev *mvdev = to_mvdev(vdev);
      struct mlx5_vdpa_net *ndev = to_mlx5_vdpa_ndev(mvdev);
-    u16 dev_features;
-
-    dev_features = MLX5_CAP_DEV_VDPA_EMULATION(mvdev->mdev, device_features_bits_mask);
-    ndev->mvdev.mlx_features |= mlx_to_vritio_features(dev_features);
-    if (MLX5_CAP_DEV_VDPA_EMULATION(mvdev->mdev, virtio_version_1_0))
-        ndev->mvdev.mlx_features |= BIT_ULL(VIRTIO_F_VERSION_1);
-    ndev->mvdev.mlx_features |= BIT_ULL(VIRTIO_F_ACCESS_PLATFORM);
-    ndev->mvdev.mlx_features |= BIT_ULL(VIRTIO_NET_F_CTRL_VQ);
-    ndev->mvdev.mlx_features |= BIT_ULL(VIRTIO_NET_F_CTRL_MAC_ADDR);
-    ndev->mvdev.mlx_features |= BIT_ULL(VIRTIO_NET_F_MQ);
-    ndev->mvdev.mlx_features |= BIT_ULL(VIRTIO_NET_F_STATUS);
-    ndev->mvdev.mlx_features |= BIT_ULL(VIRTIO_NET_F_MTU);
        print_features(mvdev, ndev->mvdev.mlx_features, false);
      return ndev->mvdev.mlx_features;
@@ -2570,6 +2577,7 @@ static int mlx5_vdpa_dev_add(struct vdpa_mgmt_dev *v_mdev, const char *name,
          err = -ENOMEM;
          goto err_alloc;
      }
+    ndev->mvdev.mlx_features = mgtdev->mgtdev.supported_features;
      ndev->mvdev.max_vqs = max_vqs;
      mvdev = &ndev->mvdev;
      mvdev->mdev = mdev;
@@ -2695,6 +2703,9 @@ static int mlx5v_probe(struct auxiliary_device *adev,
      mgtdev->mgtdev.id_table = id_table;
      mgtdev->mgtdev.config_attr_mask = BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MACADDR) |
                        BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MAX_VQP);
+    mgtdev->mgtdev.max_supported_vqs =
+        MLX5_CAP_DEV_VDPA_EMULATION(mdev, max_num_virtio_queues) + 1;
+    mgtdev->mgtdev.supported_features = get_supported_features(mdev);
      mgtdev->madev = madev;
        err = vdpa_mgmtdev_register(&mgtdev->mgtdev);


_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization




[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux