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 	struct devlink_port_attrs attrs = {};
10 
11 	if (mlx5_core_is_pf(priv->mdev)) {
12 		attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
13 		attrs.phys.port_number = PCI_FUNC(priv->mdev->pdev->devfn);
14 	} else {
15 		attrs.flavour = DEVLINK_PORT_FLAVOUR_VIRTUAL;
16 	}
17 
18 	devlink_port_attrs_set(&priv->dl_port, &attrs);
19 
20 	return devlink_port_register(devlink, &priv->dl_port, 1);
21 }
22 
23 void mlx5e_devlink_port_type_eth_set(struct mlx5e_priv *priv)
24 {
25 	devlink_port_type_eth_set(&priv->dl_port, priv->netdev);
26 }
27 
28 void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv)
29 {
30 	devlink_port_unregister(&priv->dl_port);
31 }
32 
33 struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev)
34 {
35 	struct mlx5e_priv *priv = netdev_priv(dev);
36 
37 	return &priv->dl_port;
38 }
39