Netdev List
 help / color / mirror / Atom feed
From: Vladimir Oltean <olteanv@gmail.com>
To: "Paweł Dembicki" <paweldembicki@gmail.com>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
	netdev@vger.kernel.org, linus.walleij@linaro.org,
	Andrew Lunn <andrew@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Claudiu Manoil <claudiu.manoil@nxp.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	UNGLinuxDriver@microchip.com,
	Russell King <linux@armlinux.org.uk>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v4 02/15] net: dsa: vsc73xx: convert to PHYLINK
Date: Thu, 15 Feb 2024 02:04:27 +0200	[thread overview]
Message-ID: <20240215000427.jdivtxc5jxolmi5q@skbuf> (raw)
In-Reply-To: <CAJN1Kkz9NPMuoKsm4XdmGS=Y9=SkYM-_EZhqxBojfGZycegtjw@mail.gmail.com>

On Wed, Feb 14, 2024 at 01:56:10PM +0100, Paweł Dembicki wrote:
> śr., 14 lut 2024 o 00:19 Florian Fainelli <f.fainelli@gmail.com> napisał(a):
> >
> > On 2/13/24 14:03, Pawel Dembicki wrote:
> > > This patch replaces the adjust_link api with the phylink apis that provide
> > > equivalent functionality.
> > >
> > > The remaining functionality from the adjust_link is now covered in the
> > > phylink_mac_link_* and phylink_mac_config.
> > >
> > > Removes:
> > > .adjust_link
> > > Adds:
> > > .phylink_mac_config
> > > .phylink_mac_link_up
> > > .phylink_mac_link_down
> >
> > The implementation of phylink_mac_link_down() strictly mimics what had
> > been done by adjust_link() in the phydev->link == 0 case, but it really
> > makes me wonder whether some bits do not logically belong to
> > phylink_mac_link_up(), like "Accept packets again" for instance.
> >
> > Are we certain there was not an assumption before that we would get
> > adjust_link() called first with phydev->link = 0, and then phydev->link
> > =1 and that this specific sequence would program things just the way we
> > want?
> 
> Yes, it was the simplest conversion possible, without any improvements.
> 
> Some part is implementation of datasheet (description of ARBEMPTY register):
> 
>         /* Discard packets */
>         vsc73xx_update_bits(vsc, VSC73XX_BLOCK_ARBITER, 0,
>                             VSC73XX_ARBDISC, BIT(port), BIT(port));
> 
>         /* Wait until queue is empty */
>         ret = read_poll_timeout(vsc73xx_read, err, err < 0 || (val & BIT(port)),
>                                 1000, 10000, false, vsc, VSC73XX_BLOCK_ARBITER,
>                                 0, VSC73XX_ARBEMPTY, &val);
>         if (ret)
>                 dev_err(vsc->dev,
>                         "timeout waiting for block arbiter\n");
>         else if (err < 0)
>                 dev_err(vsc->dev, "error reading arbiter\n");
> 
>         /* Put this port into reset */
>         vsc73xx_write(vsc, VSC73XX_BLOCK_MAC, port, VSC73XX_MAC_CFG,
>                       VSC73XX_MAC_CFG_RESET);
> 
> 
> I agree that VSC73XX_ARBDISC should be moved to phylink_mac_link_up.

FWIW, ocelot_phylink_mac_link_down() also calls ocelot_port_flush()
which is more or less the same procedure for a different piece of hw.

By re-reading the commit message of eb4733d7cffc ("net: dsa: felix:
implement port flushing on .phylink_mac_link_down"), I can find a good
reason to flush the port on link down and not on link up. With flow
control enabled, packets would remain in the queue system until there's
link again if not flushed there, otherwise.

Paweł, maybe it is simply the case that you should move the procedure
from the datasheet into a more clearly named sub-function?

> Other things could be optimised and it needs more care. (eg. This
> implementation doesn't disable phy when the interface goes down.) I
> plan to tweak it after the driver becomes usable. Please let me know
> if it should be fixed in this patch.

What do you mean by disabling the PHY when the interface goes down,
exactly? Down as in administratively down, aka "ip link set swp0 down",
not when the link drops?

That's a thing for the PHY driver to handle, by implementing .suspend()
and .resume(), I guess?

What driver do the internal PHYs use?

  reply	other threads:[~2024-02-15  0:04 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-13 22:03 [PATCH net-next v4 00/15] net: dsa: vsc73xx: Make vsc73xx usable Pawel Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 01/15] net: dsa: vsc73xx: use read_poll_timeout instead delay loop Pawel Dembicki
2024-02-13 23:07   ` Linus Walleij
2024-02-13 23:16   ` Florian Fainelli
2024-02-14 23:46   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 02/15] net: dsa: vsc73xx: convert to PHYLINK Pawel Dembicki
2024-02-13 23:19   ` Florian Fainelli
2024-02-14 12:56     ` Paweł Dembicki
2024-02-15  0:04       ` Vladimir Oltean [this message]
2024-02-20 12:28         ` Paweł Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 03/15] net: dsa: vsc73xx: use macros for rgmii recognition Pawel Dembicki
2024-02-13 23:07   ` Linus Walleij
2024-02-13 23:12   ` Florian Fainelli
2024-02-15  0:08   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 04/15] net: dsa: vsc73xx: Add define for max num of ports Pawel Dembicki
2024-02-13 23:08   ` Linus Walleij
2024-02-13 23:20   ` Florian Fainelli
2024-02-15  0:09   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 05/15] net: dsa: vsc73xx: add structure descriptions Pawel Dembicki
2024-02-13 23:08   ` Linus Walleij
2024-02-13 23:20   ` Florian Fainelli
2024-02-15  0:18   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 06/15] net: dsa: vsc73xx: add port_stp_state_set function Pawel Dembicki
2024-02-15 15:31   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 07/15] net: dsa: vsc73xx: Add vlan filtering Pawel Dembicki
2024-02-13 23:14   ` Linus Walleij
2024-02-15 17:22   ` Vladimir Oltean
2024-02-20 12:06     ` Paweł Dembicki
2024-02-16 13:21   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 08/15] net: dsa: tag_sja1105: absorb logic for not overwriting precise info into dsa_8021q_rcv() Pawel Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 09/15] net: dsa: tag_sja1105: absorb entire sja1105_vlan_rcv() " Pawel Dembicki
2024-02-14 17:04   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 10/15] net: dsa: tag_sja1105: prefer precise source port info on SJA1110 too Pawel Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 11/15] net: dsa: tag_sja1105: refactor skb->dev assignment to dsa_tag_8021q_find_user() Pawel Dembicki
2024-02-13 22:03 ` [PATCH net-next v4 12/15] net: dsa: vsc73xx: introduce tag 8021q for vsc73xx Pawel Dembicki
2024-02-15 17:39   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 13/15] net: dsa: vsc73xx: Implement vsc73xx 8021q tagger Pawel Dembicki
2024-02-15 18:09   ` Vladimir Oltean
2024-02-13 22:03 ` [PATCH net-next v4 14/15] net: dsa: Define max num of bridges in tag8021q implementation Pawel Dembicki
2024-02-13 23:15   ` Florian Fainelli
2024-02-13 22:03 ` [PATCH net-next v4 15/15] net: dsa: vsc73xx: Add bridge support Pawel Dembicki
2024-02-15 18:13   ` Vladimir Oltean

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=20240215000427.jdivtxc5jxolmi5q@skbuf \
    --to=olteanv@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=edumazet@google.com \
    --cc=f.fainelli@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=paweldembicki@gmail.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