net/mlx5: Query ADV_VIRTUALIZATION capabilities
authorYishai Hadas <yishaih@nvidia.com>
Mon, 5 Sep 2022 10:58:44 +0000 (13:58 +0300)
committerLeon Romanovsky <leon@kernel.org>
Wed, 7 Sep 2022 08:57:27 +0000 (11:57 +0300)
Query ADV_VIRTUALIZATION capabilities which provide information for
advanced virtualization related features.

Current capabilities refer to the page tracker object which is used for
tracking the pages that are dirtied by the device.

Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Link: https://lore.kernel.org/r/20220905105852.26398-3-yishaih@nvidia.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/fw.c
drivers/net/ethernet/mellanox/mlx5/core/main.c
include/linux/mlx5/device.h

index 079fa44..483a518 100644 (file)
@@ -273,6 +273,12 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
                        return err;
        }
 
+       if (MLX5_CAP_GEN(dev, adv_virtualization)) {
+               err = mlx5_core_get_caps(dev, MLX5_CAP_ADV_VIRTUALIZATION);
+               if (err)
+                       return err;
+       }
+
        return 0;
 }
 
index c085b03..de9c315 100644 (file)
@@ -1488,6 +1488,7 @@ static const int types[] = {
        MLX5_CAP_IPSEC,
        MLX5_CAP_PORT_SELECTION,
        MLX5_CAP_DEV_SHAMPO,
+       MLX5_CAP_ADV_VIRTUALIZATION,
 };
 
 static void mlx5_hca_caps_free(struct mlx5_core_dev *dev)
index b5f58fd..5b41b9f 100644 (file)
@@ -1200,6 +1200,7 @@ enum mlx5_cap_type {
        MLX5_CAP_DEV_SHAMPO = 0x1d,
        MLX5_CAP_GENERAL_2 = 0x20,
        MLX5_CAP_PORT_SELECTION = 0x25,
+       MLX5_CAP_ADV_VIRTUALIZATION = 0x26,
        /* NUM OF CAP Types */
        MLX5_CAP_NUM
 };
@@ -1365,6 +1366,14 @@ enum mlx5_qcam_feature_groups {
        MLX5_GET(port_selection_cap, \
                 mdev->caps.hca[MLX5_CAP_PORT_SELECTION]->max, cap)
 
+#define MLX5_CAP_ADV_VIRTUALIZATION(mdev, cap) \
+       MLX5_GET(adv_virtualization_cap, \
+                mdev->caps.hca[MLX5_CAP_ADV_VIRTUALIZATION]->cur, cap)
+
+#define MLX5_CAP_ADV_VIRTUALIZATION_MAX(mdev, cap) \
+       MLX5_GET(adv_virtualization_cap, \
+                mdev->caps.hca[MLX5_CAP_ADV_VIRTUALIZATION]->max, cap)
+
 #define MLX5_CAP_FLOWTABLE_PORT_SELECTION(mdev, cap) \
        MLX5_CAP_PORT_SELECTION(mdev, flow_table_properties_port_selection.cap)