From: Daniel Golle <daniel@makrotopia.org>
To: arinc.unal@arinc9.com
Cc: DENG Qingfang <dqfext@gmail.com>,
Sean Wang <sean.wang@mediatek.com>, Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Russell King <linux@armlinux.org.uk>,
Bartel Eerdekens <bartel.eerdekens@constell8.be>,
mithat.guner@xeront.com, erkin.bozoglu@xeront.com,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: Re: [PATCH net-next v2 07/15] net: dsa: mt7530: move MT753X_MTRAP operations for MT7530
Date: Sat, 27 Apr 2024 03:24:18 +0100 [thread overview]
Message-ID: <Zixh0qsQat3ypqFp@makrotopia.org> (raw)
In-Reply-To: <20240422-for-netnext-mt7530-improvements-4-v2-7-a75157ba76ad@arinc9.com>
Hi Arınç,
On Mon, Apr 22, 2024 at 10:15:14AM +0300, Arınç ÜNAL via B4 Relay wrote:
> From: Arınç ÜNAL <arinc.unal@arinc9.com>
>
> On MT7530, the media-independent interfaces of port 5 and 6 are controlled
> by the MT7530_P5_DIS and MT7530_P6_DIS bits of the hardware trap. Deal with
> these bits only when the relevant port is being enabled or disabled. This
> ensures that these ports will be disabled when they are not in use.
>
> Do not set MT7530_CHG_TRAP on mt7530_setup_port5() as that's already being
> done on mt7530_setup().
Multiple users reported ([1], [2]) that after I've imported the series
to OpenWrt they noticed that WAN connection on MT7621 boards using
PHY-muxing to hook up either port 0 or port 4 to GMAC1 no longer works.
The link still seems to come up, but no data flows. I went ahead and
confirmed the bug, then started bisecting the patches of this series,
and ended up identifying this very patch being the culprit.
I can't exclude that what ever the issue may be is caused by other
downstream patches we have, but can confirm that removing this patch of
your series [3] in OpenWrt fixes the issue. Please take a look and as
the cover letter states you have tested this on some MT7621 board,
please make sure traffic actually flows on the PHY-muxed port on that
board after this patch is applied, and if not, please figure out why and
repost a fixed version of this patch.
Cheers
Daniel
[1]: https://github.com/openwrt/openwrt/issues/15273
[2]: https://github.com/openwrt/openwrt/issues/15279
[3]: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=a8dde7e5bd6d289db6485cf57d3512ea62eaa827
>
> Instead of globally setting MT7530_P5_MAC_SEL, clear it, then set it only
> on the appropriate case.
>
> If PHY muxing is detected, clear MT7530_P5_DIS before calling
> mt7530_setup_port5().
>
> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
> ---
> drivers/net/dsa/mt7530.c | 38 +++++++++++++++++++++++++++-----------
> 1 file changed, 27 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
> index 606516206fb9..83436723cb16 100644
> --- a/drivers/net/dsa/mt7530.c
> +++ b/drivers/net/dsa/mt7530.c
> @@ -880,8 +880,7 @@ static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface)
>
> val = mt7530_read(priv, MT753X_MTRAP);
>
> - val |= MT7530_CHG_TRAP | MT7530_P5_MAC_SEL | MT7530_P5_DIS;
> - val &= ~MT7530_P5_RGMII_MODE & ~MT7530_P5_PHY0_SEL;
> + val &= ~MT7530_P5_PHY0_SEL & ~MT7530_P5_MAC_SEL & ~MT7530_P5_RGMII_MODE;
>
> switch (priv->p5_mode) {
> /* MUX_PHY_P0: P0 -> P5 -> SoC MAC */
> @@ -891,15 +890,13 @@ static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface)
>
> /* MUX_PHY_P4: P4 -> P5 -> SoC MAC */
> case MUX_PHY_P4:
> - val &= ~MT7530_P5_MAC_SEL & ~MT7530_P5_DIS;
> -
> /* Setup the MAC by default for the cpu port */
> mt7530_write(priv, MT753X_PMCR_P(5), 0x56300);
> break;
>
> /* GMAC5: P5 -> SoC MAC or external PHY */
> default:
> - val &= ~MT7530_P5_DIS;
> + val |= MT7530_P5_MAC_SEL;
> break;
> }
>
> @@ -1193,6 +1190,14 @@ mt7530_port_enable(struct dsa_switch *ds, int port,
>
> mutex_unlock(&priv->reg_mutex);
>
> + if (priv->id != ID_MT7530 && priv->id != ID_MT7621)
> + return 0;
> +
> + if (port == 5)
> + mt7530_clear(priv, MT753X_MTRAP, MT7530_P5_DIS);
> + else if (port == 6)
> + mt7530_clear(priv, MT753X_MTRAP, MT7530_P6_DIS);
> +
> return 0;
> }
>
> @@ -1211,6 +1216,14 @@ mt7530_port_disable(struct dsa_switch *ds, int port)
> PCR_MATRIX_CLR);
>
> mutex_unlock(&priv->reg_mutex);
> +
> + if (priv->id != ID_MT7530 && priv->id != ID_MT7621)
> + return;
> +
> + if (port == 5)
> + mt7530_set(priv, MT753X_MTRAP, MT7530_P5_DIS);
> + else if (port == 6)
> + mt7530_set(priv, MT753X_MTRAP, MT7530_P6_DIS);
> }
>
> static int
> @@ -2401,11 +2414,11 @@ mt7530_setup(struct dsa_switch *ds)
> mt7530_rmw(priv, MT7530_TRGMII_RD(i),
> RD_TAP_MASK, RD_TAP(16));
>
> - /* Enable port 6 */
> - val = mt7530_read(priv, MT753X_MTRAP);
> - val &= ~MT7530_P6_DIS & ~MT7530_PHY_INDIRECT_ACCESS;
> - val |= MT7530_CHG_TRAP;
> - mt7530_write(priv, MT753X_MTRAP, val);
> + /* Allow modifying the trap and directly access PHY registers via the
> + * MDIO bus the switch is on.
> + */
> + mt7530_rmw(priv, MT753X_MTRAP, MT7530_CHG_TRAP |
> + MT7530_PHY_INDIRECT_ACCESS, MT7530_CHG_TRAP);
>
> if ((val & MT7530_XTAL_MASK) == MT7530_XTAL_40MHZ)
> mt7530_pll_setup(priv);
> @@ -2488,8 +2501,11 @@ mt7530_setup(struct dsa_switch *ds)
> break;
> }
>
> - if (priv->p5_mode == MUX_PHY_P0 || priv->p5_mode == MUX_PHY_P4)
> + if (priv->p5_mode == MUX_PHY_P0 ||
> + priv->p5_mode == MUX_PHY_P4) {
> + mt7530_clear(priv, MT753X_MTRAP, MT7530_P5_DIS);
> mt7530_setup_port5(ds, interface);
> + }
> }
>
> #ifdef CONFIG_GPIOLIB
>
> --
> 2.40.1
>
>
next prev parent reply other threads:[~2024-04-27 2:24 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-22 7:15 [PATCH net-next v2 00/15] MT7530 DSA Subdriver Improvements Act IV Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 01/15] net: dsa: mt7530: disable EEE abilities on failure on MT7531 and MT7988 Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 02/15] net: dsa: mt7530: refactor MT7530_PMCR_P() Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 03/15] net: dsa: mt7530: rename p5_intf_sel and use only for MT7530 switch Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 04/15] net: dsa: mt7530: rename mt753x_bpdu_port_fw enum to mt753x_to_cpu_fw Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 05/15] net: dsa: mt7530: refactor MT7530_MFC and MT7531_CFC, add MT7531_QRY_FFP Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 06/15] net: dsa: mt7530: refactor MT7530_HWTRAP and MT7530_MHWTRAP Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 07/15] net: dsa: mt7530: move MT753X_MTRAP operations for MT7530 Arınç ÜNAL via B4 Relay
2024-04-27 2:24 ` Daniel Golle [this message]
2024-04-27 11:40 ` Arınç ÜNAL
2024-04-22 7:15 ` [PATCH net-next v2 08/15] net: dsa: mt7530: return mt7530_setup_mdio & mt7531_setup_common on error Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 09/15] net: dsa: mt7530: define MAC speed capabilities per switch model Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 10/15] net: dsa: mt7530: get rid of function sanity check Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 11/15] net: dsa: mt7530: refactor MT7530_PMEEECR_P() Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 12/15] net: dsa: mt7530: get rid of mac_port_validate member of mt753x_info Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 13/15] net: dsa: mt7530: use priv->ds->num_ports instead of MT7530_NUM_PORTS Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 14/15] net: dsa: mt7530: do not pass port variable to mt7531_rgmii_setup() Arınç ÜNAL via B4 Relay
2024-04-22 7:15 ` [PATCH net-next v2 15/15] net: dsa: mt7530: explain exposing MDIO bus of MT7531AE better Arınç ÜNAL via B4 Relay
2024-04-24 11:10 ` [PATCH net-next v2 00/15] MT7530 DSA Subdriver Improvements Act IV patchwork-bot+netdevbpf
2024-04-25 12:49 ` Daniel Golle
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=Zixh0qsQat3ypqFp@makrotopia.org \
--to=daniel@makrotopia.org \
--cc=andrew@lunn.ch \
--cc=angelogioacchino.delregno@collabora.com \
--cc=arinc.unal@arinc9.com \
--cc=bartel.eerdekens@constell8.be \
--cc=davem@davemloft.net \
--cc=dqfext@gmail.com \
--cc=edumazet@google.com \
--cc=erkin.bozoglu@xeront.com \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=matthias.bgg@gmail.com \
--cc=mithat.guner@xeront.com \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=sean.wang@mediatek.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).