OSDN Git Service

net/mlx5: Expose vDPA emulation device capabilities
authorYishai Hadas <yishaih@mellanox.com>
Thu, 12 Dec 2019 11:09:25 +0000 (13:09 +0200)
committerLeon Romanovsky <leonro@mellanox.com>
Fri, 10 Jan 2020 18:25:32 +0000 (20:25 +0200)
Expose vDPA emulation device capabilities from the core layer.
It includes reading the capabilities from the firmware and exposing
helper functions to access the data.

Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Reviewed-by: Shahaf Shuler <shahafs@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/fw.c
include/linux/mlx5/device.h

index a19790d..c375edf 100644 (file)
@@ -245,6 +245,13 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
                        return err;
        }
 
+       if (MLX5_CAP_GEN_64(dev, general_obj_types) &
+               MLX5_GENERAL_OBJ_TYPES_CAP_VIRTIO_NET_Q) {
+               err = mlx5_core_get_caps(dev, MLX5_CAP_VDPA_EMULATION);
+               if (err)
+                       return err;
+       }
+
        return 0;
 }
 
index cc1c230..1a1c53f 100644 (file)
@@ -1105,6 +1105,7 @@ enum mlx5_cap_type {
        MLX5_CAP_DEV_MEM,
        MLX5_CAP_RESERVED_16,
        MLX5_CAP_TLS,
+       MLX5_CAP_VDPA_EMULATION = 0x13,
        MLX5_CAP_DEV_EVENT = 0x14,
        /* NUM OF CAP Types */
        MLX5_CAP_NUM
@@ -1297,6 +1298,14 @@ enum mlx5_qcam_feature_groups {
 #define MLX5_CAP_DEV_EVENT(mdev, cap)\
        MLX5_ADDR_OF(device_event_cap, (mdev)->caps.hca_cur[MLX5_CAP_DEV_EVENT], cap)
 
+#define MLX5_CAP_DEV_VDPA_EMULATION(mdev, cap)\
+       MLX5_GET(device_virtio_emulation_cap, \
+               (mdev)->caps.hca_cur[MLX5_CAP_VDPA_EMULATION], cap)
+
+#define MLX5_CAP64_DEV_VDPA_EMULATION(mdev, cap)\
+       MLX5_GET64(device_virtio_emulation_cap, \
+               (mdev)->caps.hca_cur[MLX5_CAP_VDPA_EMULATION], cap)
+
 enum {
        MLX5_CMD_STAT_OK                        = 0x0,
        MLX5_CMD_STAT_INT_ERR                   = 0x1,