From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Yanteng Si <siyanteng@loongson.cn>
Cc: Serge Semin <fancer.lancer@gmail.com>,
andrew@lunn.ch, hkallweit1@gmail.com, peppe.cavallaro@st.com,
alexandre.torgue@foss.st.com, joabreu@synopsys.com,
Jose.Abreu@synopsys.com, chenhuacai@loongson.cn,
guyinggang@loongson.cn, netdev@vger.kernel.org,
chris.chenfeiyang@gmail.com
Subject: Re: [PATCH net-next v8 09/11] net: stmmac: dwmac-loongson: Fix half duplex
Date: Wed, 13 Mar 2024 10:21:20 +0000 [thread overview]
Message-ID: <ZfF+IAWbe1rwx3Xs@shell.armlinux.org.uk> (raw)
In-Reply-To: <88c8f5a4-16c1-498b-9a2a-9ba04a9b0215@loongson.cn>
On Wed, Mar 13, 2024 at 05:24:52PM +0800, Yanteng Si wrote:
> 在 2024/2/6 06:06, Serge Semin 写道:
> > On Tue, Feb 06, 2024 at 12:58:17AM +0300, Serge Semin wrote:
> > > On Tue, Jan 30, 2024 at 04:49:14PM +0800, Yanteng Si wrote:
> > > > Current GNET does not support half duplex mode.
> > > >
> > > > Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
> > > > Signed-off-by: Feiyang Chen <chenfeiyang@loongson.cn>
> > > > Signed-off-by: Yinggang Gu <guyinggang@loongson.cn>
> > > > ---
> > > > drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c | 11 ++++++++++-
> > > > drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 ++-
> > > > include/linux/stmmac.h | 1 +
> > > > 3 files changed, 13 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
> > > > index 264c4c198d5a..1753a3c46b77 100644
> > > > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
> > > > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
> > > > @@ -432,8 +432,17 @@ static int loongson_gnet_config(struct pci_dev *pdev,
> > > > struct stmmac_resources *res,
> > > > struct device_node *np)
> > > > {
> > > > - if (pdev->revision == 0x00 || pdev->revision == 0x01)
> > > > + switch (pdev->revision) {
> > > > + case 0x00:
> > > > + plat->flags |= STMMAC_FLAG_DISABLE_FORCE_1000 |
> > > > + STMMAC_FLAG_DISABLE_HALF_DUPLEX;
> > > > + break;
> > > > + case 0x01:
> > > > plat->flags |= STMMAC_FLAG_DISABLE_FORCE_1000;
> > > > + break;
> > > > + default:
> > > > + break;
> > > > + }
> > > Move this change into the patch
> > > [PATCH net-next v8 06/11] net: stmmac: dwmac-loongson: Add GNET support
> > >
> > > > return 0;
> > > > }
> > > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > > > index 5617b40abbe4..3aa862269eb0 100644
> > > > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > > > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > > > @@ -1201,7 +1201,8 @@ static int stmmac_init_phy(struct net_device *dev)
> > > > static void stmmac_set_half_duplex(struct stmmac_priv *priv)
> > > > {
> > > > /* Half-Duplex can only work with single tx queue */
> > > > - if (priv->plat->tx_queues_to_use > 1)
> > > > + if (priv->plat->tx_queues_to_use > 1 ||
> > > > + (STMMAC_FLAG_DISABLE_HALF_DUPLEX & priv->plat->flags))
> > > > priv->phylink_config.mac_capabilities &=
> > > > ~(MAC_10HD | MAC_100HD | MAC_1000HD);
> > > > else
> > > > diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
> > > > index 2810361e4048..197f6f914104 100644
> > > > --- a/include/linux/stmmac.h
> > > > +++ b/include/linux/stmmac.h
> > > > @@ -222,6 +222,7 @@ struct dwmac4_addrs {
> > > > #define STMMAC_FLAG_EN_TX_LPI_CLOCKGATING BIT(11)
> > > > #define STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY BIT(12)
> > > > #define STMMAC_FLAG_DISABLE_FORCE_1000 BIT(13)
> > > > +#define STMMAC_FLAG_DISABLE_HALF_DUPLEX BIT(14)
> > > Place the patch with this change before
> > > [PATCH net-next v8 06/11] net: stmmac: dwmac-loongson: Add GNET support
> > > as a pre-requisite/preparation patch. Don't forget a thorough
> > > description of what is wrong with the GNET Half-Duplex mode.
> > BTW what about re-defining the stmmac_ops.phylink_get_caps() callback
> > instead of adding fixup flags in this patch and in the next one?
>
> ok.
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
> b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
> index ac1b48ff7199..b57e1325ce62 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
> @@ -238,6 +234,13 @@ static int loongson_gnet_get_hw_feature(void __iomem
> *ioaddr,
> return 0;
> }
>
> +static void loongson_phylink_get_caps(struct stmmac_priv *priv)
> +{
> + priv->phylink_config.mac_capabilities = (MAC_10FD |
> + MAC_100FD | MAC_1000FD) & ~(MAC_10HD | MAC_100HD | MAC_1000HD);
Why is this so complicated? It would be silly if the _full duplex_
definitions also defined the _half duplex_ bits. This should be just:
priv->phylink_config.mac_capabilities = MAC_10FD | MAC_100FD |
MAC_1000FD;
if that is all you support. Do you not support any pause modes (they
would need to be included as well here.)
As to this approach, I don't think it's a good model to override the
stmmac MAC operations. Instead, I would suggest that a better approach
would be for the platform to provide its capabilities to the stmmac
core code (maybe a new member in stmmac_priv) which, when set, is used
to reduce the capabilities provided to phylink via
priv->phylink_config.mac_capabilities.
Why? The driver has several components that are involved in the
overall capabilities, and the capabilities of the system is the
logical subset of all these capabilities. One component should not
be setting capabilities that a different component doesn't support.
--
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:[~2024-03-13 10:21 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-30 8:43 [PATCH net-next v8 00/11] stmmac: Add Loongson platform support Yanteng Si
2024-01-30 8:43 ` [PATCH net-next v8 01/11] net: stmmac: Add multi-channel support Yanteng Si
2024-02-02 12:30 ` Simon Horman
2024-02-04 8:43 ` Yanteng Si
2024-02-04 23:28 ` Serge Semin
2024-02-06 9:02 ` Yanteng Si
2024-02-06 9:48 ` Serge Semin
2024-02-19 11:02 ` Yanteng Si
2024-02-21 13:48 ` Serge Semin
[not found] ` <ee2ffb6a-fe34-47a1-9734-b0e6697a5f09@loongson.cn>
2024-03-13 9:10 ` Yanteng Si
2024-03-19 14:18 ` Serge Semin
2024-03-20 9:47 ` Yanteng Si
2024-03-20 9:55 ` Russell King (Oracle)
2024-03-20 10:51 ` Yanteng Si
2024-02-05 1:11 ` Serge Semin
2024-01-30 8:43 ` [PATCH net-next v8 02/11] net: stmmac: dwmac-loongson: Refactor code for loongson_dwmac_probe() Yanteng Si
2024-02-02 12:33 ` Simon Horman
2024-02-04 8:47 ` Yanteng Si
2024-02-05 14:43 ` Serge Semin
2024-04-05 11:13 ` Yanteng Si
2024-01-30 8:43 ` [PATCH net-next v8 03/11] net: stmmac: dwmac-loongson: Add full PCI support Yanteng Si
2024-02-05 16:49 ` Serge Semin
2024-02-21 10:08 ` Yanteng Si
2024-01-30 8:43 ` [PATCH net-next v8 04/11] net: stmmac: dwmac-loongson: Move irq config to loongson_gmac_config Yanteng Si
2024-02-05 17:01 ` Serge Semin
2024-03-13 8:14 ` Yanteng Si
2024-03-19 13:43 ` Serge Semin
2024-03-20 10:12 ` Yanteng Si
2024-01-30 8:48 ` [PATCH net-next v8 05/11] net: stmmac: dwmac-loongson: Add Loongson-specific register definitions Yanteng Si
2024-02-05 18:17 ` Serge Semin
2024-02-22 13:39 ` Yanteng Si
2024-02-22 13:59 ` Serge Semin
2024-02-23 8:16 ` Yanteng Si
2024-02-23 18:50 ` Serge Semin
2024-03-07 13:15 ` Yanteng Si
2024-03-07 13:44 ` Serge Semin
2024-03-08 4:05 ` Yanteng Si
2024-01-30 8:48 ` [PATCH net-next v8 06/11] net: stmmac: dwmac-loongson: Add GNET support Yanteng Si
2024-02-05 20:58 ` Serge Semin
[not found] ` <d0e56c9b-9549-4061-8e44-2504b6b96897@loongson.cn>
2024-03-14 13:12 ` Yanteng Si
2024-03-19 15:03 ` Serge Semin
2024-03-20 10:23 ` Yanteng Si
2024-03-20 12:18 ` Serge Semin
2024-03-21 9:13 ` Yanteng Si
2024-03-21 14:55 ` Andrew Lunn
2024-03-28 11:41 ` Yanteng Si
2024-03-22 19:09 ` Serge Semin
2024-01-30 8:48 ` [PATCH net-next v8 07/11] net: stmmac: dwmac-loongson: Add multi-channel supports for loongson Yanteng Si
2024-02-05 21:28 ` Serge Semin
[not found] ` <e1c7b5fa-f3f8-4aa3-af4d-ca72b54d9c8c@loongson.cn>
2024-03-14 13:13 ` Yanteng Si
2024-03-19 15:53 ` Serge Semin
2024-03-22 10:36 ` Yanteng Si
2024-03-22 18:47 ` Serge Semin
2024-04-03 8:09 ` Yanteng Si
2024-04-03 12:03 ` Serge Semin
2024-04-05 10:17 ` Yanteng Si
2024-04-03 8:23 ` Yanteng Si
2024-01-30 8:48 ` [PATCH net-next v8 08/11] net: stmmac: dwmac-loongson: Fix MAC speed for GNET Yanteng Si
2024-02-05 21:55 ` Serge Semin
[not found] ` <4873ea5a-1b23-4512-b039-0a9198b53adf@loongson.cn>
2024-03-14 13:18 ` Yanteng Si
2024-03-19 17:02 ` Serge Semin
2024-03-20 10:42 ` Yanteng Si
2024-03-21 9:29 ` Yanteng Si
2024-03-21 15:02 ` Andrew Lunn
2024-03-21 15:19 ` Russell King (Oracle)
2024-03-21 15:38 ` Andrew Lunn
2024-03-26 12:32 ` Yanteng Si
2024-03-26 12:02 ` Yanteng Si
2024-03-26 12:21 ` Andrew Lunn
2024-03-27 2:41 ` Yanteng Si
2024-03-27 12:47 ` Andrew Lunn
2024-03-28 10:08 ` Yanteng Si
2024-01-30 8:49 ` [PATCH net-next v8 09/11] net: stmmac: dwmac-loongson: Fix half duplex Yanteng Si
2024-02-05 21:58 ` Serge Semin
2024-02-05 22:06 ` Serge Semin
2024-03-13 9:24 ` Yanteng Si
2024-03-13 10:21 ` Russell King (Oracle) [this message]
2024-03-14 13:08 ` Yanteng Si
2024-03-20 10:10 ` Serge Semin
2024-03-20 10:37 ` Russell King (Oracle)
2024-03-20 12:50 ` Russell King (Oracle)
2024-03-20 14:22 ` Russell King (Oracle)
2024-03-22 18:07 ` Serge Semin
2024-03-22 19:56 ` Russell King (Oracle)
2024-04-03 12:37 ` Serge Semin
2024-04-05 10:48 ` Yanteng Si
2024-01-30 8:49 ` [PATCH net-next v8 10/11] net: stmmac: dwmac-loongson: Disable flow control for GMAC Yanteng Si
2024-02-05 22:13 ` Serge Semin
2024-03-13 9:25 ` Yanteng Si
2024-01-30 8:49 ` [PATCH net-next v8 11/11] net: stmmac: dwmac-loongson: Disable coe for some Loongson GNET Yanteng Si
2024-02-05 22:18 ` Serge Semin
2024-03-13 9:52 ` Yanteng Si
2024-03-13 10:19 ` Yanteng Si
2024-03-20 11:24 ` Serge Semin
2024-01-30 9:57 ` [PATCH net-next v8 00/11] stmmac: Add Loongson platform support Serge Semin
2024-01-31 2:10 ` Jakub Kicinski
2024-01-31 9:20 ` Yanteng Si
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=ZfF+IAWbe1rwx3Xs@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=Jose.Abreu@synopsys.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew@lunn.ch \
--cc=chenhuacai@loongson.cn \
--cc=chris.chenfeiyang@gmail.com \
--cc=fancer.lancer@gmail.com \
--cc=guyinggang@loongson.cn \
--cc=hkallweit1@gmail.com \
--cc=joabreu@synopsys.com \
--cc=netdev@vger.kernel.org \
--cc=peppe.cavallaro@st.com \
--cc=siyanteng@loongson.cn \
/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).