From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Jiawen Wu <jiawenwu@trustnetic.com>
Cc: netdev@vger.kernel.org, andrew@lunn.ch,
jarkko.nikula@linux.intel.com, olteanv@gmail.com,
andriy.shevchenko@linux.intel.com, hkallweit1@gmail.com,
linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org,
mengyuanlou@net-swift.com, Jose Abreu <Jose.Abreu@synopsys.com>
Subject: Re: [PATCH net-next v4 6/8] net: pcs: Add 10GBASE-R mode for Synopsys Designware XPCS
Date: Tue, 2 May 2023 09:01:30 +0100 [thread overview]
Message-ID: <ZFDDWrkiGzho1fA9@shell.armlinux.org.uk> (raw)
In-Reply-To: <20230422045621.360918-7-jiawenwu@trustnetic.com>
On Sat, Apr 22, 2023 at 12:56:19PM +0800, Jiawen Wu wrote:
> Add basic support for XPCS using 10GBASE-R interface. This mode will
> be extended to use interrupt, so set pcs.poll false. And avoid soft
> reset so that the device using this mode is in the default configuration.
>
> Cc: Jose Abreu <Jose.Abreu@synopsys.com>
>
> Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
> ---
> drivers/net/pcs/pcs-xpcs.c | 56 ++++++++++++++++++++++++++++++++++++
> include/linux/pcs/pcs-xpcs.h | 1 +
> 2 files changed, 57 insertions(+)
>
> diff --git a/drivers/net/pcs/pcs-xpcs.c b/drivers/net/pcs/pcs-xpcs.c
> index 539cd43eae8d..9ddaceda1fe9 100644
> --- a/drivers/net/pcs/pcs-xpcs.c
> +++ b/drivers/net/pcs/pcs-xpcs.c
> @@ -64,6 +64,16 @@ static const int xpcs_xlgmii_features[] = {
> __ETHTOOL_LINK_MODE_MASK_NBITS,
> };
>
> +static const int xpcs_10gbaser_features[] = {
> + ETHTOOL_LINK_MODE_Pause_BIT,
> + ETHTOOL_LINK_MODE_Asym_Pause_BIT,
> + ETHTOOL_LINK_MODE_10000baseSR_Full_BIT,
> + ETHTOOL_LINK_MODE_10000baseLR_Full_BIT,
> + ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT,
> + ETHTOOL_LINK_MODE_10000baseER_Full_BIT,
> + __ETHTOOL_LINK_MODE_MASK_NBITS,
> +};
> +
> static const int xpcs_sgmii_features[] = {
> ETHTOOL_LINK_MODE_Pause_BIT,
> ETHTOOL_LINK_MODE_Asym_Pause_BIT,
> @@ -106,6 +116,10 @@ static const phy_interface_t xpcs_xlgmii_interfaces[] = {
> PHY_INTERFACE_MODE_XLGMII,
> };
>
> +static const phy_interface_t xpcs_10gbaser_interfaces[] = {
> + PHY_INTERFACE_MODE_10GBASER,
> +};
> +
> static const phy_interface_t xpcs_sgmii_interfaces[] = {
> PHY_INTERFACE_MODE_SGMII,
> };
> @@ -123,6 +137,7 @@ enum {
> DW_XPCS_USXGMII,
> DW_XPCS_10GKR,
> DW_XPCS_XLGMII,
> + DW_XPCS_10GBASER,
> DW_XPCS_SGMII,
> DW_XPCS_1000BASEX,
> DW_XPCS_2500BASEX,
> @@ -246,6 +261,7 @@ static int xpcs_soft_reset(struct dw_xpcs *xpcs,
>
> switch (compat->an_mode) {
> case DW_AN_C73:
> + case DW_10GBASER:
> dev = MDIO_MMD_PCS;
> break;
> case DW_AN_C37_SGMII:
> @@ -872,6 +888,8 @@ int xpcs_do_config(struct dw_xpcs *xpcs, phy_interface_t interface,
> return -ENODEV;
>
> switch (compat->an_mode) {
> + case DW_10GBASER:
> + break;
> case DW_AN_C73:
> if (phylink_autoneg_inband(mode)) {
> ret = xpcs_config_aneg_c73(xpcs, compat);
> @@ -919,6 +937,27 @@ static int xpcs_config(struct phylink_pcs *pcs, unsigned int mode,
> return xpcs_do_config(xpcs, interface, mode, advertising);
> }
>
> +static int xpcs_get_state_10gbaser(struct dw_xpcs *xpcs,
> + struct phylink_link_state *state)
> +{
> + int ret;
> +
> + state->link = false;
> +
> + ret = xpcs_read(xpcs, MDIO_MMD_PCS, MDIO_STAT1);
> + if (ret < 0)
> + return ret;
> +
> + if (ret & MDIO_STAT1_LSTATUS) {
> + state->link = true;
> + state->pause = MLO_PAUSE_TX | MLO_PAUSE_RX;
> + state->duplex = DUPLEX_FULL;
> + state->speed = SPEED_10000;
> + }
> +
> + return 0;
This looks to me to be an almost duplicate of
phylink_mii_c45_pcs_get_state().
> +}
> +
> static int xpcs_get_state_c73(struct dw_xpcs *xpcs,
> struct phylink_link_state *state,
> const struct xpcs_compat *compat)
> @@ -1033,6 +1072,14 @@ static void xpcs_get_state(struct phylink_pcs *pcs,
> return;
>
> switch (compat->an_mode) {
> + case DW_10GBASER:
> + ret = xpcs_get_state_10gbaser(xpcs, state);
This could then be simply:
phylink_mii_c45_pcs_get_state(xpcs->mdiodev, state);
> + if (ret) {
> + pr_err("xpcs_get_state_10gbaser returned %pe\n",
> + ERR_PTR(ret));
Please avoid printing errors like this if we can't read the state. If we
become unable to read the state, then this message will flood the log at
the polling rate (if polling is enabled.)
I know the other cases here do, but they shouldn't.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2023-05-02 8:01 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-22 4:56 [PATCH net-next v4 0/8] TXGBE PHYLINK support Jiawen Wu
2023-04-22 4:56 ` [PATCH net-next v4 1/8] net: txgbe: Add software nodes to support phylink Jiawen Wu
2023-04-23 19:47 ` Simon Horman
2023-04-22 4:56 ` [PATCH net-next v4 2/8] i2c: designware: Add driver support for Wangxun 10Gb NIC Jiawen Wu
2023-04-22 16:25 ` Andy Shevchenko
2023-04-23 2:31 ` Jiawen Wu
2023-04-24 13:28 ` 'Andy Shevchenko'
2023-04-24 2:39 ` Jiawen Wu
2023-04-25 14:08 ` Andi Shyti
2023-05-01 18:28 ` Andy Shevchenko
2023-04-22 4:56 ` [PATCH net-next v4 3/8] net: txgbe: Register I2C platform device Jiawen Wu
2023-04-25 15:06 ` Andi Shyti
2023-04-25 15:16 ` Andi Shyti
2023-04-22 4:56 ` [PATCH net-next v4 4/8] net: txgbe: Add SFP module identify Jiawen Wu
2023-04-22 4:56 ` [PATCH net-next v4 5/8] net: txgbe: Support GPIO to SFP socket Jiawen Wu
2023-04-22 4:56 ` [PATCH net-next v4 6/8] net: pcs: Add 10GBASE-R mode for Synopsys Designware XPCS Jiawen Wu
2023-05-02 8:01 ` Russell King (Oracle) [this message]
2023-04-22 4:56 ` [PATCH net-next v4 7/8] net: txgbe: Implement phylink pcs Jiawen Wu
2023-04-22 4:56 ` [PATCH net-next v4 8/8] net: txgbe: Support phylink MAC layer Jiawen Wu
2023-04-23 19:57 ` Simon Horman
2023-04-24 1:49 ` Jiawen Wu
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=ZFDDWrkiGzho1fA9@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=Jose.Abreu@synopsys.com \
--cc=andrew@lunn.ch \
--cc=andriy.shevchenko@linux.intel.com \
--cc=hkallweit1@gmail.com \
--cc=jarkko.nikula@linux.intel.com \
--cc=jiawenwu@trustnetic.com \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=mengyuanlou@net-swift.com \
--cc=netdev@vger.kernel.org \
--cc=olteanv@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;
as well as URLs for NNTP newsgroup(s).