From: "Ong, Boon Leong" <boon.leong.ong@intel.com> To: Russell King <linux@armlinux.org.uk> Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>, Jose Abreu <Jose.Abreu@synopsys.com>, Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>, Paolo Abeni <pabeni@redhat.com>, "David S . Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Vladimir Oltean <olteanv@gmail.com>, Vivien Didelot <vivien.didelot@gmail.com>, Florian Fainelli <f.fainelli@gmail.com>, "Maxime Coquelin" <mcoquelin.stm32@gmail.com>, Giuseppe Cavallaro <peppe.cavallaro@st.com>, "netdev@vger.kernel.org" <netdev@vger.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>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "Riva, Emilio" <emilio.riva@ericsson.com> Subject: RE: [PATCH net-next v2 3/6] net: pcs: xpcs: add CL37 1000BASE-X AN support Date: Mon, 13 Jun 2022 23:44:35 +0000 [thread overview] Message-ID: <DM4PR11MB609568BF8AE50B4506C6A3CDCAAB9@DM4PR11MB6095.namprd11.prod.outlook.com> (raw) In-Reply-To: <YqLyP6ezO3C9Fe4t@shell.armlinux.org.uk> >> +static int xpcs_get_state_c37_1000basex(struct dw_xpcs *xpcs, >> + struct phylink_link_state *state) >> +{ >> + int lpa, adv; >> + int ret; >> + >> + if (state->an_enabled) { >> + /* Reset link state */ >> + state->link = false; >> + >> + lpa = xpcs_read(xpcs, MDIO_MMD_VEND2, MII_LPA); >> + if (lpa < 0 || lpa & LPA_RFAULT) >> + return lpa; >> + >> + adv = xpcs_read(xpcs, MDIO_MMD_VEND2, MII_ADVERTISE); >> + if (adv < 0) >> + return adv; >> + >> + if (lpa & ADVERTISE_1000XFULL && >> + adv & ADVERTISE_1000XFULL) { >> + state->link = true; >> + state->speed = SPEED_1000; >> + state->duplex = DUPLEX_FULL; >> + } > >phylink_mii_c22_pcs_decode_state() is your friend here, will implement >this correctly, and will set lp_advertising correctly as well. Thank for the suggestion. I will change it accordingly to use phylink_mii_c22_pcs_decode_state() > >> + >> + /* Clear CL37 AN complete status */ >> + ret = xpcs_write(xpcs, MDIO_MMD_VEND2, >DW_VR_MII_AN_INTR_STS, 0); >> + if (ret < 0) >> + return ret; > >Why do you need to clear the interrupt status here? This function will >be called from a work queue sometime later after an interrupt has fired. >It will also be called at random times when userspace enquires what the >link parameters are, so clearing the interrupt here can result in lost >link changes. Thanks for pointing it. Ya, it is unnecessary. > >> +static void xpcs_link_up_1000basex(struct dw_xpcs *xpcs, int speed, >> + int duplex) >> +{ >> + int val, ret; >> + >> + switch (speed) { >> + case SPEED_1000: >> + val = BMCR_SPEED1000; >> + break; >> + case SPEED_100: >> + case SPEED_10: >> + default: >> + pr_err("%s: speed = %d\n", __func__, speed); >> + return; >> + } >> + >> + if (duplex == DUPLEX_FULL) >> + val |= BMCR_FULLDPLX; >> + else >> + pr_err("%s: half duplex not supported\n", __func__); >> + >> + ret = xpcs_write(xpcs, MDIO_MMD_VEND2, MDIO_CTRL1, val); >> + if (ret) >> + pr_err("%s: xpcs_write returned %pe\n", __func__, >ERR_PTR(ret)); > >Does this need to be done even when AN is enabled? Thanks. Ya, it does not need. Will fix. > >-- >RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ >FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
WARNING: multiple messages have this Message-ID (diff)
From: "Ong, Boon Leong" <boon.leong.ong@intel.com> To: Russell King <linux@armlinux.org.uk> Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>, Jose Abreu <Jose.Abreu@synopsys.com>, Andrew Lunn <andrew@lunn.ch>, Heiner Kallweit <hkallweit1@gmail.com>, Paolo Abeni <pabeni@redhat.com>, "David S . Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Vladimir Oltean <olteanv@gmail.com>, Vivien Didelot <vivien.didelot@gmail.com>, Florian Fainelli <f.fainelli@gmail.com>, "Maxime Coquelin" <mcoquelin.stm32@gmail.com>, Giuseppe Cavallaro <peppe.cavallaro@st.com>, "netdev@vger.kernel.org" <netdev@vger.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>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "Riva, Emilio" <emilio.riva@ericsson.com> Subject: RE: [PATCH net-next v2 3/6] net: pcs: xpcs: add CL37 1000BASE-X AN support Date: Mon, 13 Jun 2022 23:44:35 +0000 [thread overview] Message-ID: <DM4PR11MB609568BF8AE50B4506C6A3CDCAAB9@DM4PR11MB6095.namprd11.prod.outlook.com> (raw) In-Reply-To: <YqLyP6ezO3C9Fe4t@shell.armlinux.org.uk> >> +static int xpcs_get_state_c37_1000basex(struct dw_xpcs *xpcs, >> + struct phylink_link_state *state) >> +{ >> + int lpa, adv; >> + int ret; >> + >> + if (state->an_enabled) { >> + /* Reset link state */ >> + state->link = false; >> + >> + lpa = xpcs_read(xpcs, MDIO_MMD_VEND2, MII_LPA); >> + if (lpa < 0 || lpa & LPA_RFAULT) >> + return lpa; >> + >> + adv = xpcs_read(xpcs, MDIO_MMD_VEND2, MII_ADVERTISE); >> + if (adv < 0) >> + return adv; >> + >> + if (lpa & ADVERTISE_1000XFULL && >> + adv & ADVERTISE_1000XFULL) { >> + state->link = true; >> + state->speed = SPEED_1000; >> + state->duplex = DUPLEX_FULL; >> + } > >phylink_mii_c22_pcs_decode_state() is your friend here, will implement >this correctly, and will set lp_advertising correctly as well. Thank for the suggestion. I will change it accordingly to use phylink_mii_c22_pcs_decode_state() > >> + >> + /* Clear CL37 AN complete status */ >> + ret = xpcs_write(xpcs, MDIO_MMD_VEND2, >DW_VR_MII_AN_INTR_STS, 0); >> + if (ret < 0) >> + return ret; > >Why do you need to clear the interrupt status here? This function will >be called from a work queue sometime later after an interrupt has fired. >It will also be called at random times when userspace enquires what the >link parameters are, so clearing the interrupt here can result in lost >link changes. Thanks for pointing it. Ya, it is unnecessary. > >> +static void xpcs_link_up_1000basex(struct dw_xpcs *xpcs, int speed, >> + int duplex) >> +{ >> + int val, ret; >> + >> + switch (speed) { >> + case SPEED_1000: >> + val = BMCR_SPEED1000; >> + break; >> + case SPEED_100: >> + case SPEED_10: >> + default: >> + pr_err("%s: speed = %d\n", __func__, speed); >> + return; >> + } >> + >> + if (duplex == DUPLEX_FULL) >> + val |= BMCR_FULLDPLX; >> + else >> + pr_err("%s: half duplex not supported\n", __func__); >> + >> + ret = xpcs_write(xpcs, MDIO_MMD_VEND2, MDIO_CTRL1, val); >> + if (ret) >> + pr_err("%s: xpcs_write returned %pe\n", __func__, >ERR_PTR(ret)); > >Does this need to be done even when AN is enabled? Thanks. Ya, it does not need. Will fix. > >-- >RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ >FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last! _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-06-13 23:45 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-06-10 3:29 [PATCH net-next v2 0/7] pcs-xpcs, stmmac: add 1000BASE-X AN for network switch Ong Boon Leong 2022-06-10 3:29 ` Ong Boon Leong 2022-06-10 3:29 ` [PATCH net-next v2 1/6] net: dsa: sja1105: update xpcs_do_config additional input Ong Boon Leong 2022-06-10 3:29 ` Ong Boon Leong 2022-06-10 3:29 ` [PATCH net-next v2 2/6] stmmac: intel: prepare to support 1000BASE-X phy interface setting Ong Boon Leong 2022-06-10 3:29 ` Ong Boon Leong 2022-06-10 3:29 ` [PATCH net-next v2 3/6] net: pcs: xpcs: add CL37 1000BASE-X AN support Ong Boon Leong 2022-06-10 3:29 ` Ong Boon Leong 2022-06-10 7:26 ` Russell King (Oracle) 2022-06-10 7:26 ` Russell King (Oracle) 2022-06-13 23:44 ` Ong, Boon Leong [this message] 2022-06-13 23:44 ` Ong, Boon Leong 2022-06-10 3:29 ` [PATCH net-next v2 4/6] net: phylink: unset ovr_an_inband if fixed-link is selected Ong Boon Leong 2022-06-10 3:29 ` Ong Boon Leong 2022-06-10 7:31 ` Russell King (Oracle) 2022-06-10 7:31 ` Russell King (Oracle) 2022-06-14 1:54 ` Ong, Boon Leong 2022-06-14 1:54 ` Ong, Boon Leong 2022-06-10 3:29 ` [PATCH net-next v2 5/6] stmmac: intel: add phy-mode ACPI _DSD setting support Ong Boon Leong 2022-06-10 3:29 ` Ong Boon Leong 2022-06-10 3:29 ` [PATCH net-next v2 6/6] net: stmmac: make mdio register skips PHY scanning for fixed-link Ong Boon Leong 2022-06-10 3:29 ` Ong Boon Leong 2022-06-10 3:37 ` [PATCH net-next v2 0/7] pcs-xpcs, stmmac: add 1000BASE-X AN for network switch Ong, Boon Leong 2022-06-10 3:37 ` Ong, Boon Leong
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=DM4PR11MB609568BF8AE50B4506C6A3CDCAAB9@DM4PR11MB6095.namprd11.prod.outlook.com \ --to=boon.leong.ong@intel.com \ --cc=Jose.Abreu@synopsys.com \ --cc=alexandre.torgue@foss.st.com \ --cc=andrew@lunn.ch \ --cc=davem@davemloft.net \ --cc=edumazet@google.com \ --cc=emilio.riva@ericsson.com \ --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=linux@armlinux.org.uk \ --cc=mcoquelin.stm32@gmail.com \ --cc=netdev@vger.kernel.org \ --cc=olteanv@gmail.com \ --cc=pabeni@redhat.com \ --cc=peppe.cavallaro@st.com \ --cc=vivien.didelot@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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.