All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>,
	Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Vladimir Oltean <olteanv@gmail.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Claudiu Manoil <claudiu.manoil@nxp.com>,
	George McCollister <george.mccollister@gmail.com>,
	Hauke Mehrtens <hauke@hauke-m.de>,
	Kurt Kanzenbach <kurt@linutronix.de>,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	Woojung Huh <woojung.huh@microchip.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	netdev@vger.kernel.org, UNGLinuxDriver@microchip.com
Subject: Re: [PATCH RFC net-next 05/12] net: dsa: bcm_sf2: convert to phylink_generic_validate()
Date: Fri, 3 Dec 2021 20:18:22 -0800	[thread overview]
Message-ID: <3b3fed98-0c82-99e9-dc72-09fe01c2bcf3@gmail.com> (raw)
In-Reply-To: <6ef4f764-cd91-91bd-e921-407e9d198179@gmail.com>

On 12/3/21 12:03 PM, Florian Fainelli wrote:
> On 11/24/21 9:52 AM, Russell King (Oracle) wrote:
>> Populate the supported interfaces and MAC capabilities for the bcm_sf2
>> DSA switch and remove the old validate implementation to allow DSA to
>> use phylink_generic_validate() for this switch driver.
>>
>> The exclusion of Gigabit linkmodes for MII and Reverse MII links is
>> handled within phylink_generic_validate() in phylink, so there is no
>> need to make them conditional on the interface mode in the driver.
>>
>> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
> 
> Tested-by: Florian Fainelli <f.fainelli@gmail.com>
> 
> but it looks like the fixed link ports are reporting some pretty strange
> advertisement values one of my two platforms running the same kernel image:

We would want to amend your patch with something that caters a bit more
towards how the ports have been configured:

diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
index d6ef0fb0d943..88933c3feddd 100644
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
@@ -675,12 +675,18 @@ static u32 bcm_sf2_sw_get_phy_flags(struct
dsa_switch *ds, int port)
  static void bcm_sf2_sw_get_caps(struct dsa_switch *ds, int port,
                                 struct phylink_config *config)
  {
-       __set_bit(PHY_INTERFACE_MODE_MII, config->supported_interfaces);
-       __set_bit(PHY_INTERFACE_MODE_REVMII, config->supported_interfaces);
-       __set_bit(PHY_INTERFACE_MODE_GMII, config->supported_interfaces);
-       __set_bit(PHY_INTERFACE_MODE_INTERNAL,
config->supported_interfaces);
-       __set_bit(PHY_INTERFACE_MODE_MOCA, config->supported_interfaces);
-       phy_interface_set_rgmii(config->supported_interfaces);
+       struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
+
+       if (priv->int_phy_mask & BIT(port))
+               __set_bit(PHY_INTERFACE_MODE_INTERNAL,
config->supported_interfaces);
+       else if (priv->moca_port == port)
+               __set_bit(PHY_INTERFACE_MODE_MOCA,
config->supported_interfaces);
+       else {
+               __set_bit(PHY_INTERFACE_MODE_MII,
config->supported_interfaces);
+               __set_bit(PHY_INTERFACE_MODE_REVMII,
config->supported_interfaces);
+               __set_bit(PHY_INTERFACE_MODE_GMII,
config->supported_interfaces);
+               phy_interface_set_rgmii(config->supported_interfaces);
+       }

         config->mac_capabilities = MAC_ASYM_PAUSE | MAC_SYM_PAUSE |
                 MAC_10 | MAC_100 | MAC_1000;

Now, with respect to the fixed link ports reporting 1000baseKX/Full this 
is introduced by switching to your patch, it works before and it 
"breaks" after.

The first part that is a bit weird is that we seem to be calling 
phylink_generic_validate() twice in a row from the same call site.

For fixed link ports, instead of masking with what the fixed link 
actually supports, we seem to be using a supported mask which is all 1s 
which seems a bit excessive for a fixed link.

This is an excerpt with the internal PHY:

[    4.210890] brcm-sf2 f0b00000.ethernet_switch gphy (uninitialized): 
Calling phylink_generic_validate
[    4.220063] before phylink_get_linkmodes: 0000000,00000000,00010fc0
[    4.226357] phylink_get_linkmodes: caps: 0xffffffff mac_capabilities: 
0xff
[    4.233258] after phylink_get_linkmodes: c000018,00000200,00036fff
[    4.239463] before anding supported with mask: 0000000,00000000,000062ff
[    4.246189] after anding supported with mask: 0000000,00000000,000062ff
[    4.252829] before anding advertising with mask: 
c000018,00000200,00036fff
[    4.259729] after anding advertising with mask: c000018,00000200,00036fff
[    4.266546] brcm-sf2 f0b00000.ethernet_switch gphy (uninitialized): 
PHY [f0b403c0.mdio--1:05] driver [Broadcom BCM7445] (irq=POLL)

and this is what a fixed link port looks like:

[    4.430765] brcm-sf2 f0b00000.ethernet_switch rgmii_2 
(uninitialized): Calling phylink_generic_validate
[    4.440205] before phylink_get_linkmodes: 0000000,00000000,00010fc0
[    4.446500] phylink_get_linkmodes: caps: 0xff mac_capabilities: 0xff
[    4.452880] after phylink_get_linkmodes: c000018,00000200,00036fff
[    4.459085] before anding supported with mask: fffffff,ffffffff,ffffffff
[    4.465811] after anding supported with mask: c000018,00000200,00036fff
[    4.472450] before anding advertising with mask: 
c000018,00000200,00036fff
[    4.479349] after anding advertising with mask: c000018,00000200,00036fff

or maybe the problem is with phylink_get_ksettings... ran out of time 
tonight to look further into it.
-- 
Florian

  reply	other threads:[~2021-12-04  4:18 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-24 17:46 [PATCH RFC net-next 00/12] Allow DSA drivers to set all phylink capabilities Russell King (Oracle)
2021-11-24 17:52 ` [PATCH RFC net-next 01/12] net: dsa: consolidate phylink creation Russell King (Oracle)
2021-11-24 18:11   ` Vladimir Oltean
2021-11-24 23:25     ` Russell King (Oracle)
2021-11-24 17:52 ` [PATCH RFC net-next 02/12] net: dsa: support use of phylink_generic_validate() Russell King (Oracle)
2021-11-24 18:13   ` Vladimir Oltean
2021-11-24 17:52 ` [PATCH RFC net-next 03/12] net: dsa: replace phylink_get_interfaces() with phylink_get_caps() Russell King (Oracle)
2021-11-24 18:15   ` Vladimir Oltean
2021-11-24 18:26     ` Russell King (Oracle)
2021-11-24 19:10       ` Russell King (Oracle)
2021-11-24 20:26         ` Vladimir Oltean
2021-11-24 20:56           ` Russell King (Oracle)
2021-11-24 21:18             ` Vladimir Oltean
2021-11-24 17:52 ` [PATCH RFC net-next 04/12] net: dsa: ar9331: convert to phylink_generic_validate() Russell King (Oracle)
2021-11-24 17:52 ` [PATCH RFC net-next 05/12] net: dsa: bcm_sf2: " Russell King (Oracle)
2021-12-03 20:03   ` Florian Fainelli
2021-12-04  4:18     ` Florian Fainelli [this message]
2021-12-04  8:59       ` Russell King (Oracle)
2021-12-04 14:42         ` Russell King (Oracle)
2021-12-04 14:52         ` Russell King (Oracle)
2021-12-04 15:01           ` Andrew Lunn
2021-12-05 12:58             ` Russell King (Oracle)
2021-12-06 15:59           ` Tom Lendacky
2021-12-06 16:13             ` Russell King (Oracle)
2021-12-06 16:36               ` Tom Lendacky
2021-12-06 16:39                 ` Russell King (Oracle)
2021-12-06 17:06           ` Florian Fainelli
2021-12-06 19:26             ` Russell King (Oracle)
2021-12-07 18:08               ` Russell King (Oracle)
2021-11-24 17:52 ` [PATCH RFC net-next 06/12] net: dsa: hellcreek: " Russell King (Oracle)
2021-11-25  8:49   ` Kurt Kanzenbach
2021-11-24 17:52 ` [PATCH RFC net-next 07/12] net: dsa: ksz8795: " Russell King (Oracle)
2021-11-24 17:53 ` [PATCH RFC net-next 08/12] net: dsa: lantiq: " Russell King (Oracle)
2021-11-28 18:49   ` Hauke Mehrtens
2021-11-24 17:53 ` [PATCH RFC net-next 09/12] net: dsa: ocelot: " Russell King (Oracle)
2021-11-24 20:07   ` Vladimir Oltean
2021-11-24 21:21     ` Russell King (Oracle)
2021-11-24 17:53 ` [PATCH RFC net-next 10/12] net: dsa: qca8k: " Russell King (Oracle)
2021-11-24 17:53 ` [PATCH RFC net-next 11/12] net: dsa: sja1105: " Russell King (Oracle)
2021-11-24 19:53   ` Vladimir Oltean
2021-11-24 21:08     ` Russell King (Oracle)
2021-11-24 22:34       ` Vladimir Oltean
2021-11-24 23:21         ` Russell King (Oracle)
2021-11-24 23:32           ` Vladimir Oltean
2021-11-25 12:56             ` Russell King (Oracle)
2021-11-25 16:18               ` Vladimir Oltean
2021-11-24 17:53 ` [PATCH RFC net-next 12/12] net: dsa: xrs700x: " Russell King (Oracle)
2021-12-03 16:15 ` [PATCH RFC net-next 00/12] Allow DSA drivers to set all phylink capabilities Russell King (Oracle)
2021-12-03 19:28   ` Florian Fainelli
2021-12-03 19:44     ` Florian Fainelli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3b3fed98-0c82-99e9-dc72-09fe01c2bcf3@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=claudiu.manoil@nxp.com \
    --cc=davem@davemloft.net \
    --cc=george.mccollister@gmail.com \
    --cc=hauke@hauke-m.de \
    --cc=kuba@kernel.org \
    --cc=kurt@linutronix.de \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=rmk+kernel@armlinux.org.uk \
    --cc=vivien.didelot@gmail.com \
    --cc=vladimir.oltean@nxp.com \
    --cc=woojung.huh@microchip.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.