net: devlink: move port_type_netdev_checks() call to __devlink_port_type_set()
authorJiri Pirko <jiri@nvidia.com>
Wed, 2 Nov 2022 16:02:01 +0000 (17:02 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 4 Nov 2022 03:48:32 +0000 (20:48 -0700)
As __devlink_port_type_set() is going to be called directly from netdevice
notifier event handle in one of the follow-up patches, move the
port_type_netdev_checks() call there.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/devlink.c

index 3ba3435e2cd57188e84907317287b58189922d87..ff81a5a5087cfcdeea23f0675e49aabe4fd60f25 100644 (file)
@@ -9994,33 +9994,6 @@ void devlink_port_unregister(struct devlink_port *devlink_port)
 }
 EXPORT_SYMBOL_GPL(devlink_port_unregister);
 
-static void __devlink_port_type_set(struct devlink_port *devlink_port,
-                                   enum devlink_port_type type,
-                                   void *type_dev)
-{
-       ASSERT_DEVLINK_PORT_REGISTERED(devlink_port);
-
-       if (type == DEVLINK_PORT_TYPE_NOTSET)
-               devlink_port_type_warn_schedule(devlink_port);
-       else
-               devlink_port_type_warn_cancel(devlink_port);
-
-       spin_lock_bh(&devlink_port->type_lock);
-       devlink_port->type = type;
-       switch (type) {
-       case DEVLINK_PORT_TYPE_ETH:
-               devlink_port->type_eth.netdev = type_dev;
-               break;
-       case DEVLINK_PORT_TYPE_IB:
-               devlink_port->type_ib.ibdev = type_dev;
-               break;
-       default:
-               break;
-       }
-       spin_unlock_bh(&devlink_port->type_lock);
-       devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW);
-}
-
 static void devlink_port_type_netdev_checks(struct devlink_port *devlink_port,
                                            struct net_device *netdev)
 {
@@ -10058,6 +10031,38 @@ static void devlink_port_type_netdev_checks(struct devlink_port *devlink_port,
        }
 }
 
+static void __devlink_port_type_set(struct devlink_port *devlink_port,
+                                   enum devlink_port_type type,
+                                   void *type_dev)
+{
+       struct net_device *netdev = type_dev;
+
+       ASSERT_DEVLINK_PORT_REGISTERED(devlink_port);
+
+       if (type == DEVLINK_PORT_TYPE_NOTSET) {
+               devlink_port_type_warn_schedule(devlink_port);
+       } else {
+               devlink_port_type_warn_cancel(devlink_port);
+               if (type == DEVLINK_PORT_TYPE_ETH && netdev)
+                       devlink_port_type_netdev_checks(devlink_port, netdev);
+       }
+
+       spin_lock_bh(&devlink_port->type_lock);
+       devlink_port->type = type;
+       switch (type) {
+       case DEVLINK_PORT_TYPE_ETH:
+               devlink_port->type_eth.netdev = netdev;
+               break;
+       case DEVLINK_PORT_TYPE_IB:
+               devlink_port->type_ib.ibdev = type_dev;
+               break;
+       default:
+               break;
+       }
+       spin_unlock_bh(&devlink_port->type_lock);
+       devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW);
+}
+
 /**
  *     devlink_port_type_eth_set - Set port type to Ethernet
  *
@@ -10067,9 +10072,7 @@ static void devlink_port_type_netdev_checks(struct devlink_port *devlink_port,
 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
+       if (!netdev)
                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);