2022-06-10 03:40:40

by Ong Boon Leong

[permalink] [raw]
Subject: [PATCH net-next v2 4/6] net: phylink: unset ovr_an_inband if fixed-link is selected

If "fixed-link" DT or ACPI _DSD subnode is selected, it should take
precedence over the value of ovr_an_inband passed by MAC driver.

Fixes: ab39385021d1 ("net: phylink: make phylink_parse_mode() support non-DT platform")
Tested-by: Emilio Riva <[email protected]>
Signed-off-by: Ong Boon Leong <[email protected]>
---
drivers/net/phy/phylink.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 066684b8091..566852815e0 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -609,8 +609,10 @@ static int phylink_parse_mode(struct phylink *pl, struct fwnode_handle *fwnode)
const char *managed;

dn = fwnode_get_named_child_node(fwnode, "fixed-link");
- if (dn || fwnode_property_present(fwnode, "fixed-link"))
+ if (dn || fwnode_property_present(fwnode, "fixed-link")) {
pl->cfg_link_an_mode = MLO_AN_FIXED;
+ pl->config->ovr_an_inband = false;
+ }
fwnode_handle_put(dn);

if ((fwnode_property_read_string(fwnode, "managed", &managed) == 0 &&
--
2.25.1


2022-06-10 07:58:14

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH net-next v2 4/6] net: phylink: unset ovr_an_inband if fixed-link is selected

On Fri, Jun 10, 2022 at 11:29:39AM +0800, Ong Boon Leong wrote:
> If "fixed-link" DT or ACPI _DSD subnode is selected, it should take
> precedence over the value of ovr_an_inband passed by MAC driver.
>
> Fixes: ab39385021d1 ("net: phylink: make phylink_parse_mode() support non-DT platform")
> Tested-by: Emilio Riva <[email protected]>
> Signed-off-by: Ong Boon Leong <[email protected]>
> ---
> drivers/net/phy/phylink.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 066684b8091..566852815e0 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -609,8 +609,10 @@ static int phylink_parse_mode(struct phylink *pl, struct fwnode_handle *fwnode)
> const char *managed;
>
> dn = fwnode_get_named_child_node(fwnode, "fixed-link");
> - if (dn || fwnode_property_present(fwnode, "fixed-link"))
> + if (dn || fwnode_property_present(fwnode, "fixed-link")) {
> pl->cfg_link_an_mode = MLO_AN_FIXED;
> + pl->config->ovr_an_inband = false;
> + }

ovr_an_inband was added to support "non-DT" platforms, and the only
place it's set is stmmac. I don't see why you'd want a driver to always
set this member, and then have phylink clear it - the driver should be
setting it correctly itself, otherwise it becomes a "maybe override AN
inband if certain conditions are met" flag inside phylink.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

2022-06-14 02:05:51

by Ong Boon Leong

[permalink] [raw]
Subject: RE: [PATCH net-next v2 4/6] net: phylink: unset ovr_an_inband if fixed-link is selected

>On Fri, Jun 10, 2022 at 11:29:39AM +0800, Ong Boon Leong wrote:
>> If "fixed-link" DT or ACPI _DSD subnode is selected, it should take
>> precedence over the value of ovr_an_inband passed by MAC driver.
>>
>> Fixes: ab39385021d1 ("net: phylink: make phylink_parse_mode() support
>non-DT platform")
>> Tested-by: Emilio Riva <[email protected]>
>> Signed-off-by: Ong Boon Leong <[email protected]>
>> ---
>> drivers/net/phy/phylink.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
>> index 066684b8091..566852815e0 100644
>> --- a/drivers/net/phy/phylink.c
>> +++ b/drivers/net/phy/phylink.c
>> @@ -609,8 +609,10 @@ static int phylink_parse_mode(struct phylink *pl,
>struct fwnode_handle *fwnode)
>> const char *managed;
>>
>> dn = fwnode_get_named_child_node(fwnode, "fixed-link");
>> - if (dn || fwnode_property_present(fwnode, "fixed-link"))
>> + if (dn || fwnode_property_present(fwnode, "fixed-link")) {
>> pl->cfg_link_an_mode = MLO_AN_FIXED;
>> + pl->config->ovr_an_inband = false;
>> + }
>
>ovr_an_inband was added to support "non-DT" platforms, and the only
>place it's set is stmmac. I don't see why you'd want a driver to always
>set this member, and then have phylink clear it - the driver should be
>setting it correctly itself, otherwise it becomes a "maybe override AN
>inband if certain conditions are met" flag inside phylink.
Good point. Will make the "ovr_an_inband" not set inside the dwmac-intel
if fixed-link is used.