]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
devlink: add devl_warn() helper and use it in port warnings
authorJiri Pirko <jiri@nvidia.com>
Thu, 12 Mar 2026 10:04:03 +0000 (11:04 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 14 Mar 2026 20:08:49 +0000 (13:08 -0700)
Introduce devl_warn() macro that uses dev_warn() when a backing
device is available and falls back to pr_warn() otherwise. Convert
all dev_warn() calls in port.c to use it, preparing for devlink
instances without a backing device.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Link: https://patch.msgid.link/20260312100407.551173-10-jiri@resnulli.us
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/devlink/devl_internal.h
net/devlink/port.c

index 3cc7e696e0fd971e3663acd9ec126a4362d44960..cb2ffef1ac2d2e5fdef15cf97a1986fed39cf9fa 100644 (file)
@@ -71,6 +71,15 @@ struct devlink *__devlink_alloc(const struct devlink_ops *ops, size_t priv_size,
                                struct net *net, struct device *dev,
                                const struct device_driver *dev_driver);
 
+#define devl_warn(devlink, format, args...)                            \
+       do {                                                            \
+               if ((devlink)->dev)                                     \
+                       dev_warn((devlink)->dev, format, ##args);       \
+               else                                                    \
+                       pr_warn("devlink (%s): " format,                \
+                               devlink_dev_name(devlink), ##args);     \
+       } while (0)
+
 /* devlink instances are open to the access from the user space after
  * devlink_register() call. Such logical barrier allows us to have certain
  * expectations related to locking.
index fa3e1597711b84fda8aa8cafc02d85988e100f7c..7fcd1d3ed44c47322064267086d19b418757b74a 100644 (file)
@@ -976,7 +976,7 @@ static void devlink_port_type_warn(struct work_struct *work)
        struct devlink_port *port = container_of(to_delayed_work(work),
                                                 struct devlink_port,
                                                 type_warn_dw);
-       dev_warn(port->devlink->dev, "Type was not set for devlink port.");
+       devl_warn(port->devlink, "Type was not set for devlink port.");
 }
 
 static bool devlink_port_type_should_warn(struct devlink_port *devlink_port)
@@ -1242,9 +1242,9 @@ static void __devlink_port_type_set(struct devlink_port *devlink_port,
  */
 void devlink_port_type_eth_set(struct devlink_port *devlink_port)
 {
-       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);
+       devl_warn(devlink_port->devlink,
+                 "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, NULL);
 }
 EXPORT_SYMBOL_GPL(devlink_port_type_eth_set);
@@ -1273,9 +1273,9 @@ EXPORT_SYMBOL_GPL(devlink_port_type_ib_set);
 void devlink_port_type_clear(struct devlink_port *devlink_port)
 {
        if (devlink_port->type == DEVLINK_PORT_TYPE_ETH)
-               dev_warn(devlink_port->devlink->dev,
-                        "devlink port type for port %d cleared without a software interface reference, device type not supported by the kernel?\n",
-                        devlink_port->index);
+               devl_warn(devlink_port->devlink,
+                         "devlink port type for port %d cleared 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_NOTSET, NULL);
 }
 EXPORT_SYMBOL_GPL(devlink_port_type_clear);