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