All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.