Merge branch 'mlx4-avoid-devlink-port-type-not-set-warnings'
Jakub Kicinski says: ==================== mlx4: avoid devlink port type not set warnings This small set addresses the issue of mlx4 potentially not setting devlink port type when Ethernet or IB driver is not built, but port has that type. v2: - add patch 1 ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
8b40f21b69
|
@ -3031,6 +3031,17 @@ static int mlx4_init_port_info(struct mlx4_dev *dev, int port)
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
/* Ethernet and IB drivers will normally set the port type,
|
||||
* but if they are not built set the type now to prevent
|
||||
* devlink_port_type_warn() from firing.
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_MLX4_EN) &&
|
||||
dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
|
||||
devlink_port_type_eth_set(&info->devlink_port, NULL);
|
||||
else if (!IS_ENABLED(CONFIG_MLX4_INFINIBAND) &&
|
||||
dev->caps.port_type[port] == MLX4_PORT_TYPE_IB)
|
||||
devlink_port_type_ib_set(&info->devlink_port, NULL);
|
||||
|
||||
info->dev = dev;
|
||||
info->port = port;
|
||||
if (!mlx4_is_slave(dev)) {
|
||||
|
|
|
@ -7608,14 +7608,8 @@ static void __devlink_port_type_set(struct devlink_port *devlink_port,
|
|||
devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW);
|
||||
}
|
||||
|
||||
/**
|
||||
* devlink_port_type_eth_set - Set port type to Ethernet
|
||||
*
|
||||
* @devlink_port: devlink port
|
||||
* @netdev: related netdevice
|
||||
*/
|
||||
void devlink_port_type_eth_set(struct devlink_port *devlink_port,
|
||||
struct net_device *netdev)
|
||||
static void devlink_port_type_netdev_checks(struct devlink_port *devlink_port,
|
||||
struct net_device *netdev)
|
||||
{
|
||||
const struct net_device_ops *ops = netdev->netdev_ops;
|
||||
|
||||
|
@ -7649,6 +7643,24 @@ void devlink_port_type_eth_set(struct devlink_port *devlink_port,
|
|||
err = ops->ndo_get_port_parent_id(netdev, &ppid);
|
||||
WARN_ON(err != -EOPNOTSUPP);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* devlink_port_type_eth_set - Set port type to Ethernet
|
||||
*
|
||||
* @devlink_port: devlink port
|
||||
* @netdev: related netdevice
|
||||
*/
|
||||
void devlink_port_type_eth_set(struct devlink_port *devlink_port,
|
||||
struct net_device *netdev)
|
||||
{
|
||||
if (netdev)
|
||||
devlink_port_type_netdev_checks(devlink_port, netdev);
|
||||
else
|
||||
dev_warn(devlink_port->devlink->dev,
|
||||
"devlink port type for port %d set to Ethernet without a software interface reference, device type not supported by the kernel?\n",
|
||||
devlink_port->index);
|
||||
|
||||
__devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_ETH, netdev);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_port_type_eth_set);
|
||||
|
|
Loading…
Reference in New Issue