From: Jiri Pirko <[email protected]>

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 <[email protected]>
---
v2->v3:
- new patch
---
 net/devlink/devl_internal.h |  9 +++++++++
 net/devlink/port.c          | 14 +++++++-------
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/net/devlink/devl_internal.h b/net/devlink/devl_internal.h
index 3cc7e696e0fd..cb2ffef1ac2d 100644
--- a/net/devlink/devl_internal.h
+++ b/net/devlink/devl_internal.h
@@ -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.
diff --git a/net/devlink/port.c b/net/devlink/port.c
index fa3e1597711b..7fcd1d3ed44c 100644
--- a/net/devlink/port.c
+++ b/net/devlink/port.c
@@ -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);
-- 
2.51.1


Reply via email to