Thomas Bogendoerfer 1c4beb
From: Parav Pandit <parav@nvidia.com>
Thomas Bogendoerfer 1c4beb
Date: Tue, 10 Aug 2021 16:24:17 +0300
Thomas Bogendoerfer 1c4beb
Subject: devlink: Add new "enable_vnet" generic device param
Thomas Bogendoerfer 1c4beb
Patch-mainline: v5.15-rc1
Thomas Bogendoerfer 1c4beb
Git-commit: 076b2a9dbb28e8b3d9a264a8bca664794255d448
Thomas Bogendoerfer 1c4beb
References: jsc#SLE-19253
Thomas Bogendoerfer 1c4beb
Thomas Bogendoerfer 1c4beb
Add new device generic parameter to enable/disable creation of
Thomas Bogendoerfer 1c4beb
VDPA net auxiliary device and associated device functionality
Thomas Bogendoerfer 1c4beb
in the devlink instance.
Thomas Bogendoerfer 1c4beb
Thomas Bogendoerfer 1c4beb
User who prefers to disable such functionality can disable it using below
Thomas Bogendoerfer 1c4beb
example.
Thomas Bogendoerfer 1c4beb
Thomas Bogendoerfer 1c4beb
$ devlink dev param set pci/0000:06:00.0 \
Thomas Bogendoerfer 1c4beb
              name enable_vnet value false cmode driverinit
Thomas Bogendoerfer 1c4beb
$ devlink dev reload pci/0000:06:00.0
Thomas Bogendoerfer 1c4beb
Thomas Bogendoerfer 1c4beb
At this point devlink instance do not create auxiliary device for the
Thomas Bogendoerfer 1c4beb
VDPA net functionality.
Thomas Bogendoerfer 1c4beb
Thomas Bogendoerfer 1c4beb
Signed-off-by: Parav Pandit <parav@nvidia.com>
Thomas Bogendoerfer 1c4beb
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Thomas Bogendoerfer 1c4beb
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Thomas Bogendoerfer 1c4beb
Signed-off-by: David S. Miller <davem@davemloft.net>
Thomas Bogendoerfer 1c4beb
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 1c4beb
---
Thomas Bogendoerfer 1c4beb
 Documentation/networking/devlink/devlink-params.rst |    4 ++++
Thomas Bogendoerfer 1c4beb
 include/net/devlink.h                               |    4 ++++
Thomas Bogendoerfer 1c4beb
 net/core/devlink.c                                  |    5 +++++
Thomas Bogendoerfer 1c4beb
 3 files changed, 13 insertions(+)
Thomas Bogendoerfer 1c4beb
Thomas Bogendoerfer 1c4beb
--- a/Documentation/networking/devlink/devlink-params.rst
Thomas Bogendoerfer 1c4beb
+++ b/Documentation/networking/devlink/devlink-params.rst
Thomas Bogendoerfer 1c4beb
@@ -105,6 +105,10 @@ own name.
Thomas Bogendoerfer 1c4beb
      - Boolean
Thomas Bogendoerfer 1c4beb
      - When enabled, the device driver will instantiate RDMA specific
Thomas Bogendoerfer 1c4beb
        auxiliary device of the devlink device.
Thomas Bogendoerfer 1c4beb
+   * - ``enable_vnet``
Thomas Bogendoerfer 1c4beb
+     - Boolean
Thomas Bogendoerfer 1c4beb
+     - When enabled, the device driver will instantiate VDPA networking
Thomas Bogendoerfer 1c4beb
+       specific auxiliary device of the devlink device.
Thomas Bogendoerfer 1c4beb
    * - ``internal_err_reset``
Thomas Bogendoerfer 1c4beb
      - Boolean
Thomas Bogendoerfer 1c4beb
      - When enabled, the device driver will reset the device on internal
Thomas Bogendoerfer 1c4beb
--- a/include/net/devlink.h
Thomas Bogendoerfer 1c4beb
+++ b/include/net/devlink.h
Thomas Bogendoerfer 1c4beb
@@ -523,6 +523,7 @@ enum devlink_param_generic_id {
Thomas Bogendoerfer 1c4beb
 	DEVLINK_PARAM_GENERIC_ID_ENABLE_REMOTE_DEV_RESET,
Thomas Bogendoerfer 1c4beb
 	DEVLINK_PARAM_GENERIC_ID_ENABLE_ETH,
Thomas Bogendoerfer 1c4beb
 	DEVLINK_PARAM_GENERIC_ID_ENABLE_RDMA,
Thomas Bogendoerfer 1c4beb
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_VNET,
Thomas Bogendoerfer 1c4beb
 
Thomas Bogendoerfer 1c4beb
 	/* add new param generic ids above here*/
Thomas Bogendoerfer 1c4beb
 	__DEVLINK_PARAM_GENERIC_ID_MAX,
Thomas Bogendoerfer 1c4beb
@@ -569,6 +570,9 @@ enum devlink_param_generic_id {
Thomas Bogendoerfer 1c4beb
 #define DEVLINK_PARAM_GENERIC_ENABLE_RDMA_NAME "enable_rdma"
Thomas Bogendoerfer 1c4beb
 #define DEVLINK_PARAM_GENERIC_ENABLE_RDMA_TYPE DEVLINK_PARAM_TYPE_BOOL
Thomas Bogendoerfer 1c4beb
 
Thomas Bogendoerfer 1c4beb
+#define DEVLINK_PARAM_GENERIC_ENABLE_VNET_NAME "enable_vnet"
Thomas Bogendoerfer 1c4beb
+#define DEVLINK_PARAM_GENERIC_ENABLE_VNET_TYPE DEVLINK_PARAM_TYPE_BOOL
Thomas Bogendoerfer 1c4beb
+
Thomas Bogendoerfer 1c4beb
 #define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate)	\
Thomas Bogendoerfer 1c4beb
 {									\
Thomas Bogendoerfer 1c4beb
 	.id = DEVLINK_PARAM_GENERIC_ID_##_id,				\
Thomas Bogendoerfer 1c4beb
--- a/net/core/devlink.c
Thomas Bogendoerfer 1c4beb
+++ b/net/core/devlink.c
Thomas Bogendoerfer 1c4beb
@@ -4300,6 +4300,11 @@ static const struct devlink_param devlin
Thomas Bogendoerfer 1c4beb
 		.name = DEVLINK_PARAM_GENERIC_ENABLE_RDMA_NAME,
Thomas Bogendoerfer 1c4beb
 		.type = DEVLINK_PARAM_GENERIC_ENABLE_RDMA_TYPE,
Thomas Bogendoerfer 1c4beb
 	},
Thomas Bogendoerfer 1c4beb
+	{
Thomas Bogendoerfer 1c4beb
+		.id = DEVLINK_PARAM_GENERIC_ID_ENABLE_VNET,
Thomas Bogendoerfer 1c4beb
+		.name = DEVLINK_PARAM_GENERIC_ENABLE_VNET_NAME,
Thomas Bogendoerfer 1c4beb
+		.type = DEVLINK_PARAM_GENERIC_ENABLE_VNET_TYPE,
Thomas Bogendoerfer 1c4beb
+	},
Thomas Bogendoerfer 1c4beb
 };
Thomas Bogendoerfer 1c4beb
 
Thomas Bogendoerfer 1c4beb
 static int devlink_param_generic_verify(const struct devlink_param *param)