You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.9 KiB
88 lines
2.9 KiB
From 91b74fb713b93ef7a747fbf65251972735b8ab78 Mon Sep 17 00:00:00 2001
|
|
From: Alaa Hleihel <ahleihel@redhat.com>
|
|
Date: Tue, 12 May 2020 10:53:41 -0400
|
|
Subject: [PATCH 135/312] [netdrv] net/mlx5: Expose vDPA emulation device
|
|
capabilities
|
|
|
|
Message-id: <20200512105530.4207-16-ahleihel@redhat.com>
|
|
Patchwork-id: 306886
|
|
Patchwork-instance: patchwork
|
|
O-Subject: [RHEL8.3 BZ 1789382 015/124] net/mlx5: Expose vDPA emulation device capabilities
|
|
Bugzilla: 1789382
|
|
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
|
|
RH-Acked-by: Kamal Heib <kheib@redhat.com>
|
|
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
Bugzilla: http://bugzilla.redhat.com/1789382
|
|
Upstream: v5.6-rc1
|
|
|
|
commit ca1992c62cadb6c8e1e1b47e197b550f3cd89b76
|
|
Author: Yishai Hadas <yishaih@mellanox.com>
|
|
Date: Thu Dec 12 13:09:25 2019 +0200
|
|
|
|
net/mlx5: Expose vDPA emulation device capabilities
|
|
|
|
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>
|
|
|
|
Signed-off-by: Alaa Hleihel <ahleihel@redhat.com>
|
|
Signed-off-by: Frantisek Hrbata <fhrbata@redhat.com>
|
|
---
|
|
drivers/net/ethernet/mellanox/mlx5/core/fw.c | 7 +++++++
|
|
include/linux/mlx5/device.h | 9 +++++++++
|
|
2 files changed, 16 insertions(+)
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fw.c b/drivers/net/ethernet/mellanox/mlx5/core/fw.c
|
|
index a19790dee7b2..c375edfe528c 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/fw.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fw.c
|
|
@@ -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;
|
|
}
|
|
|
|
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h
|
|
index f3773e8536bb..62c9c47affb3 100644
|
|
--- a/include/linux/mlx5/device.h
|
|
+++ b/include/linux/mlx5/device.h
|
|
@@ -1096,6 +1096,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
|
|
@@ -1288,6 +1289,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,
|
|
--
|
|
2.13.6
|
|
|