diff mbox series

[stable,4.14,v3] net: dsa: bcm_sf2: force pause link settings

Message ID 20220708001405.1743251-2-f.fainelli@gmail.com (mailing list archive)
State Not Applicable
Delegated to: Netdev Maintainers
Headers show
Series [stable,4.14,v3] net: dsa: bcm_sf2: force pause link settings | expand

Checks

Context Check Description
netdev/tree_selection success Guessing tree name failed - patch did not apply

Commit Message

Florian Fainelli July 8, 2022, 12:14 a.m. UTC
From: Doug Berger <opendmb@gmail.com>

commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream

The pause settings reported by the PHY should also be applied to the
GMII port status override otherwise the switch will not generate pause
frames towards the link partner despite the advertisement saying
otherwise.

Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
Signed-off-by: Doug Berger <opendmb@gmail.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
Changes in v3:

- gate the flow control enabling to links that are auto-negotiated and
  in full duplex

Changes in v2:

- use both local and remote advertisement to determine when to apply
  flow control settings

 drivers/net/dsa/bcm_sf2.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

Comments

Greg KH July 12, 2022, 7:18 p.m. UTC | #1
On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
> From: Doug Berger <opendmb@gmail.com>
> 
> commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
> 
> The pause settings reported by the PHY should also be applied to the
> GMII port status override otherwise the switch will not generate pause
> frames towards the link partner despite the advertisement saying
> otherwise.
> 
> Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
> Signed-off-by: Doug Berger <opendmb@gmail.com>
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> Changes in v3:
> 
> - gate the flow control enabling to links that are auto-negotiated and
>   in full duplex
> 

Are these versions better / ok now?

thanks,

greg k-h
Florian Fainelli July 12, 2022, 7:30 p.m. UTC | #2
On 7/12/22 12:18, Greg Kroah-Hartman wrote:
> On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
>> From: Doug Berger <opendmb@gmail.com>
>>
>> commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
>>
>> The pause settings reported by the PHY should also be applied to the
>> GMII port status override otherwise the switch will not generate pause
>> frames towards the link partner despite the advertisement saying
>> otherwise.
>>
>> Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
>> Signed-off-by: Doug Berger <opendmb@gmail.com>
>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
>> Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
>> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
>> ---
>> Changes in v3:
>>
>> - gate the flow control enabling to links that are auto-negotiated and
>>    in full duplex
>>
> 
> Are these versions better / ok now?

Vladimir "soft" acked it when posting the v3 to v2 incremental diff here:

https://lore.kernel.org/stable/20220707221537.atc4b2k7fifhvaej@skbuf/

so yes, these are good now. Thanks and sorry for the noise.
Vladimir Oltean July 12, 2022, 10:07 p.m. UTC | #3
On Tue, Jul 12, 2022 at 12:30:00PM -0700, Florian Fainelli wrote:
> On 7/12/22 12:18, Greg Kroah-Hartman wrote:
> > On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
> > > From: Doug Berger <opendmb@gmail.com>
> > > 
> > > commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
> > > 
> > > The pause settings reported by the PHY should also be applied to the
> > > GMII port status override otherwise the switch will not generate pause
> > > frames towards the link partner despite the advertisement saying
> > > otherwise.
> > > 
> > > Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
> > > Signed-off-by: Doug Berger <opendmb@gmail.com>
> > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> > > Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
> > > Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> > > ---
> > > Changes in v3:
> > > 
> > > - gate the flow control enabling to links that are auto-negotiated and
> > >    in full duplex
> > > 
> > 
> > Are these versions better / ok now?
> 
> Vladimir "soft" acked it when posting the v3 to v2 incremental diff here:
> 
> https://lore.kernel.org/stable/20220707221537.atc4b2k7fifhvaej@skbuf/
> 
> so yes, these are good now. Thanks and sorry for the noise.
> -- 
> Florian

Sorry, I tend not to leave review tags on backported patches. I should
have left a message stating that I looked at these patches and they look ok.
Greg KH July 15, 2022, 2:37 p.m. UTC | #4
On Wed, Jul 13, 2022 at 01:07:28AM +0300, Vladimir Oltean wrote:
> On Tue, Jul 12, 2022 at 12:30:00PM -0700, Florian Fainelli wrote:
> > On 7/12/22 12:18, Greg Kroah-Hartman wrote:
> > > On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
> > > > From: Doug Berger <opendmb@gmail.com>
> > > > 
> > > > commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
> > > > 
> > > > The pause settings reported by the PHY should also be applied to the
> > > > GMII port status override otherwise the switch will not generate pause
> > > > frames towards the link partner despite the advertisement saying
> > > > otherwise.
> > > > 
> > > > Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
> > > > Signed-off-by: Doug Berger <opendmb@gmail.com>
> > > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> > > > Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
> > > > Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> > > > ---
> > > > Changes in v3:
> > > > 
> > > > - gate the flow control enabling to links that are auto-negotiated and
> > > >    in full duplex
> > > > 
> > > 
> > > Are these versions better / ok now?
> > 
> > Vladimir "soft" acked it when posting the v3 to v2 incremental diff here:
> > 
> > https://lore.kernel.org/stable/20220707221537.atc4b2k7fifhvaej@skbuf/
> > 
> > so yes, these are good now. Thanks and sorry for the noise.
> > -- 
> > Florian
> 
> Sorry, I tend not to leave review tags on backported patches. I should
> have left a message stating that I looked at these patches and they look ok.

Thanks, both now queued up.

greg k-h
diff mbox series

Patch

diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
index 11a72c4cbb92..2279e5e2deee 100644
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
@@ -625,7 +625,9 @@  static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port,
 	struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
 	struct ethtool_eee *p = &priv->port_sts[port].eee;
 	u32 id_mode_dis = 0, port_mode;
+	u16 lcl_adv = 0, rmt_adv = 0;
 	const char *str = NULL;
+	u8 flowctrl = 0;
 	u32 reg, offset;
 
 	if (priv->type == BCM7445_DEVICE_ID)
@@ -697,10 +699,27 @@  static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port,
 		break;
 	}
 
+	if (phydev->duplex == DUPLEX_FULL &&
+	    phydev->autoneg == AUTONEG_ENABLE) {
+		if (phydev->pause)
+			rmt_adv = LPA_PAUSE_CAP;
+		if (phydev->asym_pause)
+			rmt_adv |= LPA_PAUSE_ASYM;
+		if (phydev->advertising & ADVERTISED_Pause)
+			lcl_adv = ADVERTISE_PAUSE_CAP;
+		if (phydev->advertising & ADVERTISED_Asym_Pause)
+			lcl_adv |= ADVERTISE_PAUSE_ASYM;
+		flowctrl = mii_resolve_flowctrl_fdx(lcl_adv, rmt_adv);
+	}
+
 	if (phydev->link)
 		reg |= LINK_STS;
 	if (phydev->duplex == DUPLEX_FULL)
 		reg |= DUPLX_MODE;
+	if (flowctrl & FLOW_CTRL_TX)
+		reg |= TXFLOW_CNTL;
+	if (flowctrl & FLOW_CTRL_RX)
+		reg |= RXFLOW_CNTL;
 
 	core_writel(priv, reg, offset);