diff options
author | 2020-09-10 12:49:00 -0700 | |
---|---|---|
committer | 2020-09-10 12:49:00 -0700 | |
commit | 8b40f21b699df25dcc8b98d0de7774a1e45fca4f (patch) | |
tree | 1f2e7506a73cbf66a143b9c057a932790db24d97 /net | |
parent | net: mvneta: rely on MVNETA_MAX_RX_BUF_SIZE for pkt split in mvneta_swbm_rx_frame() (diff) | |
parent | mlx4: make sure to always set the port type (diff) | |
download | linux-dev-8b40f21b699df25dcc8b98d0de7774a1e45fca4f.tar.xz linux-dev-8b40f21b699df25dcc8b98d0de7774a1e45fca4f.zip |
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/devlink.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/net/core/devlink.c b/net/core/devlink.c index 91c12612f2b7..19037f114307 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -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); |