The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering
@ 2024-10-04 18:33 Christian Marangi
  2024-10-08 13:08 ` Andrew Lunn
  0 siblings, 1 reply; 6+ messages in thread
From: Christian Marangi @ 2024-10-04 18:33 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, netdev, linux-kernel
  Cc: Christian Marangi

Validate PHY LED OPs presence before registering and parsing them.
Defining LED nodes for a PHY driver that actually doesn't supports them
is redundant and useless.

It's also the case with Generic PHY driver used and a DT having LEDs
node for the specific PHY.

Skip it and report the error with debug print enabled.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
Changes v2:
- Use phydev_dbg instead of warn

 drivers/net/phy/phy_device.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 499797646580..e3aff78945a2 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -3421,6 +3421,16 @@ static int of_phy_leds(struct phy_device *phydev)
 	if (!leds)
 		return 0;
 
+	/* Check if the PHY driver have at least an OP to
+	 * set the LEDs.
+	 */
+	if (!phydev->drv->led_brightness_set &&
+	    !phydev->drv->led_blink_set &&
+	    !phydev->drv->led_hw_control_set) {
+		phydev_dbg(phydev, "ignoring leds node defined with no PHY driver support\n");
+		goto exit;
+	}
+
 	for_each_available_child_of_node_scoped(leds, led) {
 		err = of_phy_led(phydev, led);
 		if (err) {
@@ -3430,6 +3440,7 @@ static int of_phy_leds(struct phy_device *phydev)
 		}
 	}
 
+exit:
 	of_node_put(leds);
 	return 0;
 }
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering
  2024-10-04 18:33 [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering Christian Marangi
@ 2024-10-08 13:08 ` Andrew Lunn
  2024-10-08 13:12   ` Daniel Golle
  2024-10-08 13:13   ` Christian Marangi
  0 siblings, 2 replies; 6+ messages in thread
From: Andrew Lunn @ 2024-10-08 13:08 UTC (permalink / raw)
  To: Christian Marangi
  Cc: Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, netdev, linux-kernel

> +	/* Check if the PHY driver have at least an OP to
> +	 * set the LEDs.
> +	 */
> +	if (!phydev->drv->led_brightness_set &&
> +	    !phydev->drv->led_blink_set &&
> +	    !phydev->drv->led_hw_control_set) {

I think this condition is too strong. All that should be required is
led_brightness_set(). The rest can be done in software.


    Andrew

---
pw-bot: cr

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering
  2024-10-08 13:08 ` Andrew Lunn
@ 2024-10-08 13:12   ` Daniel Golle
  2024-10-08 13:13   ` Christian Marangi
  1 sibling, 0 replies; 6+ messages in thread
From: Daniel Golle @ 2024-10-08 13:12 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Christian Marangi, Heiner Kallweit, Russell King, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, netdev, linux-kernel

On Tue, Oct 08, 2024 at 03:08:32PM +0200, Andrew Lunn wrote:
> > +	/* Check if the PHY driver have at least an OP to
> > +	 * set the LEDs.
> > +	 */
> > +	if (!phydev->drv->led_brightness_set &&
> > +	    !phydev->drv->led_blink_set &&
> > +	    !phydev->drv->led_hw_control_set) {
> 
> I think this condition is too strong. All that should be required is
> led_brightness_set(). The rest can be done in software.

Some drivers do not offer led_brightness_set().
See for example
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/phy/realtek.c#n1303

Afaik there aren't any drivers which only offer led_blink_set(), that
would indeed be a bit weird. But only offering led_hw_control_set() is a
(rather sad) reality.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering
  2024-10-08 13:08 ` Andrew Lunn
  2024-10-08 13:12   ` Daniel Golle
@ 2024-10-08 13:13   ` Christian Marangi
  2024-10-08 17:02     ` Andrew Lunn
  1 sibling, 1 reply; 6+ messages in thread
From: Christian Marangi @ 2024-10-08 13:13 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, netdev, linux-kernel

On Tue, Oct 08, 2024 at 03:08:32PM +0200, Andrew Lunn wrote:
> > +	/* Check if the PHY driver have at least an OP to
> > +	 * set the LEDs.
> > +	 */
> > +	if (!phydev->drv->led_brightness_set &&
> > +	    !phydev->drv->led_blink_set &&
> > +	    !phydev->drv->led_hw_control_set) {
> 
> I think this condition is too strong. All that should be required is
> led_brightness_set(). The rest can be done in software.
>

Mhh the idea was really to check if one of the 3 is declared. Ideally to
future proof case where some led will only expose led_hw_control_set or
only led_blink_set?

-- 
	Ansuel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering
  2024-10-08 13:13   ` Christian Marangi
@ 2024-10-08 17:02     ` Andrew Lunn
  2024-10-08 17:04       ` Christian Marangi
  0 siblings, 1 reply; 6+ messages in thread
From: Andrew Lunn @ 2024-10-08 17:02 UTC (permalink / raw)
  To: Christian Marangi
  Cc: Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, netdev, linux-kernel

On Tue, Oct 08, 2024 at 03:13:34PM +0200, Christian Marangi wrote:
> On Tue, Oct 08, 2024 at 03:08:32PM +0200, Andrew Lunn wrote:
> > > +	/* Check if the PHY driver have at least an OP to
> > > +	 * set the LEDs.
> > > +	 */
> > > +	if (!phydev->drv->led_brightness_set &&
> > > +	    !phydev->drv->led_blink_set &&
> > > +	    !phydev->drv->led_hw_control_set) {
> > 
> > I think this condition is too strong. All that should be required is
> > led_brightness_set(). The rest can be done in software.
> >
> 
> Mhh the idea was really to check if one of the 3 is declared. Ideally to
> future proof case where some led will only expose led_hw_control_set or
> only led_blink_set?

Ah, i read it wrong. Sorry.

Maybe apply De Morgan's laws to make it more readable?

+	if (!(phydev->drv->led_brightness_set ||
+	      phydev->drv->led_blink_set ||
+	      phydev->drv->led_hw_control_set)) {

However, it is correct as is.

    Andrew

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering
  2024-10-08 17:02     ` Andrew Lunn
@ 2024-10-08 17:04       ` Christian Marangi
  0 siblings, 0 replies; 6+ messages in thread
From: Christian Marangi @ 2024-10-08 17:04 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, netdev, linux-kernel

On Tue, Oct 08, 2024 at 07:02:18PM +0200, Andrew Lunn wrote:
> On Tue, Oct 08, 2024 at 03:13:34PM +0200, Christian Marangi wrote:
> > On Tue, Oct 08, 2024 at 03:08:32PM +0200, Andrew Lunn wrote:
> > > > +	/* Check if the PHY driver have at least an OP to
> > > > +	 * set the LEDs.
> > > > +	 */
> > > > +	if (!phydev->drv->led_brightness_set &&
> > > > +	    !phydev->drv->led_blink_set &&
> > > > +	    !phydev->drv->led_hw_control_set) {
> > > 
> > > I think this condition is too strong. All that should be required is
> > > led_brightness_set(). The rest can be done in software.
> > >
> > 
> > Mhh the idea was really to check if one of the 3 is declared. Ideally to
> > future proof case where some led will only expose led_hw_control_set or
> > only led_blink_set?
> 
> Ah, i read it wrong. Sorry.
> 
> Maybe apply De Morgan's laws to make it more readable?
> 
> +	if (!(phydev->drv->led_brightness_set ||
> +	      phydev->drv->led_blink_set ||
> +	      phydev->drv->led_hw_control_set)) {
> 
> However, it is correct as is.
>

Happy to send v3. Np!

-- 
	Ansuel

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-10-08 17:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-04 18:33 [net-next PATCH v2] net: phy: Validate PHY LED OPs presence before registering Christian Marangi
2024-10-08 13:08 ` Andrew Lunn
2024-10-08 13:12   ` Daniel Golle
2024-10-08 13:13   ` Christian Marangi
2024-10-08 17:02     ` Andrew Lunn
2024-10-08 17:04       ` Christian Marangi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox