netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual
@ 2020-03-03 14:12 Parav Pandit
  2020-03-03 14:12 ` [PATCH net-next 1/2] " Parav Pandit
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Parav Pandit @ 2020-03-03 14:12 UTC (permalink / raw)
  To: netdev, davem, kuba; +Cc: parav, jiri, moshe, vladyslavt, saeedm, leon

Currently PCI PF and VF devlink devices register their ports as
physical port in non-representors mode.

Introduce a new port flavour as virtual so that virtual devices can
register 'virtual' flavour to make it more clear to users.

An example of one PCI PF and 2 PCI virtual functions, each having
one devlink port.

$ devlink port show
pci/0000:06:00.0/1: type eth netdev ens2f0 flavour physical port 0
pci/0000:06:00.2/1: type eth netdev ens2f2 flavour virtual port 0
pci/0000:06:00.3/1: type eth netdev ens2f3 flavour virtual port 0

Patch summary:
Patch-1 Introduces new devlink port flavour 'virtual'.
Patch-2 Uses new flavour to register PCI VF virtual ports.



Parav Pandit (2):
  devlink: Introduce devlink port flavour virtual
  net/mlx5e: Use devlink virtual flavour for VF devlink port

 drivers/net/ethernet/mellanox/mlx5/core/en.h  |  2 +-
 .../ethernet/mellanox/mlx5/core/en/devlink.c  | 39 +++++++++++--------
 .../ethernet/mellanox/mlx5/core/en/devlink.h  |  7 ++--
 .../net/ethernet/mellanox/mlx5/core/en_main.c |  6 +--
 include/uapi/linux/devlink.h                  |  1 +
 net/core/devlink.c                            |  2 +
 6 files changed, 33 insertions(+), 24 deletions(-)

-- 
2.19.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net-next 1/2] devlink: Introduce devlink port flavour virtual
  2020-03-03 14:12 [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual Parav Pandit
@ 2020-03-03 14:12 ` Parav Pandit
  2020-03-03 22:44   ` Jakub Kicinski
  2020-03-03 14:12 ` [PATCH net-next 2/2] net/mlx5e: Use devlink virtual flavour for VF devlink port Parav Pandit
  2020-03-03 23:40 ` [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual David Miller
  2 siblings, 1 reply; 5+ messages in thread
From: Parav Pandit @ 2020-03-03 14:12 UTC (permalink / raw)
  To: netdev, davem, kuba; +Cc: parav, jiri, moshe, vladyslavt, saeedm, leon

Currently mlx5 PCI PF and VF devlink devices register their ports as
physical port in non-representors mode.

Introduce a new port flavour as virtual so that virtual devices can
register 'virtual' flavour to make it more clear to users.

An example of one PCI PF and 2 PCI virtual functions, each having
one devlink port.

$ devlink port show
pci/0000:06:00.0/1: type eth netdev ens2f0 flavour physical port 0
pci/0000:06:00.2/1: type eth netdev ens2f2 flavour virtual port 0
pci/0000:06:00.3/1: type eth netdev ens2f3 flavour virtual port 0

Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Parav Pandit <parav@mellanox.com>
---
 include/uapi/linux/devlink.h | 1 +
 net/core/devlink.c           | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h
index be2a2948f452..dfdffc42e87d 100644
--- a/include/uapi/linux/devlink.h
+++ b/include/uapi/linux/devlink.h
@@ -187,6 +187,7 @@ enum devlink_port_flavour {
 				      * for the PCI VF. It is an internal
 				      * port that faces the PCI VF.
 				      */
+	DEVLINK_PORT_FLAVOUR_VIRTUAL, /* Any virtual port facing the user. */
 };
 
 enum devlink_param_cmode {
diff --git a/net/core/devlink.c b/net/core/devlink.c
index 231b18d6310c..20a0e1b5e04b 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -545,6 +545,7 @@ static int devlink_nl_port_attrs_put(struct sk_buff *msg,
 	case DEVLINK_PORT_FLAVOUR_PHYSICAL:
 	case DEVLINK_PORT_FLAVOUR_CPU:
 	case DEVLINK_PORT_FLAVOUR_DSA:
+	case DEVLINK_PORT_FLAVOUR_VIRTUAL:
 		if (nla_put_u32(msg, DEVLINK_ATTR_PORT_NUMBER,
 				attrs->phys.port_number))
 			return -EMSGSIZE;
@@ -6807,6 +6808,7 @@ static int __devlink_port_phys_port_name_get(struct devlink_port *devlink_port,
 
 	switch (attrs->flavour) {
 	case DEVLINK_PORT_FLAVOUR_PHYSICAL:
+	case DEVLINK_PORT_FLAVOUR_VIRTUAL:
 		if (!attrs->split)
 			n = snprintf(name, len, "p%u", attrs->phys.port_number);
 		else
-- 
2.19.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next 2/2] net/mlx5e: Use devlink virtual flavour for VF devlink port
  2020-03-03 14:12 [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual Parav Pandit
  2020-03-03 14:12 ` [PATCH net-next 1/2] " Parav Pandit
@ 2020-03-03 14:12 ` Parav Pandit
  2020-03-03 23:40 ` [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: Parav Pandit @ 2020-03-03 14:12 UTC (permalink / raw)
  To: netdev, davem, kuba; +Cc: parav, jiri, moshe, vladyslavt, saeedm, leon

Use newly introduce 'virtual' port flavour for devlink
port of PCI VF devlink device in non-representors mode.

While at it, remove recently introduced empty lines at end of the file.

Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Parav Pandit <parav@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en.h  |  2 +-
 .../ethernet/mellanox/mlx5/core/en/devlink.c  | 39 +++++++++++--------
 .../ethernet/mellanox/mlx5/core/en/devlink.h  |  7 ++--
 .../net/ethernet/mellanox/mlx5/core/en_main.c |  6 +--
 4 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
index a516dfab6d53..02b91aa896b0 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -880,7 +880,7 @@ struct mlx5e_priv {
 #endif
 	struct devlink_health_reporter *tx_reporter;
 	struct devlink_health_reporter *rx_reporter;
-	struct devlink_port             dl_phy_port;
+	struct devlink_port            dl_port;
 	struct mlx5e_xsk           xsk;
 #if IS_ENABLED(CONFIG_PCI_HYPERV_INTERFACE)
 	struct mlx5e_hv_vhca_stats_agent stats_agent;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.c
index 1a87a3fc6b44..e38495e4aa42 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.c
@@ -3,36 +3,43 @@
 
 #include "en/devlink.h"
 
-int mlx5e_devlink_phy_port_register(struct net_device *dev)
+int mlx5e_devlink_port_register(struct net_device *netdev)
 {
+	struct mlx5_core_dev *dev;
 	struct mlx5e_priv *priv;
 	struct devlink *devlink;
 	int err;
 
-	priv = netdev_priv(dev);
-	devlink = priv_to_devlink(priv->mdev);
-
-	devlink_port_attrs_set(&priv->dl_phy_port,
-			       DEVLINK_PORT_FLAVOUR_PHYSICAL,
-			       PCI_FUNC(priv->mdev->pdev->devfn),
-			       false, 0,
-			       NULL, 0);
-	err = devlink_port_register(devlink, &priv->dl_phy_port, 1);
+	priv = netdev_priv(netdev);
+	dev = priv->mdev;
+
+	if (mlx5_core_is_pf(dev))
+		devlink_port_attrs_set(&priv->dl_port,
+				       DEVLINK_PORT_FLAVOUR_PHYSICAL,
+				       PCI_FUNC(dev->pdev->devfn),
+				       false, 0,
+				       NULL, 0);
+	else
+		devlink_port_attrs_set(&priv->dl_port,
+				       DEVLINK_PORT_FLAVOUR_VIRTUAL,
+				       0, false, 0, NULL, 0);
+
+	devlink = priv_to_devlink(dev);
+	err = devlink_port_register(devlink, &priv->dl_port, 1);
 	if (err)
 		return err;
-	devlink_port_type_eth_set(&priv->dl_phy_port, dev);
+	devlink_port_type_eth_set(&priv->dl_port, netdev);
 	return 0;
 }
 
-void mlx5e_devlink_phy_port_unregister(struct mlx5e_priv *priv)
+void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv)
 {
-	devlink_port_unregister(&priv->dl_phy_port);
+	devlink_port_unregister(&priv->dl_port);
 }
 
-struct devlink_port *mlx5e_get_devlink_phy_port(struct net_device *dev)
+struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev)
 {
 	struct mlx5e_priv *priv = netdev_priv(dev);
 
-	return &priv->dl_phy_port;
+	return &priv->dl_port;
 }
-
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.h b/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.h
index b8cd63b88688..3e5393a0901f 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/devlink.h
@@ -7,9 +7,8 @@
 #include <net/devlink.h>
 #include "en.h"
 
-int mlx5e_devlink_phy_port_register(struct net_device *dev);
-void mlx5e_devlink_phy_port_unregister(struct mlx5e_priv *priv);
-struct devlink_port *mlx5e_get_devlink_phy_port(struct net_device *dev);
+int mlx5e_devlink_port_register(struct net_device *dev);
+void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv);
+struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev);
 
 #endif
-
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 8236f655a737..f9c928afec89 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -4606,7 +4606,7 @@ const struct net_device_ops mlx5e_netdev_ops = {
 	.ndo_set_vf_link_state   = mlx5e_set_vf_link_state,
 	.ndo_get_vf_stats        = mlx5e_get_vf_stats,
 #endif
-	.ndo_get_devlink_port    = mlx5e_get_devlink_phy_port,
+	.ndo_get_devlink_port    = mlx5e_get_devlink_port,
 };
 
 static int mlx5e_check_required_hca_cap(struct mlx5_core_dev *mdev)
@@ -5473,7 +5473,7 @@ static void *mlx5e_add(struct mlx5_core_dev *mdev)
 		goto err_detach;
 	}
 
-	err = mlx5e_devlink_phy_port_register(netdev);
+	err = mlx5e_devlink_port_register(netdev);
 	if (err) {
 		mlx5_core_err(mdev, "mlx5e_devlink_phy_port_register failed, %d\n", err);
 		goto err_unregister_netdev;
@@ -5507,7 +5507,7 @@ static void mlx5e_remove(struct mlx5_core_dev *mdev, void *vpriv)
 #ifdef CONFIG_MLX5_CORE_EN_DCB
 	mlx5e_dcbnl_delete_app(priv);
 #endif
-	mlx5e_devlink_phy_port_unregister(priv);
+	mlx5e_devlink_port_unregister(priv);
 	unregister_netdev(priv->netdev);
 	mlx5e_detach(mdev, vpriv);
 	mlx5e_destroy_netdev(priv);
-- 
2.19.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next 1/2] devlink: Introduce devlink port flavour virtual
  2020-03-03 14:12 ` [PATCH net-next 1/2] " Parav Pandit
@ 2020-03-03 22:44   ` Jakub Kicinski
  0 siblings, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2020-03-03 22:44 UTC (permalink / raw)
  To: Parav Pandit; +Cc: netdev, davem, jiri, moshe, vladyslavt, saeedm, leon

On Tue,  3 Mar 2020 08:12:42 -0600 Parav Pandit wrote:
> Currently mlx5 PCI PF and VF devlink devices register their ports as
> physical port in non-representors mode.
> 
> Introduce a new port flavour as virtual so that virtual devices can
> register 'virtual' flavour to make it more clear to users.
> 
> An example of one PCI PF and 2 PCI virtual functions, each having
> one devlink port.
> 
> $ devlink port show
> pci/0000:06:00.0/1: type eth netdev ens2f0 flavour physical port 0
> pci/0000:06:00.2/1: type eth netdev ens2f2 flavour virtual port 0
> pci/0000:06:00.3/1: type eth netdev ens2f3 flavour virtual port 0
> 
> Reviewed-by: Jiri Pirko <jiri@mellanox.com>
> Signed-off-by: Parav Pandit <parav@mellanox.com>

Acked-by: Jakub Kicinski <kuba@kernel.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual
  2020-03-03 14:12 [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual Parav Pandit
  2020-03-03 14:12 ` [PATCH net-next 1/2] " Parav Pandit
  2020-03-03 14:12 ` [PATCH net-next 2/2] net/mlx5e: Use devlink virtual flavour for VF devlink port Parav Pandit
@ 2020-03-03 23:40 ` David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2020-03-03 23:40 UTC (permalink / raw)
  To: parav; +Cc: netdev, kuba, jiri, moshe, vladyslavt, saeedm, leon

From: Parav Pandit <parav@mellanox.com>
Date: Tue,  3 Mar 2020 08:12:41 -0600

> Currently PCI PF and VF devlink devices register their ports as
> physical port in non-representors mode.
> 
> Introduce a new port flavour as virtual so that virtual devices can
> register 'virtual' flavour to make it more clear to users.
> 
> An example of one PCI PF and 2 PCI virtual functions, each having
> one devlink port.
> 
> $ devlink port show
> pci/0000:06:00.0/1: type eth netdev ens2f0 flavour physical port 0
> pci/0000:06:00.2/1: type eth netdev ens2f2 flavour virtual port 0
> pci/0000:06:00.3/1: type eth netdev ens2f3 flavour virtual port 0
> 
> Patch summary:
> Patch-1 Introduces new devlink port flavour 'virtual'.
> Patch-2 Uses new flavour to register PCI VF virtual ports.

Series applied, thanks Parav.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-03-03 23:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-03 14:12 [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual Parav Pandit
2020-03-03 14:12 ` [PATCH net-next 1/2] " Parav Pandit
2020-03-03 22:44   ` Jakub Kicinski
2020-03-03 14:12 ` [PATCH net-next 2/2] net/mlx5e: Use devlink virtual flavour for VF devlink port Parav Pandit
2020-03-03 23:40 ` [PATCH net-next 0/2] devlink: Introduce devlink port flavour virtual David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).