OSDN Git Service

net: phy: Added IRQ print to phylink_bringup_phy()
authorFlorian Fainelli <f.fainelli@gmail.com>
Sun, 12 Jan 2020 17:35:38 +0000 (09:35 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Jan 2020 18:56:58 +0000 (10:56 -0800)
The information about the PHY attached to the PHYLINK instance is useful
but is missing the IRQ prints that phy_attached_info() adds.
phy_attached_info() is a bit long and it would not be possible to use
phylink_info() anyway.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy_device.c
drivers/net/phy/phylink.c
include/linux/phy.h

index e5dc9f8..6a5056e 100644 (file)
@@ -1107,9 +1107,8 @@ void phy_attached_info(struct phy_device *phydev)
 EXPORT_SYMBOL(phy_attached_info);
 
 #define ATTACHED_FMT "attached PHY driver [%s] (mii_bus:phy_addr=%s, irq=%s)"
-void phy_attached_print(struct phy_device *phydev, const char *fmt, ...)
+char *phy_attached_info_irq(struct phy_device *phydev)
 {
-       const char *drv_name = phydev->drv ? phydev->drv->name : "unbound";
        char *irq_str;
        char irq_num[8];
 
@@ -1126,6 +1125,14 @@ void phy_attached_print(struct phy_device *phydev, const char *fmt, ...)
                break;
        }
 
+       return kasprintf(GFP_KERNEL, "%s", irq_str);
+}
+EXPORT_SYMBOL(phy_attached_info_irq);
+
+void phy_attached_print(struct phy_device *phydev, const char *fmt, ...)
+{
+       const char *drv_name = phydev->drv ? phydev->drv->name : "unbound";
+       char *irq_str = phy_attached_info_irq(phydev);
 
        if (!fmt) {
                phydev_info(phydev, ATTACHED_FMT "\n",
@@ -1142,6 +1149,7 @@ void phy_attached_print(struct phy_device *phydev, const char *fmt, ...)
                vprintk(fmt, ap);
                va_end(ap);
        }
+       kfree(irq_str);
 }
 EXPORT_SYMBOL(phy_attached_print);
 
index 8d786c9..efabbfa 100644 (file)
@@ -726,6 +726,7 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy,
 {
        struct phylink_link_state config;
        __ETHTOOL_DECLARE_LINK_MODE_MASK(supported);
+       char *irq_str;
        int ret;
 
        /*
@@ -761,9 +762,11 @@ static int phylink_bringup_phy(struct phylink *pl, struct phy_device *phy,
        phy->phylink = pl;
        phy->phy_link_change = phylink_phy_change;
 
+       irq_str = phy_attached_info_irq(phy);
        phylink_info(pl,
-                    "PHY [%s] driver [%s]\n", dev_name(&phy->mdio.dev),
-                    phy->drv->name);
+                    "PHY [%s] driver [%s] (irq=%s)\n",
+                    dev_name(&phy->mdio.dev), phy->drv->name, irq_str);
+       kfree(irq_str);
 
        mutex_lock(&phy->lock);
        mutex_lock(&pl->state_mutex);
index 5932bb8..3a70b75 100644 (file)
@@ -1131,6 +1131,8 @@ static inline void phy_unlock_mdio_bus(struct phy_device *phydev)
 
 void phy_attached_print(struct phy_device *phydev, const char *fmt, ...)
        __printf(2, 3);
+char *phy_attached_info_irq(struct phy_device *phydev)
+       __malloc;
 void phy_attached_info(struct phy_device *phydev);
 
 /* Clause 22 PHY */