1 // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
2 /* Copyright (c) 2020, Mellanox Technologies inc.  All rights reserved. */
3 
4 #include "en/devlink.h"
5 
6 int mlx5e_devlink_port_register(struct mlx5e_priv *priv)
7 {
8 	struct devlink *devlink = priv_to_devlink(priv->mdev);
9 
10 	if (mlx5_core_is_pf(priv->mdev))
11 		devlink_port_attrs_set(&priv->dl_port,
12 				       DEVLINK_PORT_FLAVOUR_PHYSICAL,
13 				       PCI_FUNC(priv->mdev->pdev->devfn),
14 				       false, 0,
15 				       NULL, 0);
16 	else
17 		devlink_port_attrs_set(&priv->dl_port,
18 				       DEVLINK_PORT_FLAVOUR_VIRTUAL,
19 				       0, false, 0, NULL, 0);
20 
21 	return devlink_port_register(devlink, &priv->dl_port, 1);
22 }
23 
24 void mlx5e_devlink_port_type_eth_set(struct mlx5e_priv *priv)
25 {
26 	devlink_port_type_eth_set(&priv->dl_port, priv->netdev);
27 }
28 
29 void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv)
30 {
31 	devlink_port_unregister(&priv->dl_port);
32 }
33 
34 struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev)
35 {
36 	struct mlx5e_priv *priv = netdev_priv(dev);
37 
38 	return &priv->dl_port;
39 }
40