linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Jose Abreu <Jose.Abreu@synopsys.com>,
	Joao Pinto <Joao.Pinto@synopsys.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Giuseppe Cavallaro <peppe.cavallaro@st.com>,
	Jakub Kicinski <kuba@kernel.org>,
	"linux-stm32@st-md-mailman.stormreply.com"
	<linux-stm32@st-md-mailman.stormreply.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	Heiner Kallweit <hkallweit1@gmail.com>
Subject: Re: [RFC net-next 6/8] net: phylink: Configure MAC/PCS when link is up without PHY
Date: Tue, 28 Jan 2020 18:08:03 +0000	[thread overview]
Message-ID: <20200128180802.GD25745@shell.armlinux.org.uk> (raw)
In-Reply-To: <20200127145107.GE13647@lunn.ch>

On Mon, Jan 27, 2020 at 03:51:07PM +0100, Andrew Lunn wrote:
> I've also had issues with the DSA links, also being configured to
> 10/Half. That seems to be related to having a phy-mode property in
> device tree. I need to add a fixed-link property to set the correct
> speed. Something is broken here, previously the fixed-link was only
> needed if the speed needed to be lower than the ports maximum. I think
> that is a separate issue i need to dig into, not part of the PCS to
> MAC transfer.

I think I understand what is happening on this one more fully.

When DSA initialises, the DSA and CPU ports are initially configured to
maximum speed via mv88e6xxx_setup_port(), called via mv88e6xxx_setup(),
the .setup method, dsa_switch_setup(), and dsa_tree_setup_switches().

dsa_tree_setup_switches() then moves on to calling dsa_port_setup().
dsa_port_setup() calls dsa_port_link_register_of() for the DSA and CPU
ports, which calls into dsa_port_phylink_register().

That calls phylink_create(), and then attempts to attach a PHY using
phylink_of_phy_connect() - which itself is rather weird - since when
has a DSA or CPU port been allowed to have a PHY in its DT node?

The upshot is, phylink_create() will (and always has) treated a node
without a fixed-link or in-band specification as a "phy" mode link.
Moving on, phylink_start() will be called.

phylink_start() attempts to set an initial configuration.  As there
is no PHY attached, phylink has no idea what parameters to set, but
it needs to set an initial configuration, so it does so.  The result
is, dsa_port_phylink_mac_config() gets called without the speed and
duplex being set as one would expect.

That hasn't changed in phylink yet - so it's a bug that dates back
to the phylink integration into the DSA core, and is a regression
resulting from that.

The reason my patch above appears to solve it is because I'm ignoring
calls to mac_config() with mode == MLO_AN_PHY in various circumstances,
which results in the initial configuration by mv88e6xxx_setup_port()
remaining.

I'm not yet sure what to do about that; and I'm out of time to think
about that anymore today - but I thought I'd post my analysis so far
in the hope that it helps.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-01-28 18:10 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-27 11:09 [RFC net-next 0/8] net: Add support for Synopsys DesignWare XPCS Jose Abreu
2020-01-27 11:09 ` [RFC net-next 1/8] net: stmmac: selftests: Do not fail if PHY is not attached Jose Abreu
2020-01-27 11:09 ` [RFC net-next 2/8] net: phylink: Add phylink_and and phylink_andnot Helpers Jose Abreu
2020-01-27 11:16   ` Russell King - ARM Linux admin
2020-01-27 11:09 ` [RFC net-next 3/8] net: stmmac: Switch to phylink_and()/phylink_andnot() Jose Abreu
2020-01-27 11:09 ` [RFC net-next 4/8] net: stmmac: Fallback to dev_fwnode() if needed Jose Abreu
2020-01-27 11:09 ` [RFC net-next 5/8] net: phylink: Add missing Backplane speeds Jose Abreu
2020-01-27 11:09 ` [RFC net-next 6/8] net: phylink: Configure MAC/PCS when link is up without PHY Jose Abreu
2020-01-27 11:21   ` Russell King - ARM Linux admin
2020-01-27 11:38     ` Jose Abreu
2020-01-27 11:46       ` Russell King - ARM Linux admin
2020-01-27 12:50         ` Jose Abreu
2020-01-27 13:37           ` Russell King - ARM Linux admin
2020-01-27 13:57             ` Jose Abreu
2020-01-27 14:00         ` Andrew Lunn
2020-01-27 14:08           ` Russell King - ARM Linux admin
2020-01-27 14:51             ` Andrew Lunn
2020-01-27 16:11               ` Russell King - ARM Linux admin
2020-01-27 16:22                 ` Andrew Lunn
2020-01-27 19:28                   ` Heiner Kallweit
2020-01-28 11:12                     ` Jose Abreu
2020-02-04 17:26                       ` Russell King - ARM Linux admin
2020-02-04 17:43                         ` Andrew Lunn
2020-02-04 19:32                           ` Russell King - ARM Linux admin
2020-02-05 12:27                             ` Russell King - ARM Linux admin
2020-02-07 11:21                               ` Russell King - ARM Linux admin
2020-01-27 16:32                 ` Andrew Lunn
2020-01-27 17:56                   ` Russell King - ARM Linux admin
2020-01-28 18:08               ` Russell King - ARM Linux admin [this message]
2020-01-28 18:25                 ` Andrew Lunn
2020-01-27 11:09 ` [RFC net-next 7/8] net: phy: Add Synopsys DesignWare XPCS MDIO module Jose Abreu
2020-01-27 11:09 ` [RFC net-next 8/8] net: stmmac: Integrate it with DesignWare XPCS Jose Abreu

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=20200128180802.GD25745@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=Joao.Pinto@synopsys.com \
    --cc=Jose.Abreu@synopsys.com \
    --cc=alexandre.torgue@st.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=peppe.cavallaro@st.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).