[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <aWfWDsCoBc3YRKKo@shell.armlinux.org.uk>
Date: Wed, 14 Jan 2026 17:44:46 +0000
From: "Russell King (Oracle)" <linux@...linux.org.uk>
To: Andrew Lunn <andrew@...n.ch>, Heiner Kallweit <hkallweit1@...il.com>
Cc: Alexandre Torgue <alexandre.torgue@...s.st.com>,
Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Konrad Dybcio <konrad.dybcio@....qualcomm.com>,
linux-arm-kernel@...ts.infradead.org, linux-arm-msm@...r.kernel.org,
linux-phy@...ts.infradead.org,
linux-stm32@...md-mailman.stormreply.com,
Maxime Coquelin <mcoquelin.stm32@...il.com>,
Mohd Ayaan Anwar <mohd.anwar@....qualcomm.com>,
Neil Armstrong <neil.armstrong@...aro.org>, netdev@...r.kernel.org,
Paolo Abeni <pabeni@...hat.com>, Vinod Koul <vkoul@...nel.org>
Subject: [PATCH RFC net-next 00/14] net: stmmac: SerDes, PCS, BASE-X, and
inband goodies
Mentioned previously, I've been trying to sort out the PCS support in
stmmac, and this series represents the current state of play.
Previous posted patches centred around merely getting autonegotiation
to be configured correctly, to a point where the manual configuration
can be removed from the qcom-ethqos driver. The qcom-ethqos driver
uses both SGMII and 2500BASE-X, manually configuring the dwmac's
integrated PCS appropriately.
This *untested* series attempts to take this further. The patches:
- clean up qcom-ethqos only-written mac_base member.
- convert qcom-ethqos to use the set_clk_tx_rate() method for setting
the link clock rate.
- add support for phy_set_mode_ext() to the qcom "SGMII" ethernet
SerDes driver (which is really only what it needs. Note that
phy_set_mode_ext() is an expected call to be made, where as
phy_set_speed() is optional and not. See PHY documentation.)
- add platform-glue independent SerDes support to the stmmac core
driver. Currently, only qcom-ethqos will make use of this, and
I suspect as we haven't had this, it's going to be difficult to
convert other platform glue to use this - but had this existed
earlier, we could've pushed people to use PHY to abstract some
of the platform glue differences. Adding it now makes it available
for future platform glue.
- convert qcom-ethqos to use this core SerDes support.
- arrange for stmmac_pcs.c to supply the phy_intf_sel field value
if the integrated PCS will be used. (PHY_INTF_SEL_SGMII requires
the integrated PCS rather than an external PCS.)
- add BASE-X support to the integrated PCS driver, and use it for
BASE-X modes. This fully supports in-band mode, including reading
the link partner advertisement.
- add in-band support for SGMII, reading the state from the RGSMII
status field.
As we leave qcom-ethqos' manual configuration of the PCS in place at
the moment, the last patch adds reporting of any changes in its
configuration that the qcom-ethqos driver does beyond what phylink
requested, thus providing a path to debug and eventually remove
qcom-ethqos' manual configuration.
One patch is not included in this set - which adds a phy_intf_sel
value for external PCS (using PHY_INTF_SEL_GMII_MII). I believe all
external PCS use this mode when connected to a MAC capable of up to
2.5G. However, no platform glue that provides the mac_select_pcs()
method also provide the set_phy_intf_sel() method, so we can safely
ignore this for now.
I would like to get this into net-next before the next merge window,
so testing would be appreciated. If there are issues with these patches
applied, please check whether the issue exists without these patches
and only report regressions caused by this patch set. For example,
I'm aware that qcom-ethqos has issues with 10Mbps mode due to an AQR
PHY being insanely provisioned to use SGMII in 1000M mode but with
rate matching with 10M media. This is not an issue that is relevant
to this patch series, but a problem with the PHY provisioning.
drivers/net/ethernet/stmicro/stmmac/Makefile | 2 +-
drivers/net/ethernet/stmicro/stmmac/common.h | 1 -
.../ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 74 ++-----
.../net/ethernet/stmicro/stmmac/dwmac1000_core.c | 9 +-
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 8 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 69 +++++--
drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.c | 218 +++++++++++++++++++--
drivers/net/ethernet/stmicro/stmmac/stmmac_pcs.h | 53 ++---
.../net/ethernet/stmicro/stmmac/stmmac_serdes.c | 111 +++++++++++
.../net/ethernet/stmicro/stmmac/stmmac_serdes.h | 16 ++
drivers/phy/qualcomm/phy-qcom-sgmii-eth.c | 42 ++++
include/linux/stmmac.h | 2 +
12 files changed, 480 insertions(+), 125 deletions(-)
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
Powered by blists - more mailing lists