* [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset
@ 2024-03-04 13:56 Oleksij Rempel
2024-03-04 14:25 ` Arun.Ramadoss
2024-03-08 4:24 ` Jakub Kicinski
0 siblings, 2 replies; 5+ messages in thread
From: Oleksij Rempel @ 2024-03-04 13:56 UTC (permalink / raw)
To: David S. Miller, Andrew Lunn, Eric Dumazet, Florian Fainelli,
Jakub Kicinski, Paolo Abeni, Vladimir Oltean, Woojung Huh,
Arun Ramadoss
Cc: Oleksij Rempel, kernel, linux-kernel, netdev, UNGLinuxDriver
This driver has two separate reset sequence in different places:
- gpio/HW reset on start of ksz_switch_register()
- SW reset on start of ksz_setup()
The second one will overwrite drive strength configuration made in the
ksz_switch_register().
To fix it, move ksz_parse_drive_strength() from ksz_switch_register() to
ksz_setup().
Fixes: d67d7247f641 ("net: dsa: microchip: Add drive strength configuration")
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
drivers/net/dsa/microchip/ksz_common.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index d58cc685478b1..83a5936506059 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -2260,6 +2260,8 @@ static int ksz_pirq_setup(struct ksz_device *dev, u8 p)
return ksz_irq_common_setup(dev, pirq);
}
+static int ksz_parse_drive_strength(struct ksz_device *dev);
+
static int ksz_setup(struct dsa_switch *ds)
{
struct ksz_device *dev = ds->priv;
@@ -2281,6 +2283,10 @@ static int ksz_setup(struct dsa_switch *ds)
return ret;
}
+ ret = ksz_parse_drive_strength(dev);
+ if (ret)
+ return ret;
+
/* set broadcast storm protection 10% rate */
regmap_update_bits(ksz_regmap_16(dev), regs[S_BROADCAST_CTRL],
BROADCAST_STORM_RATE,
@@ -4345,10 +4351,6 @@ int ksz_switch_register(struct ksz_device *dev)
for (port_num = 0; port_num < dev->info->port_cnt; ++port_num)
dev->ports[port_num].interface = PHY_INTERFACE_MODE_NA;
if (dev->dev->of_node) {
- ret = ksz_parse_drive_strength(dev);
- if (ret)
- return ret;
-
ret = of_get_phy_mode(dev->dev->of_node, &interface);
if (ret == 0)
dev->compat_interface = interface;
--
2.39.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset
2024-03-04 13:56 [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset Oleksij Rempel
@ 2024-03-04 14:25 ` Arun.Ramadoss
2024-03-04 16:07 ` Oleksij Rempel
2024-03-08 4:24 ` Jakub Kicinski
1 sibling, 1 reply; 5+ messages in thread
From: Arun.Ramadoss @ 2024-03-04 14:25 UTC (permalink / raw)
To: andrew, olteanv, davem, Woojung.Huh, pabeni, o.rempel, edumazet,
f.fainelli, kuba
Cc: kernel, linux-kernel, netdev, UNGLinuxDriver
Hi Oleksij,
On Mon, 2024-03-04 at 14:56 +0100, Oleksij Rempel wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you
> know the content is safe
>
> This driver has two separate reset sequence in different places:
> - gpio/HW reset on start of ksz_switch_register()
> - SW reset on start of ksz_setup()
>
> The second one will overwrite drive strength configuration made in
> the
> ksz_switch_register().
>
> To fix it, move ksz_parse_drive_strength() from ksz_switch_register()
> to
> ksz_setup().
>
> Fixes: d67d7247f641 ("net: dsa: microchip: Add drive strength
> configuration")
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> ---
> drivers/net/dsa/microchip/ksz_common.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/dsa/microchip/ksz_common.c
> b/drivers/net/dsa/microchip/ksz_common.c
> index d58cc685478b1..83a5936506059 100644
> --- a/drivers/net/dsa/microchip/ksz_common.c
> +++ b/drivers/net/dsa/microchip/ksz_common.c
> @@ -2260,6 +2260,8 @@ static int ksz_pirq_setup(struct ksz_device
> *dev, u8 p)
> return ksz_irq_common_setup(dev, pirq);
> }
>
> +static int ksz_parse_drive_strength(struct ksz_device *dev);
> +
IMO: move the ksz_parse_drive_strength( ) here instead of prototype
alone. Since the function is used in only one place and it will be
logical to follow.
> static int ksz_setup(struct dsa_switch *ds)
> {
> struct ksz_device *dev = ds->priv;
> @@ -2281,6 +2283,10 @@ static int ksz_setup(struct dsa_switch *ds)
> return ret;
> }
>
> + ret = ksz_parse_drive_strength(dev);
> + if (ret)
> + return ret;
> +
> /* set broadcast storm protection 10% rate */
> regmap_update_bits(ksz_regmap_16(dev),
> regs[S_BROADCAST_CTRL],
> BROADCAST_STORM_RATE,
> @@ -4345,10 +4351,6 @@ int ksz_switch_register(struct ksz_device
> *dev)
> for (port_num = 0; port_num < dev->info->port_cnt;
> ++port_num)
> dev->ports[port_num].interface =
> PHY_INTERFACE_MODE_NA;
> if (dev->dev->of_node) {
> - ret = ksz_parse_drive_strength(dev);
> - if (ret)
> - return ret;
> -
> ret = of_get_phy_mode(dev->dev->of_node, &interface);
> if (ret == 0)
> dev->compat_interface = interface;
> --
> 2.39.2
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset
2024-03-04 14:25 ` Arun.Ramadoss
@ 2024-03-04 16:07 ` Oleksij Rempel
2024-03-04 16:12 ` Andrew Lunn
0 siblings, 1 reply; 5+ messages in thread
From: Oleksij Rempel @ 2024-03-04 16:07 UTC (permalink / raw)
To: Arun.Ramadoss
Cc: andrew, olteanv, davem, Woojung.Huh, pabeni, edumazet, f.fainelli,
kuba, kernel, linux-kernel, netdev, UNGLinuxDriver
Hi Arun,
On Mon, Mar 04, 2024 at 02:25:54PM +0000, Arun.Ramadoss@microchip.com wrote:
> Hi Oleksij,
>
> On Mon, 2024-03-04 at 14:56 +0100, Oleksij Rempel wrote:
> > EXTERNAL EMAIL: Do not click links or open attachments unless you
> > know the content is safe
> >
> > This driver has two separate reset sequence in different places:
> > - gpio/HW reset on start of ksz_switch_register()
> > - SW reset on start of ksz_setup()
> >
> > The second one will overwrite drive strength configuration made in
> > the
> > ksz_switch_register().
> >
> > To fix it, move ksz_parse_drive_strength() from ksz_switch_register()
> > to
> > ksz_setup().
> >
> > Fixes: d67d7247f641 ("net: dsa: microchip: Add drive strength
> > configuration")
> > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
> > ---
> > drivers/net/dsa/microchip/ksz_common.c | 10 ++++++----
> > 1 file changed, 6 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/dsa/microchip/ksz_common.c
> > b/drivers/net/dsa/microchip/ksz_common.c
> > index d58cc685478b1..83a5936506059 100644
> > --- a/drivers/net/dsa/microchip/ksz_common.c
> > +++ b/drivers/net/dsa/microchip/ksz_common.c
> > @@ -2260,6 +2260,8 @@ static int ksz_pirq_setup(struct ksz_device
> > *dev, u8 p)
> > return ksz_irq_common_setup(dev, pirq);
> > }
> >
> > +static int ksz_parse_drive_strength(struct ksz_device *dev);
> > +
>
> IMO: move the ksz_parse_drive_strength( ) here instead of prototype
> alone. Since the function is used in only one place and it will be
> logical to follow.
I fully agree, but I fear this change would be too big for stable.
@Jakub, what is your preference?
Regards,
Oleksij
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset
2024-03-04 16:07 ` Oleksij Rempel
@ 2024-03-04 16:12 ` Andrew Lunn
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Lunn @ 2024-03-04 16:12 UTC (permalink / raw)
To: Oleksij Rempel
Cc: Arun.Ramadoss, olteanv, davem, Woojung.Huh, pabeni, edumazet,
f.fainelli, kuba, kernel, linux-kernel, netdev, UNGLinuxDriver
> I fully agree, but I fear this change would be too big for stable.
How big is the change to do it correctly?
The stable rules are all about making it obviously correct, and so low
risk. In general, a big patch is not always obviously correct. But if
all you are doing is moving code around, no actual change, and it
clearly states that, the size limit should not matter, the risk is
low. Include this information as justification in the commit message,
and it should be O.K.
Andrew
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset
2024-03-04 13:56 [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset Oleksij Rempel
2024-03-04 14:25 ` Arun.Ramadoss
@ 2024-03-08 4:24 ` Jakub Kicinski
1 sibling, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2024-03-08 4:24 UTC (permalink / raw)
To: Oleksij Rempel
Cc: David S. Miller, Andrew Lunn, Eric Dumazet, Florian Fainelli,
Paolo Abeni, Vladimir Oltean, Woojung Huh, Arun Ramadoss, kernel,
linux-kernel, netdev, UNGLinuxDriver
On Mon, 4 Mar 2024 14:56:12 +0100 Oleksij Rempel wrote:
> This driver has two separate reset sequence in different places:
> - gpio/HW reset on start of ksz_switch_register()
> - SW reset on start of ksz_setup()
>
> The second one will overwrite drive strength configuration made in the
> ksz_switch_register().
>
> To fix it, move ksz_parse_drive_strength() from ksz_switch_register() to
> ksz_setup().
>
> Fixes: d67d7247f641 ("net: dsa: microchip: Add drive strength configuration")
> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Applied, thanks!
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-03-08 4:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-04 13:56 [PATCH net v1 1/1] net: dsa: microchip: make sure drive strength configuration is not lost by soft reset Oleksij Rempel
2024-03-04 14:25 ` Arun.Ramadoss
2024-03-04 16:07 ` Oleksij Rempel
2024-03-04 16:12 ` Andrew Lunn
2024-03-08 4:24 ` Jakub Kicinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox