All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: "Goh, Wei Sheng" <wei.sheng.goh@intel.com>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	Jose Abreu <joabreu@synopsys.com>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Ong Boon Leong <boon.leong.ong@intel.com>,
	Voon Wei Feng <weifeng.voon@intel.com>,
	Tan Tee Min <tee.min.tan@intel.com>,
	Ahmad Tarmizi Noor Azura <noor.azura.ahmad.tarmizi@intel.com>,
	Looi Hong Aun <hong.aun.looi@intel.com>
Subject: Re: [PATCH net v2] net: stmmac: Set MAC's flow control register to reflect current settings
Date: Tue, 22 Nov 2022 18:54:00 +0000	[thread overview]
Message-ID: <Y30ayCTyVpjjyEzh@shell.armlinux.org.uk> (raw)
In-Reply-To: <Y30XoUHXscGSMHaL@shell.armlinux.org.uk>

On Tue, Nov 22, 2022 at 06:40:33PM +0000, Russell King (Oracle) wrote:
> On Tue, Nov 22, 2022 at 02:39:35PM +0800, Goh, Wei Sheng wrote:
> > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> > index c25bfecb4a2d..369db308b1dd 100644
> > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> > @@ -748,6 +748,9 @@ static void dwmac4_flow_ctrl(struct mac_device_info *hw, unsigned int duplex,
> >  	if (fc & FLOW_RX) {
> >  		pr_debug("\tReceive Flow-Control ON\n");
> >  		flow |= GMAC_RX_FLOW_CTRL_RFE;
> > +	} else {
> > +		pr_debug("\tReceive Flow-Control OFF\n");
> > +		flow &= ~GMAC_RX_FLOW_CTRL_RFE;
> >  	}
> >  	writel(flow, ioaddr + GMAC_RX_FLOW_CTRL);
> 
> This doesn't look correct to me. The function starts off:
> 
>         unsigned int flow = 0;
> 
> flow is not written to before the context above. So, the code you've
> added effectively does:
> 
> 	flow = 0 & ~GMAC_RX_FLOW_CTRL_RFE;
> 
> which is still zero. So, I don't think this hunk is meaningful apart
> from adding the pr_debug().

It also should be noted that it looks like:

dwxgmac2_core.c::dwxgmac2_flow_ctrl() is definitely buggy - it will
only set flow control, never clearing it.

dwmac100_core.c::dwmac100_flow_ctrl() looks potentially buggy - always
enabling flow control irrespective of anything.

The other two implmentations look sane to me.

-- 
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

WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: "Goh, Wei Sheng" <wei.sheng.goh@intel.com>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	Jose Abreu <joabreu@synopsys.com>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Ong Boon Leong <boon.leong.ong@intel.com>,
	Voon Wei Feng <weifeng.voon@intel.com>,
	Tan Tee Min <tee.min.tan@intel.com>,
	Ahmad Tarmizi Noor Azura <noor.azura.ahmad.tarmizi@intel.com>,
	Looi Hong Aun <hong.aun.looi@intel.com>
Subject: Re: [PATCH net v2] net: stmmac: Set MAC's flow control register to reflect current settings
Date: Tue, 22 Nov 2022 18:54:00 +0000	[thread overview]
Message-ID: <Y30ayCTyVpjjyEzh@shell.armlinux.org.uk> (raw)
In-Reply-To: <Y30XoUHXscGSMHaL@shell.armlinux.org.uk>

On Tue, Nov 22, 2022 at 06:40:33PM +0000, Russell King (Oracle) wrote:
> On Tue, Nov 22, 2022 at 02:39:35PM +0800, Goh, Wei Sheng wrote:
> > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> > index c25bfecb4a2d..369db308b1dd 100644
> > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
> > @@ -748,6 +748,9 @@ static void dwmac4_flow_ctrl(struct mac_device_info *hw, unsigned int duplex,
> >  	if (fc & FLOW_RX) {
> >  		pr_debug("\tReceive Flow-Control ON\n");
> >  		flow |= GMAC_RX_FLOW_CTRL_RFE;
> > +	} else {
> > +		pr_debug("\tReceive Flow-Control OFF\n");
> > +		flow &= ~GMAC_RX_FLOW_CTRL_RFE;
> >  	}
> >  	writel(flow, ioaddr + GMAC_RX_FLOW_CTRL);
> 
> This doesn't look correct to me. The function starts off:
> 
>         unsigned int flow = 0;
> 
> flow is not written to before the context above. So, the code you've
> added effectively does:
> 
> 	flow = 0 & ~GMAC_RX_FLOW_CTRL_RFE;
> 
> which is still zero. So, I don't think this hunk is meaningful apart
> from adding the pr_debug().

It also should be noted that it looks like:

dwxgmac2_core.c::dwxgmac2_flow_ctrl() is definitely buggy - it will
only set flow control, never clearing it.

dwmac100_core.c::dwmac100_flow_ctrl() looks potentially buggy - always
enabling flow control irrespective of anything.

The other two implmentations look sane to me.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

  reply	other threads:[~2022-11-22 18:55 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-22  6:39 [PATCH net v2] net: stmmac: Set MAC's flow control register to reflect current settings Goh, Wei Sheng
2022-11-22  6:39 ` Goh, Wei Sheng
2022-11-22 18:11 ` Andrew Lunn
2022-11-22 18:11   ` Andrew Lunn
2022-11-22 18:40 ` Russell King (Oracle)
2022-11-22 18:40   ` Russell King (Oracle)
2022-11-22 18:54   ` Russell King (Oracle) [this message]
2022-11-22 18:54     ` Russell King (Oracle)

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=Y30ayCTyVpjjyEzh@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=alexandre.torgue@st.com \
    --cc=boon.leong.ong@intel.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hong.aun.looi@intel.com \
    --cc=joabreu@synopsys.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=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=noor.azura.ahmad.tarmizi@intel.com \
    --cc=pabeni@redhat.com \
    --cc=peppe.cavallaro@st.com \
    --cc=tee.min.tan@intel.com \
    --cc=wei.sheng.goh@intel.com \
    --cc=weifeng.voon@intel.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 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.